as the IIS Web server, SQL Server database, and the Windows operating system in all its various forms.
The first version of Visual Studio appeared ten years ago, but it has evolved far beyond that initial version. As with the NetBeans and Eclipse IDEs I discussed in earlier articles, Visual Studio is trying to keep up with the trends in development languages and architectures that keep appearing on the developer scene. This means a major upheaval every few years. The current version, Visual Studio 2005 will be replaced by Visual Studio 2007 later this year. Beta test versions of this next version are available now and many of the technologies which will be part of the 2007 version are available in early forms.
Microsoft is in the middle of a transition of the .NET framework from version 2.0 to 3.0 and there is also a major revision of the C# language to version 3.0 coming. All of this has to be coordinated with the new capabilities in the Vista operating system of course. In the fourth quarter of 2007 when Visual Studio 2007 arrives a major transition will have been accomplished.
Microsoft's new view of applications
Over the past few years, Microsoft has been evolving a new generation of Windows technology tools grouped in four divisions: Windows CardSpace, which handles identity; Windows Presentation Foundation, which covers, among other things, the new 3D user interfaces in Vista; Windows Workflow Foundation, which covers business processes; and Windows Communication Foundation, which covers communication between applications.
The Windows Communication Framework, or WCF, has been under development for years in a project previously codenamed Indigo. WCF is intended to support reliable and secure communication using industry standard SOAP and related XML standards within a single computer or across multiple networked computers. Interoperability with applications outside the .NET Framework is ensured by adherence to standards created by the Web Service Interoperability Organization (WS-I) such as WS-Addressing and WS-Security.
WCF is intended to support distributed applications that are not tightly coupled, but are dynamic and service-oriented. By sticking to existing standards such as SOAP, WSDL and schema, there should be maximum backwards compatibility with existing distributed applications.
Working with Visual Studio Professional
I installed a 90-day free trial Visual Studio 2005 Professional Edition from DVD rather than attempting the 2.6GB download. The only charge for the trial version DVD was for the shipping. Note that the full version retails for about $800 so looking before you buy is a good idea. Free "Express" versions of Visual Studio for particular languages and with reduced functionality are available.
The initial installation supports some development of Web service clients in Visual Basic, but to really exercise the capabilities of Visual Studio you can install many add-ons that build on the framework. Microsoft provides an extension for Visual Studio called Guidance Automation Extensions, which provides a mechanism for importing documentation, templates and automated processes for various programming domains. There is even a "Guidance Automation Toolkit," which other vendors can use to create add-ons for Visual Studio that are specific to their own products.
Patterns & practices and factories
Microsoft's team devoted to creating these add-ons is called "patterns & practices." This group puts together "software factory" guidance packages for a variety of technologies. I downloaded the recently released Web Client Software Factory and Web Service Software Factory guidance packages. The Web service package provided for two types of projects: the older ASP.NET Web services (ASMX) and the WCF style, which will ship with .NET framework 3.0 and Visual Studio 2007.
With these "software factories" installed, starting a new project in Visual Studio gives you the option of using one of the guidance packages templates. The Web service client guidance is oriented to the creation of Web sites using ASP (Active Server Pages) Web page scripting presentation technology and deriving data for presentation from a Web service. The emphasis is on business transaction processing.
Creating a WCF Web service
Starting a new Web service project using the WCF guidance templates creates skeleton code for what Visual Studio calls data contracts, fault contracts, service contracts and service implementation interfaces, plus skeleton code for business entities and business logic. A data contract describes exactly the data items that will be exchanged in messages and can be generated from an existing XML Schema, or from an existing data type defined in a C# class. For all of these components, the guidance package provides detailed suggestions for how to proceed by invoking various wizard dialogs.
In a similar way, fault contracts describe exactly how errors will be mapped to SOAP fault messages. Service contracts describe exactly the functions that a service will expose and the service implementation interface defines the functions required. Expanding the skeleton code and modifying the default settings of various attributes as provided by the templates is an order of magnitude time-saver for the programmer over generating the files by hand.
Visual Studio is undoubtedly the most sophisticated and flexible IDE available for applications running on Windows operating systems. The extent to which WCF can accomplish the goals of interoperating with Web services created with other tools remains to be seen.
Trial versions of Visual Studio 2005
General page for patterns and practices and most recent articles
Web Client Software Factory information and downloads
Web Service Software Factory information and downloads
Summary of the Windows Communication Foundation framework
Web Services Interoperability Organization Web Services Interoperability Organization