December 2006 - Posts
I have been having really bad email problems for the last month. I finally have it sorted out, but will probably have some more interruptions in a few days. I apologize if you have received bounced emails from this domain over the last month.
Well, another year is drawing to a close. I has been an absolute blast this year and next year is going to be so much better.
Hope you all enjoy a little down-time. God bless.
This sounds fantastic. Great take on the Halo theme song from Corporeal. Via Stanley Tan.
I have been looking at Windows Workflow Foundation runtime services, specifically the ManualWorkflowSchedulerService for running workflows synchronously. In my research travels this morning, I came across this article on the odetocode site. At a quick read, it seems like Scott Allen has put together a fantastic article with just the right about of information, code and detail.
Given my impending fatherhood, there have to be changes and sacrifices. I have been instructing beginners and intermediates at Taekwondo for about a year and a half. Tonight was the last night for me as an instructor so I have to give up the cool "go faster" intermediate instructor's red dobok. Pity, I liked that one.

I have been building up a project that I need to add workflows to, only I didn't create the project as a workflow project. This means that when I go to add a new item, I get the standard options along with WPF file types and even an option for a WCF service, but no workflow options.
After using WinMerge to compare the project file with a workflow project file, these are the actions I took:
- Add references to System.Workflow.Runtime, System.Workflow.ComponentModel and System.Workflow.Activities.
- Open the project file in notepad and make the following changes
- Add the following to the first Project/ProjectGroup element (it should contain the assembly details) :
<ProjectTypeGuids>{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Given the name of the ProjectTypeGuids element, I am guessing that the guids should be the same for everyone, but you might have to compare the guids found in a new workflow project to you can create.
- Add the following after the CSharp.targets Import element under the Project element:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Windows Workflow Foundation\v3.0\Workflow.Targets" />
Snap Preview is a really cool add-on that you can use in your site. If you manage your own Community Server build, the easiest way to add this to your site is by adding the script to the Raw Header setting in the Administration -> Site Name & Description area of the control panel.
Just read this great article on securing your .Net code.
This is one of those things that I have often thought about, but has never seemed important enough to read up on. I had always wondered why I often saw three slashes at the beginning of a file Uri. Now I know.
I am getting some interesting results when messages are returned from a WCF service. Small responses come through fine. When the responses start to get large, I run into the QuotaExceededException exception. This is fine because you can increase the MaxReceivedMessageSize configuration value on the client endpoint. This starts to fail when the size of the data continues to increase and eventually I get the exception WebException: The underlying connection was closed: The connection was closed unexpectedly.
The service call is still being made (I can debug it), but it seems that the error is coming back quick enough that it is a problem with the server endpoint, rather than client endpoint or configuration on the client.
Anyone come across this before???
I have been looking at caching support and WCF recently. I have come across a few solutions. These are:
- Calling through HttpRuntime to get at the ASP.Net cache
- Using Enterprise Library Caching Block
- Rolling your own implementation, usually storing data in a Dictionary<String, Object> collection.
I have problems with 1 because that ties your WCF service down to an IIS and HTTP solution which is not good design. Option 3 is also not that great because typically this is built as a 'quick and dirty' solution that doesn't support any cache dependency or cache expiration policies. I haven't played with 2 yet, but it looks like that will be the go.
On a side note, I came across a code sample by Scott Mason (where's the blog Scott???) that uses an IOperationBehavior implementation to hook the operation call to provide caching support outside the actual implementation of the service operation. This is a great idea. The only thing I don't like about it is that operation behaviors can't be set via application configuration. They can only be assigned to an operation (WCF method) via a custom attribute on the method or via the behaviors collection at runtime. Pity, it would be so nice if you could plug in different behaviors via configuration.
This is another one of those memory (as in I want to keep some kind of reference to this post) type of posts. I had previous come across the Activator.CreateInstance and beyond post by Haibo Luo about the performance of Activator.CreateInstance, but had since forgotten about it. Now it's here to stay
.