WCF provides the framework to comprehensively manage and utilize the following 6 broad aspects of service orientation and development:
A WCF service promotes the separation of state and behavior. It’s important for two main reasons:
Services are supported by the framework by a set of classes primarily from the System.ServiceModel namespace.
Figure 1 – core service framework object model
Professional WCF Programming
Unlike some of the legacy platforms, the .Net platform is a more thought out and strategically planned development platform, incorporating lessons learned and avoiding mistakes of earlier platforms. It’s similar in concept to the Java platform in that both platforms rely on a virtual machines to accept intermediate language code compiled from diverse 3GL languages and to provide final execution environment. Target of our analysis here is the .Net platform, so, let’s focus on some key areas that a migrating development team should carefully consider.
Corporate objectives behind a migration should be explicitly identified and prioritized, because this will drive target platform choice, architecture and design decisions and mitigate among conflicting directives. Some examples of general objectives are:
Some of the building blocks of the .Net framework may be unfamiliar to development teams experienced in other platforms. A solid understanding of some of these key concepts is crucial before majority of the .Net development begins, otherwise another beginning could also simultaneously occur, the maintenance and support nightmare especially pertaining to memory leaks and sluggish performance. The single most fundamental concept of the .Net platform is the Common Language Runtime (CLR). It is the virtual machine, mentioned earlier, that forms the core of the platform. Some other key concepts are:
Easiest and the quickest solution may be to run the migration wizard and manually resolve any resulting errors and call it a migrated application. However, that’s also potentially the most expensive approach, mainly because coding intentions are not accounted for and what may be a widely accepted good practice in one platform may be blasphemy in the other. Depending on the specifics of the to and from application types and platforms, the entire end product may run against the grain and may raise nightmare support and maintenance scenarios until re-written. A common migration scenario is moving from classic VB smart client application to ASP.NET web application. Timely developer training is the high risk scenario here, because moving from a stated environment mindset to a stateless one requires a good training schedule and an elongated transient period to sync in. Your context and exact scenario will dictate the specificity of your migration steps, but, here’s a rundown of the general steps:
Every step of this potentially lengthy migration process, keep in mind the next migration for this very application and how it could be made more portable without sacrificing performance.
The primary motivation for migration is, as in most other cases, the bottom line. Over time it becomes progressively more expensive to maintain and enhance legacy software developed in house due to some of the following reasons:
Despite these and other reasons about 80% of production IT systems, according to developer.com, are running on legacy platforms. At the heart of the issue again is the bottom line, mainly because identifying the actual cost of maintaining legacy code has challenges and disagreements, some of which are discussed in a 2009 article published by ITBusinessEdge. Compare that to the highly visible and easily identifiable initial investment to migration projects and the management reluctance becomes obvious, until at least some TCO analysis is performed.
Once a decision has been made in favor of migration the first consideration should be the build versus buy analysis, each of which has many context specific pros and cons. Should a full or partial build approach be taken, the following preparatory steps must be considered to minimize the total cost of the Endeavour and maximize the probability of success:
Developers coding on a platform they are not trained on codes for the platform they were trained on
The old quote, “An ounce of prevention is worth a pound of cure”, is as applicable to migration projects as it is to any other aspect of software development. Prepare well and you’ll pay less, both in monetary and political terms. In the next article I’ll analyze some of the key considerations for migrating legacy codebase to the .Net platform.