Subscribe with RSS or ATOM Add to Google





Sunday, December 28, 2008

Good-bye Windows Workflow Foundation see you in 2011

I am saying good-bye to Windows Workflow Foundation for at least 2 years. After reading several blogs and articles about the new version of WF, I have decided the ROI of using it won’t be available for a few more years.

I find the investment in time to learn how to use 3.0/3.5 has been a complete waste time. So we have release 1.0 and 1.5 of WWF becoming obsolete in favor of version 2.0. These are the real release numbers on these libraries, and that is how they should have been labeled. They are not release 3.0 and 3.5.

I am not jumping on the happy happy joy joy bandwagon I have been reading about. That is- Isn’t it wonderful how big brother Microsoft is looking out for our best interest by listening to the complaints of its customers.

This takes us back to a time when you could not trust a first release of most things coming from Microsoft. This can be attributed to the complexity levels found in today’s software increasing with levels of abstraction, instead of decreasing. In order to make them decrease the software would have to be rock solid, not confusing and difficult to use. We are just throwing a new layer of confusion into the mix using these premature libraries.

I wrote this blog on the topic sometime ago. It appears we cannot blindly trust that releases from Microsoft will be around for more than 2-3 years without becoming obsolete or needing to be completely re-written.

I am having a tough time pin pointing the failure. I am leaning towards: the failure is due to a lack of industry knowledge, like when they released the Marketing Invented DNA Framework to sell the developer community a line of crap to get them to further invest in Microsoft development tools. WF has that ring to it. They are stepping into the implementation details that may be better off left to the architects developing the actual software for the given domain.

I understand that if what I am calling version 1.0 and 1.5 had never released, we would not have known what to put in the 2.0 (Microsoft’s 4.0) version of WF. The Microsoft Partner program should be better utilized for these ventures. Let them suffer a little for the big discounts they get, and stop making the development community at large suffer. That would of course mean sacrificing a few sales for the good of your customers.

How about some rebate checks for the books bought, time spent reading them, and the time spent learning the premature release of an overly complex framework that should have never been released??

I’ll be directing my team to drop Workflow from all architectures effective immediately, and to not bring it back into the mix of possibilities until the release that comes after the 4.0 release.


Blogs, Articles, Papers, and Videos mentioned above:
Windows Workflow Changes Direction
Windows Workflow Changes Direction: Write New Workflows with .NET 4.0 in Mind
PDC2008: Workflow Foundation 4
WF 4.0- the new runtime model
An introduction to Windows Communication Foundation 4.0, Windows Workflow Foundation 4.0 and Windows Server “Dublin” technologies
WF 4.0: Big Changes Ahead
WF 4.0- A First Look

Sunday, December 21, 2008

New Learning Resources for the Software and System Architect

There are a lot of new learning resources available for the Software and System Architect. I have gathered some of the best together below.

You can check these blogs out for my past lists, which include more papers than this one.
Software Architecture Links: ABC, QAWs, ADD, ATAM, CBAM, ARID, and Books
Documenting Software Architectures: 4+1, Views and Beyond, Viewpoints and Perspectives, and Book Links

New Published Books and Papers




patterns & practices Application Architecture Guide 2.0 (THE BOOK)



An overview of the patterns & practices App Arch Guide 2.0 project in PDF form.

The Rich Client Architecture Pocket Guide provides an overview and prescriptive guidance for designing rich client applications on the .NET platform.

The Web Architecture Pocket Guide provides an overview and prescriptive guidance for designing Web applications on the .NET platform.

The RIA Architecture Pocket Guide provides an overview and prescriptive guidance for designing RIA applications on the .NET platform.

The Service Architecture Pocket Guide provides an overview and prescriptive guidance for designing services on the .NET platform.

Original Visios for the larger diagrams in the Application Architecture Guide version 2.0. If you would like any of the others in the guide, please request them.

Presentations that were given at the SOAPL - 07 workshop.

The Method-Framework for Engineering System Architectures

Proceedings of the International Workshop on the Foundations of Service-Oriented Architecture (FSOA 2007)

Proceedings of the First Workshop on Service-Oriented Architectures and Product Lines

Models for Evaluating and Improving Architecture Competence



New Books soon to be available

Friday, December 19, 2008

Silverlight 2 DataGrid December 2008 Release

Microsoft has released an updated version of the Silverlight 2 DataGrid.

Overview (from MSDN site)

This version of the DataGrid contains the following improvements over the version that was released in the Silverlight 2 SDK:
--Almost 30 bugs have been fixed.
--Rows containing focus no longer disappear when the ItemsSource changes
--Selection is now preserved when sorting
--ComboBox and other controls opening a popup no longer end editing mode for the DataGrid
--Buttons outside the DataGrid work as expected when they are clicked while the DataGrid is in editing mode
--Improved FrozenColumn behavior.
--Improved cell currency.
--Selection is updated at the time when the CurrentCellChanged event is raised

Get it here

Thursday, December 18, 2008

Entity Framework 1.0 Error Unable to update the EntitySet XXXXXX because it has a DefiningQuery and no DeleteFunction element exists

Unable to update the EntitySet XXXX because it has a DefiningQuery and no <DeleteFunction> element exists in the <ModificationFunctionMapping> element to support the current operation" is one of the errors you will eventually run into with the ADO.NET Entity Framework 1.0.

This error is caused by the resulting SSDL that is generated when mapping a table with no primary key.  Adding a primary key causes an error with the association mapping, so that isn't a good option.  I saw some posts on modifying the generated SSDL, but did not want to mess with that every time I had to update the model.  There are different approaches to addressing the problem.  I have listed some of the links I referred to below. 

I am posting this because I didn't follow any of them.  I added an ADO.NET connection to my data access layer and simply went around the association maps found in the generated EDMX. 

I can do this because I am doing a proof of concept that includes EF, which means I am simply testing is value as a tool.  Right now EF is failing as a production worthy tool.  They have a lot to fix in the next release. 

Blogs and forums on the issue:
EF - Generate with No Table Key
MSDN Forum Post
CRUD operations in Siverlight using ADO.NET Data Service
Ado.Net Entity Framework Many to Many Relationships
DefiningQuery Element (EntityContainer SSDL)

Environmental Constraints, Business Requirements, and Implementation Details

Environmental constraints often play a big part in an application's architecture. Although we like to pretend the slate is wide open with possibilities for implementing users requests, it would be naïve to ignore the technical, political, and user environment constraints always present on any decent size project.

If you cannot communicate those constraints effectively you are doing the users a disservice. It is usually the harder road to take, which is not uncommon, doing the right thing always takes much more of an effort. The excuses to do the wrong thing we hear quite often are that "we do not say no to the user", or "the user is always right", or "it is a business requirement".

If I am not careful, the perception I often end up with of the architect, analyst, developer, or project manager that always gives into user requests that violate environmental constraints is that they are lazy, or just "Yes" men or women. Usual it is just plain old lack of experience.

To tell the difference between a Business Requirement and an Implementation Detail requires experience. Often times experience can only be gained through proof of concepts, especially in today's world of ever changing technologies.

A recent example was a request we had for ad-hoc reports to be implemented on an architecture we were putting together. The user requirements were completely lacking for the reports, so the conclusion the analyst team reached was they will deliver ad-hoc reports. They sold it to upper management as a business requirement. The technical solution would be easy to implement using SSRS Report Modeler and Report Builder.

The problem with what they sold was that the environment constraints they will be delivering into will make the mission practically impossible to deliver. An easy solution if you ignore your environment. I can stay in the water for days in 4 feet of water, that is a different story in 12 ft of water.

Political, security, and technical constraints will drag the initiative under. We warned them several times that they should not go down the ad-hoc reporting path, but to no avail. We told them just to do it the hard way and meet with the users and gather the business requirements for the reports. The answer was no, this is now a business requirement.

The one major downfall of the analyst team was they refused to accept that the reports were the business requirement, not the ad-hoc reports. Using the ad-hoc tools is an implementation detail, and an implementation detail should never be considered a business requirement.

The system I am referring to has one of the smallest sets of reporting business requirements I have come across in a very long time, and it will end up being one of the most complex and confusing implementations I have ever seen. How do I know? It is that experience thing I mentioned earlier. It is not that I am smarter than anyone else, it is just that I have seen it tried before and fail to happen in this environment several times.

Tuesday, December 16, 2008

Pro Silverlight 2 in C# 2008 Book Review

Matthew has hit the mark again!!! This is a great resource for any level of Silverlight experience. He starts out with an introduction that covers the Visual Studio Silverlight environment. The introduction really helps those who have no experience get rolling right away.

Matthew does a great job of covering every feature of Silverlight in great detail, but more importantly he covers every feature left out of Silverlight in detail. He covers the limitations and also how to get the most get the most out of what is there to make up the difference. His chapter on data binding does a great job of pushing the features that are included to there limit, which helps make up for the lack of ADO.NET and a lot of other missing binding features.

He covers every out of the box element in detail and includes a nice reference for where the element can be found in the book. He also covers styles and templates, brushes and transforms, shapes and geometries, animation, and layout containers.

The book also covers networking, multithreading, isolated storage, browser integration, media and deep zoom, wcf services, the application model, and dependency properties and routed events.

The book is very readable for those that like to read cover to cover, but it also makes a great reference.

The downloadable code is very usable and very complete. Below is a screenshot of the Elements chapter's sample code running.


Click here to see larger image.

All in all, if you are interested in Silverlight, this is a must have.

Thursday, December 04, 2008

Microsoft .NET Architecting Applications for the Enterprise Book Review

This book does a great job of putting architecture into a view that .NET developers and architects can relate to.

The book covers design principles and patterns, and then relates them to each layer of a traditional layered system.  It includes business, services, data access, and presentation layers.  The authors include several different patterns for each layer and discuss the pros and cons of each.

The book focuses on the technical aspects of .NET architecture.  It does not cover the soft skills need to be an architect, or cover the customer facing skills need to communicate with the business stakeholders.  You won't find much on process either, just an overview.  These missing topics have not taken away from the book, they have made it a stronger book.  There are plenty of resources on how to execute the soft skills and architecture process.  This book concentrates on how to communicate with the development team through solid design and well known patterns and principles.

This is a must read for all architects, no matter what your skill set is.

A .NET developer looking to move into architecture should make this book their first stop on a long journey.  This will definitely get you off to a very strong start.

This book will not leave my side...  until the 2nd edition...

Framework Design Guidelines (2nd Edition) Book Review

If you are doing .NET development, you must have this book by your side.  It is a great reference and it is very readable.  It is great to just flip through and pick out a topic or to read from start to finish.

The knowledge the notes included by industry leaders provide great insight into the 'why' of the decision to do what they did.  They also point out the mistakes made in the framework design that often lead to confusion when using the framework.

It stands as our coding standard on our team for framework development.  It gives our team a solid base of information to refer to, especially when arguing about religious issues and doing code reviews.

The CD includes classes (videos) that teach every chapter of the book.  It is like getting a complete college course for the price of a book.

If you don't have this on your shelf or in your backpack, do not bother interviewing for my team.