We had more fun with Windows Workflow Foundation (WF) 4 over the last few days - another silent death error.
Again, Maurice helped us out.
If you try to promote a DateTime property containing DateTime.MinValue (or any date before the year 1753), SqlWorkflowInstanceStore will fail silently. SQL Server doesn’t support earlier dates.
Once you know that the trace source name is “System.Activities.DurableInstancing” you can actually see these errors.
Boolean properties cannot be promoted in Windows Workflow Foundation (WF) 4. If you attempt to promote them, your workflow will appear to start but will not be properly persisted nor work properly. In effect, it will die silently. Client applications attempting to create workflows won’t see any errors. Only a few simple types are supported.
This took us about two man-days to debug. Apparently Microsoft couldn’t be bothered to map between Boolean and BIT, or to document this on MSDN, or to return an exception to the client…
Here’s the Microsoft link:
We’re still working through Seven Languages in Seven Weeks in our lunch-and-learn book club at work. In the Cedar Rapids .Net Users Group book club, we’re almost finished with Real-World Functional Programming with examples in F# and C#.
And I’m learning that I hate ceremony.
In my day job, I write mostly C#. I’m used to that - typing curly braces, ending lines with semicolons, declaring types - it’s automatic. A good IDE helps a lot.
More and more, I wonder why the compiler doesn’t do more of this. F# is also a strongly-typed .NET language, and it can infer most types.
I’m starting to appreciate the simplicity of the F#/Ruby way of doing things.
As a side note, why are Apple and Microsoft bringing back the Bad Old Days of memory management? I have no desire to code in Objective-C or C++. I don’t want to use COM. Even the Linux folks seem to have a love affair with C/C++. Give me memory management. Give me modern languages.
And give me less ceremony.
Red Gate has announced that it will charge $35 for version 7 of .NET Reflector. What’s more, the free version will stop working after May 30, 2011. And the $35 will not entitle you to a free upgrade to version 8.
This after they said “Red Gate will continue to offer the tool for free to the community.” Not “will try” but “will.”
I don’t have much choice. Reflector is a key tool for my work. Either my employer needs to purchase it or I do, and the cost is not a hardship.
This is a matter of principle. I’m fully in favor of capitalism and for-profit companies. They don’t “owe” us free software. But when a company flat-out lies to its customers, trust and loyalty go out the window.
I support individuals working on open-source alternatives, including donation-supported projects. I would consider competing commercial solutions; I have no problem paying reputable companies for my tools.
Don’t let them get away with this.
Update - February 4, 2011
The best coverage I have found so far is on ZDNet. It includes their side of the story.
Update - February 24, 2011
The current standards of the company I work for state that Developer Express controls will be used instead of Microsoft FCL controls on all deployed WinForms applications. This has caused some grief in the past. One tool vendor for GUI testing supported only FCL controls without expensive customization. New hires aren’t familiar with the controls. Since we develop in-house software, DevX version upgrades require GAC deployments of the redistributable assemblies. Our shared assemblies that depend on DevX must be kept in sync. The third-party controls do not appear to be tested as rigorously as the Microsoft controls. And common properties are sometimes difficult to find, buried under options properties.
The controls (the grids in particular) do have some nice features. But there are drawbacks.
Today I was trying to data-bind a collection of objects to a DevX grid. The objects had properties of an enumerated type. I wanted to display the value of the DescriptionAttribute for the enum columns. After asking around and searching, I posted the question on Stack Overflow and got a great response from Marc Gravell. It works beautifully with Microsoft’s DataGridView.
Unfortunately it does not work with the DevExpress.XtraGrid.GridControl. And Developer Express “are not going to implement this feature”. Why? Because it’s not as performant. The company offers an alternate solution, which involves setting two properties for every affected grid column. The original Microsoft solution could be applied with an attribute on the enum type or on the bound-class property.
I’m not advocating using only FCL controls. Just be aware of the trade-offs inherent in using third-party ones.
:: Next Page >>
Development Central is the blog of Bill Sorensen, a professional software developer. Much of this will relate to C#, .NET, and OOP in general.
These postings are provided "AS IS" with no warranties and confer no rights.
| Next >