Building Connected Systems: The .NET Framework and the Microsoft Enterprise Application Development Platform
Summary: See the core components of the platform, including the support for core standards and service-orientation, and how they interoperate with elements from different software vendors. (31 printed pages)
The Microsoft Enterprise Application Development Platform
The .NET Framework: Common Language Runtime and the .NET Framework Class Libraries
Road to the Future: .NET Framework 2.0 and Visual Studio 2005
The Enterprise Development Strategy Series of briefing papers from Microsoft are designed to deliver overview and technical information of Microsoft application development technologies to developers, architects and IT management. The papers in this series describe strategic goals Microsoft is addressing and summary technical information on these technologies and how they address the needs of the enterprise.
Feedback is important to us. If you have comments on the series, please e-mail that information with a subject line of "Feedback" to email@example.com.
Information technology and its effective use to address changing business requirements is central to an organization's ability to compete. With the advent of new technologies and the use of the Internet to achieve tighter integration between an organization and its customers and business partners, the potential of IT has only grown. Successful organizations will be able to realize that potential by building a new generation of connected systems. Connected systems are applications that leverage the network to link the actors and systems that drive business processes. Connected systems pull together a constellation of services and devices, to more effectively meet modern-day business challenges. Building connected systems requires not only a comprehensive enterprise software platform, but also a new service-oriented architectural approach to address the integration imperative. An enterprise software application platform suitable for building connected systems is much more than a traditional application server, and includes such elements as:
- Client and server operating systems
- Application services such as transactions, messaging, Web application support, and security infrastructure
- A development technology and application runtime
- Development tools
- Business process orchestration
- Pluggable backend servers providing packaged functionality such as database and portal services
- An applications management environment
- Enterprise design patterns and practices
Most organizations utilize products from multiple vendors for these elements of their enterprise software development platform, and hence require that all elements be able to interoperate and integrate with elements supplied by different vendors. This paper describes the comprehensive Microsoft enterprise application development platform for building connected systems. It describes the core components of this platform, including the support for core standards and service-orientation that allow each element to interoperate with elements provided by different software vendors.
Application Platform Requirements, Connected Systems and Service Orientation
The Microsoft comprehensive enterprise application development platform for building connected systems is focused on meeting the following core customer requirements:
- Interoperability and integration
The Microsoft connected systems strategy centers on the .NET Framework development technologies as the common development framework spanning clients and servers, with a focus on Web services and industry standards such as SOAP and Extensible Markup Language (XML) for interoperability with components and services provided by other vendors.
Before organizations can reap the benefits of reusing and enhancing their existing technologies, instead of simply upgrading existing systems or building new ones from scratch, they need to adopt modern development architectures centered on the notion of service-orientation. To the Microsoft Corporation, service orientation is a crucial prerequisite to creating connected systems. With the development of messaging standards based on Extensible Markup Language (XML), service orientation is quickly becoming the mainstream approach for building connected systems.
The inherent challenge in connecting diverse systems is the translation of platform-specific information and procedural programming models. In an ideal world, we would have the following:
- A standard syntax, in which information from all systems could be unambiguously expressed.
- Standard semantic models, so that organizations could express their business practices in a consistent language.
- Standard protocols, so that information could be passed across boundaries between operating environments and between organizations.
- A standard means for binding behavior to business documents.
Web Service standards such as SOAP, XML, XSD, WSDL, UDDI and WS-* specifications, such as WS-Security and WS-Policy, are the first constructs of this growing common language. Without the interoperability provided by a platform based on broadly supported standards, service orientation is an arcane practice requiring significant expertise in protocol design, and questionable return on investment. Without Web services that connect enterprise capabilities across heterogeneous platforms, service orientation is significantly less valuable to an organization.
By interacting via standards such as Web services, SOAP and XML, services spanning multiple platforms and implemented using development technologies from multiple vendors can easily be integrated into comprehensive, connected applications. SOA, as opposed to distributed object systems and/or process-oriented systems, is beneficial in enterprise applications because:
- Complexity is encapsulated. Any system has an inherent complexity the details of which are not important to the users of the system. Service-oriented architectures recognize this complexity, and provide a way to encapsulate it in order to hide it from the consumer of the service.
- More re-usability of services across the heterogonous platforms is possible. Platform integration problems are reduced when the functions are defined as services based on interoperable standards such as SOAP and XML. The services can be re-used by other components or services running on other platforms.
- Service-oriented architectures are less brittle. Typically, distributed object systems have been tightly coupled--upgrading one component of a distributed object system often requires changing other components, and causes interruption to ongoing application operations. Service-oriented applications can more readily designed for loose-coupling using technologies such as message queuing. This, along with the notion of contracts (typically defined in an XML schema) that separate implementation from interfaces for each service, allows individual services to be upgraded and versioned without requiring changes to other services or affecting ongoing operations of the applications that rely on these services.
- Developer roles are focused and decoupled. A service-oriented architecture allows applications to have many different layers. Developers who are working on the service layer must know transactions, reliability, and messaging, but the client developers only need to know their own programming language in order to connect to and utilize the service.
- Development efforts can be done in parallel. Having many application layers in a project means multiple teams can work on their own service component independently and in parallel after the architecture and design is complete. This solves many problems in enterprise-scale application development.
- The service definition supports multiple client types. Services and clients can be written in any language and deployed in any platform, as long as they can speak the standard languages and protocols that are used.
- More security can be included. By adding the additional service interface layer, it is possible to provide more security. For example, services can be deployed behind firewalls, and different services can be configured with differing levels of security as required, yet still be easily accessed by internal or external service-oriented components.
The Microsoft enterprise application development platform is a comprehensive platform for building connected systems based on the .NET Framework. The .NET Framework provides a cohesive and comprehensive development environment, as well as a core runtime that enables effective deployment, operations and management of enterprise applications. The .NET Framework and the Microsoft enterprise application development platform, however, were not designed for a homogeneous enterprise. Microsoft based its application platform strategy on the support for industry standards and the understanding that enterprises need the ability to integrate with existing infrastructure and applications, and may desire to select elements of their platform from other vendors but have them easily integrate with .NET-based applications and packaged products from Microsoft. .NET fully enables Web services, which are fundamentally designed around pluggable services that allow interoperability with other systems. This strategy not only allows companies to create robust, scalable and interoperable applications using current technologies, but positions users of the Microsoft enterprise application development platform to build service-oriented applications today while preserving their investments in existing platforms.
The core elements of the Microsoft enterprise application development platform are depicted below.
Figure 1. The Microsoft Enterprise Application Development Platform core layers
Figure 2. The Microsoft Enterprise Application Development Platform core technologies and products
As depicted in the diagram, the Microsoft platform is comprehensive and integrated, with a solution at every level of the technology stack designed to be programmable via the common .NET Framework and Microsoft Visual Studio development tool, and easily integrated via a service-oriented architecture. The platform supports all client types, inclusive of smart devices such as PDAs and smart phones, smart clients taking advantage of the processing power on desktop PCs, and thin browser-based clients based on HTML.
Below the client layer, the next layer of the platform includes business process orchestration services, provided by Microsoft BizTalk Server, that optionally allow organizations to use higher-level business process management tools to aggregate and orchestrate different backend services into complete business processes. BizTalk Server tools allow architects to flowchart such business processes using diagramming tools integrated directly into Visual Studio. The process flows are then compiled automatically into a workflow process that is executed and managed in one or more BizTalk servers.
Individual services and application logic are defined at the business service layer, and these represent discrete custom application logic developed using the .NET Framework. It is important to note, however, that because the Microsoft application platform and .NET are based on industry standards for Web services (SOAP and XML), clients and back-end services developed in alternative development technologies such as J2EE and running on heterogeneous platforms can be fully integrated into the Microsoft service-oriented architecture. In fact, the ease of such integration and the productivity provided by .NET provide one of the key advantages of the Microsoft application platform.
Beneath the service layer are pluggable back-end server products, provided as packaged applications as part of the Windows Server System. These back-end servers provide a range of functionality, such as database and transaction processing, portal services, host integration services, collaboration services and the like.
The .NET Framework and the Common Language Runtime (CLR) provide the common development technology and application runtime underlying the complete architecture. The .NET Framework and the CLR are integrated directly into the Windows Server 2003 operating system, as are application services such as Web application support, Enterprise Services such as transaction processing and message queuing, Web services, security, directory, data access and application management/monitoring services. Together, these integrated services combined with the highly productive .NET Framework provide comprehensive backend application server functionality without the need to buy (often) expensive and separate application server products, as is necessary with the use of J2EE. In short, Windows Server 2003 provides the development framework and all of the traditional services such as transactions, queuing, database connectivity, management tools and a managed execution environment as an integrated feature set without additional licensing costs.
Spanning all layers of the architecture is a common development environment for programming and integrating services using .NET: the Visual Studio development tool.
Basic Design Principles
When enterprises consider adopting an application development platform for creating their own applications and integrating with existing ones, there are several basic design principles, which they should look for the platform vendor to follow.
Interoperability and Integration with Application Services
A robust application platform will have a variety of application services that allow developers to create compelling applications. But developers shouldn't have to access each of the services with a different set of tools and with incompatible interfaces. Microsoft developers can use the .NET Framework to access all of the core application services provided by Windows Server 2003 through a common, well-defined interface. Moreover, developers can create new business services that can be exposed through industry standard interfaces (such as SOAP, UDDI and WS-I standards) that allow other enterprise applications using non-Microsoft platforms to interoperate seamlessly.
Enterprise systems continue to increase in complexity, especially as applications today must reach out and connect to customers and business partners in ways that were not even possible before the advent of the Internet. The .NET Framework reduces complexity and was designed to dramatically streamline the development process. Developer productivity can also be measured by the number of tools a developer has to master before they become proficient at developing applications for a platform. The Microsoft platform allows developers to use a single tool (Visual Studio) and a single development framework (.NET) to configure a database, develop orchestration for business processes, write service-oriented code, and deploy and test the application. Visual Studio also allows developers to configure and programmatically access server components and application services from non-Microsoft platforms through .NET Framework technologies such as Web services as well as support for industry standard protocols such as HTTP and TCP/IP. In short, developers and architects can use an integrated suite of tools to manage the lifecycle of- an enterprise application.
Given that most new enterprise systems will have some means for connecting to external systems and services, it's critical that an application development platform have the capability to secure an application across every layer. In addition, developers should be able to take advantage of the security services with a minimum of additional knowledge or effort. Perhaps more importantly, administrators and operators should be able to configure and manage an application's security settings (users, groups, code permissions) without requiring developer interaction. The Microsoft enterprise development platform provides Code Access Security that allows application security to be configured at both a very granular level (a single line of code) and a very high level (a business process) with a common set of security objects. Because security is integrated throughout the application stack, administrators and operators can manage permissions in one place and all the applications running on the Microsoft enterprise development platform can optionally use a common credential store—Active Directory utilizing role-based security. .NET applications can also interact securely with applications on other platforms using security standards such as X.509 certificates, Kerberos, PKI, and WS-Security. In all cases, .NET provides an integrated security framework with comprehensive threat-analysis and written guidelines available through the Microsoft Developer Network (MSDN) that allow IT managers and developers to design and implement a security infrastructure that fits their needs.
For many enterprise applications, the cost of deploying and supporting the application will dwarf the initial development or acquisition costs. Much of these costs can be associated with the tools, technologies, processes and best practices for managing applications. Manageability includes not only the ability to use common tools to monitor, configure and troubleshoot applications but also the ease with which new or updated applications can be deployed. The Microsoft enterprise development platform supports common cross-platform standards to allow an enterprise to manage resources (database, security, network connections, etc.) across multiple applications developed and deployed using application services from different vendors. This allows an enterprise to select the best management tools from any vendor to manage its application services or have the option of purchasing third-party management tools. The Microsoft enterprise development platform allows organizations to realize a reduced TCO by including effective systems management as a core design principle.
Over the past several years, scalability considerations have focused on an application server's capability to serve increasingly demanding workloads and user loads. As the industry moves toward service orientation, the determining factor in the viability of an application platform will be its ability to deliver consistent application performance from the Business Process and Business Services layers. And these clients won't be just Web pages, but Windows applications, WAP and smart phones, smart devices, and even applications running on other platforms in other companies. To help businesses accomplish these goals, the Microsoft enterprise platform is able to scale up—running on 32-bit and 64-bit symmetric multiprocessor (SMP) computers with up to 64 processors—and to scale out (application clustering software enables .NET applications to be deployed across multiple computers for scalability and failover purposes).
In the remaining sections of this white paper, we'll examine each of the core elements of the Microsoft enterprise application development platform in more detail.
Microsoft .NET development technologies that are integrated directly into Windows Server and Windows desktop operating systems include two core components: the Common Language Runtime (CLR) which is the managed execution environment for .NET applications, and the .NET Framework Class Libraries which provide a unified development API for a rich set of application services such as data access, security, Web-based protocols, user interface, transactions and the like. The Microsoft .NET Framework and its CLR were designed from the ground-up to enable developers to easily create applications with scalability and security that not only work well with other .NET services and applications, but leverage existing investments in other technologies as well. .NET works with non-Microsoft technologies through its built-in support for creating and consuming Web services based on SOAP and XML, and it works with existing Microsoft technologies by providing a layer to interoperate with COM components written using previous Microsoft development technologies. These features help preserve investments in prior technologies and ensure interoperability with other platforms.
The Common Language Runtime
The CLR is a managed execution environment that can host applications written in many different programming languages. Microsoft provides C#, Visual Basic .NET, C++ .NET and J# (Java syntax) tools and compilers as part of Visual Studio. Third parties such as Borland and Fujitsu and others today provide tools and compilers for over 30 other .NET languages including COBOL, Pascal (Delphi), PERL and many others. The CLR manages memory, thread execution, code execution, code safety verification, compilation, and other system services. These features are intrinsic to the managed code that runs on the common language runtime, and no matter what language is used to program an individual component or service, it is compiled into the same executable .NET intermediate language (IL), shares a common .NET type system, and is fully reusable by .NET services and components written in other languages (including binary interoperability as well as cross-language inheritance between objects written in different languages).
With regards to security, managed components are awarded varying degrees of trust, depending on a number of factors that include their origin (such as the Internet, enterprise network, or local computer). This means that a managed component might or might not be able to perform file-access operations, registry-access operations, or other sensitive functions, even if it is being used in the same active application.
The runtime enforces code access security in conjunction with the deployment of configured security policies for different classes of applications and services. For example, users can trust that an executable embedded in a Web page can play an animation on screen or sing a song, but cannot access their personal data, file system, or network. The security features of the runtime thus enable legitimate Internet-deployed software to be exceptionally feature-rich.
The runtime also enforces code robustness by implementing a strict type-and-code-verification infrastructure called the common type system (CTS). The various Microsoft and third-party language compilers generate managed code that conforms to the CTS. This means that managed code can consume other managed types and instances, while strictly enforcing type fidelity and type safety.
In addition, the managed environment of the runtime eliminates many common software issues. For example, the runtime automatically handles memory management as well as object layout and object references, releasing them when they are no longer being used. Developers no longer need to track individual objects via pointers, as was the case with C++. Automatic memory management and the elimination of pointers resolve the two most common application errors: memory leaks and invalid memory references.
The runtime also accelerates developer productivity. The .NET framework eliminates the need to program low level infrastructure, since developers simply reuse the framework classes themselves which provide for fundamental services such as data access, security, transactions and the like. Also, programmers can write applications in their development language of choice, yet take full advantage of the runtime, the class library, and components written in other languages by other developers. Any compiler vendor who chooses to target the runtime can do so. Language compilers that target the .NET Framework make the features of the .NET Framework available to existing code written in that language, greatly easing the migration process for existing applications.
The runtime is designed to enhance performance. Although the common language runtime provides many standard runtime services, managed code is never interpreted. A feature called just-in-time (JIT) compilation enables all managed code to run in the native machine language of the system on which it is executing. Meanwhile, the memory manager removes the possibilities of fragmented memory and increases memory locality-of-reference to further increase performance.
Finally, the runtime can be hosted by high-performance, server-side applications, such as Microsoft SQL Server and Internet Information Services (IIS). This infrastructure enables you to use managed code to write your business logic, while still enjoying the superior performance of the industry's best enterprise servers that support runtime hosting.
The .NET Framework Class Libraries
The .NET Framework class library is a collection of reusable services that tightly integrate with the common language runtime. The class library is object-oriented, providing types from which your own managed code can derive functionality. This not only makes the .NET Framework types easy to use, but also reduces the time associated with learning new features of the .NET Framework. In addition, third-party components can integrate seamlessly with classes in the .NET Framework, and the .NET Framework can be extended by ISVs and corporations with custom-developed functionality. For example, the .NET Framework Windows Form Controls implements a set of interfaces that developers can use to develop their own Windows Form Controls. These controls will blend seamlessly with the controls already supplied in the .NET Framework.
As one would expect from an object-oriented class library, the .NET Framework types enable developers to accomplish a range of common programming tasks, including tasks such as string management, data collection, database connectivity, and file access. In addition to these common tasks, the class library includes types that support a variety of specialized development scenarios. For example, you can use the .NET Framework to develop the following types of applications and services:
- Console applications
- Windows GUI applications (Windows Forms)
- ASP.NET Web applications
- Web services based on the SOAP industry standard
- Windows services
While the .NET Framework and CLR are integrated into Windows Server 2003 and Windows XP (SP1); developers can also download and install the latest .NET Framework runtime and SDK from the Microsoft site at no charge. Once installed, the .NET Framework includes everything that's necessary to create, compile, deploy and run applications. In fact, you can develop a Windows Forms or Web Application using Notepad or any other text editor! But the real power of the .NET Framework is exposed by a robust set of graphical development tools called Visual Studio.
Visual Studio provides the single unified development environment for all layers of the Microsoft enterprise development platform inclusive of devices, Web and Windows clients, business process orchestration, and backend services and applications. With intuitive visual designers, high-performance data access tools, server-side visual designers, native support for the Microsoft .NET Compact Framework, and integrated support for XML Web services, Visual Studio .NET delivers a highly productive development experience.
Visual Studio exposes the richness of the entire .NET Framework to developers and system designers. Developers can use the same tool to develop class libraries, Windows services, XML Web services, Web applications, smart-client applications or any other kind of application or component required. And since other .NET technologies like orchestration, portal services and database services also use or are integrated with the .NET Framework, you can use Visual Studio to develop components that utilize these technologies. One of the biggest benefits of this level of integration is the debugging support in the Microsoft enterprise development platform. Using Visual Studio, a developer can debug a complete system line by line including Web application code, business process components, data access components, Web services and even stored procedures in the database.
The platform on which future service-oriented applications will be built requires extensive support for current Internet standards and, more importantly, emerging XML Web services standards. Visual Studio is built from the ground up to enable integration through XML Web services. By allowing applications to share data using Internet standards and protocols, XML Web services enable developers to assemble applications from new and existing code, regardless of platform, programming language, or object model. The rich Web services support makes Visual Studio an excellent tool for integrating services and components written in other languages, such as J2EE.
For enterprise development, Microsoft provides additional functionality in the Enterprise Architect edition of Visual Studio .NET (VSEA). VSEA includes additional capabilities for designing, specifying, and communicating application architecture, development best practices, and application functionality. These capabilities include the ability to:
- Visually model applications, databases, and business processes. Clearly define application functionality and architecture for XML Web services and applications, and visually orchestrate business processes.
- Create sound architectural frameworks and best practices guidelines. Increase application development efficiency through starting application frameworks, sharing best practices guidelines, and simplifying development and management of complex applications.
- Build on a scalable and dependable platform for distributed applications. Create applications with security, reliability, and high performance using the Visual Studio .NET integrated development environment (IDE) and the Windows Server 2003 programming model.
According to Gartner, an application server is "system software that resides between the operating system on one side, the external resources—such as DBMS, communications and Internet services—on the other side, and the users' application on the third side." In addition, modern application servers include both "MOM (message oriented middleware [sic]) and limited remote database access middleware." The application services layer of the Microsoft enterprise development platform includes all of these capabilities in an integrated set of services based on the .NET Framework.
Web application services are provided by ASP.NET. ASP.NET exposes a set of rich classes to provide complete functionality for creating, deploying and managing dynamic, Web-based applications. ASP.NET directly integrates with the high-performance Microsoft Web server—Internet Information Server. ASP.NET combines unprecedented developer productivity with performance, reliability, and deployment features. Developers can be more productive with ASP.NET because its re-usable server controls enable an HTML-like style of declarative programming that let you build great pages with less code than other tools. Furthermore, displaying data, validating user input, uploading files and other common Web application tasks are much simpler to accomplish because ASP.NET has classes that natively support such functionality. The .NET Framework offers classes that encapsulate rich functionality like XML, data access, file upload, regular expressions, image generation, performance monitoring and logging, transactions, message queuing, SMTP mail, and many more. In fact, ASP.NET solves one of the most common enterprise development problems—multiple browser support—by providing native support for pages to work in all modern browsers including Netscape, Opera, AOL, and Internet Explorer. This browser support even extends to browser applications running on standard cellular telephones that can use WAP or MHTML to render pages. And since ASP.NET provides built in support for session state across Web farms, developers don't have to create their own state management solutions.
ASP.NET lets you serve more users on the same hardware because it dramatically increases performance and scalability. Performance is enhanced because ASP.NET dynamically compiles and caches Web applications. In addition, ASP.NET output caching and a rich cache API can dramatically improve the performance and scalability of Web applications. ASP.NET applications are more reliable because they can automatically detect and recover from errors like deadlocks and memory leaks to ensure your application is always available to your users. And since ASP.NET applications are based on the .NET Framework, the memory management, code security, type safety and other reliability benefits of the .NET Framework extend to ASP.NET applications automatically.
ASP.NET also dramatically lowers the cost of supporting and deploying Web applications. First, ASP.NET dramatically simplifies installation of your application. With ASP.NET, you can deploy an entire application as easily as an HTML page: just copy it to the server. There is no need to register server components using the Windows Registry, and configuration settings can be stored in a single XML file deployed with the application. Second, ASP.NET now lets you update compiled components without restarting the Web server. With ASP.NET, you simply copy the component over the existing component (called "XCOPY Deploy")--and ASP.NET will automatically detect the change and start using the new code without any interruption of uptime for the application. This is possible because .NET will automatically load the new component into memory and start using it for new requests at the same time continuing to service in-progress requests for the existing component until all such requests are completed. Even session state is preserved during such updates.
The application services layer of the platform provides extensive support for accessing data via the integrated ADO.NET data access technology. This support includes not only data coming from an enterprise database, but also from XML stores or from data warehouses. The .NET Framework also includes an extensive set of classes for creating and manipulating XML documents and streams. This includes support for standards such as XSLT, XSD and XPath. There are also classes that allow developers to manipulate XML documents using simple data access verbs while preserving the structure and content of the XML document. This extensive XML support allows an application or service to be both a creator and a consumer of complex XML documents as part of an overall enterprise architecture based on XML as a standard protocol. Support for XML is also built into the Visual Studio tools. This includes support for creating well-formed and valid XML documents in the editor and tools to create XML schema files and data sets that conform to them.
In addition to the rich XML support, the application services layer provides extensive support for relational data. Developers can use ADO.NET to access data from all major database systems such as Oracle, DB/2, Microsoft SQL Server and Sybase. While Microsoft provides ADO.NET drivers for Oracle, SQL Server and DB/2, both IBM and Oracle also provide their own .NET data providers and even tools that integrate within the Visual Studio development tool. The .NET Framework also provides common services like database connection pooling for all managed providers and transaction management for local and distributed transactions via its integrated Enterprise Services classes.
The application services layer of the Microsoft enterprise development platform natively support the ability to deliver enterprise scale applications by providing key services including transaction management and message queuing. .NET Enterprise Services provides both of these capabilities via the .NET Enterprise Service Classes. Some of the services available via .NET Enterprise Services include just-in-time (JIT) activation, synchronization, object pooling, message queuing and transactions. In all cases, the underlying infrastructure code is handled by COM+, so developers can focus on the business logic. And in all these cases, COM+ services are exposed to the developer via a set of .NET Framework classes.
The primary goal of any transaction management system is to ensure the consistency of data across different databases. It is not uncommon to need to update two different systems at once; for example, updating the order entry and inventory systems when a new order is placed. If the order entry system is a commercial package that uses Oracle and the inventory system is a custom application using SQL Server, you need a way to update both databases as a single transaction; failure to update one database should mean that changes to the other database are rolled back.
Transactions are managed using Distributed Transaction Coordinator (DTC), which is used by .NET Enterprise Services. .NET Enterprise services rely on COM+ transaction management services to coordinate transactions. .NET Enterprise Services offers automatic enrollment in transactions, including management of transactions spanning heterogeneous resources such as message queues and databases, or two different databases running on different machines (for example, a SQL Server database on Windows Server 2003 and an Oracle database running on UNIX). COM+ transactions can also operate over the XA protocol.
Enterprise applications have another major interoperability concern: messaging. It is often necessary or desirable to pass messages between disparate systems and create loosely coupled systems. In situations in which you want to provide messaging services across heterogeneous platforms or to systems that may only be occasionally available, you need an infrastructure in place that is easily integrated with technologies from other companies and easily accessible to the developers of your internal applications.
Microsoft Message Queuing (MSMQ) technology, built into the application services layer of the Microsoft enterprise development platform, enables applications to communicate via message passing. This offers the ability to easily integrate applications on disparate platforms, and also offers the advantage of "loose coupling" such that one subsystem or network may go offline, but the application/user interface continues to function for users. Messages created while the receiving subsystem is offline have guaranteed delivery via MSMQ, and will be processed once the receiving system becomes available again. Microsoft MSMQ provides features such as guaranteed message delivery, efficient routing, security, and priority-based messaging.
Microsoft also provides support for interoperability with other messaging systems provided by other vendors. For example, with the MSMQ-MQSeries Bridge, message queuing can be used to communicate with IBM WebSphere MQ systems. Sending applications can route messages to destination queues, referred to as foreign queues, in the foreign messaging system as if they were direct destination queues within the originating message queuing system.
Web services are a cornerstone of the Microsoft .Net technology and the overall Microsoft enterprise development platform. Support for standards-based Web services over SOAP and HTTP protocols have been inherent capabilities within the .NET Framework since its first release. Web services allow disparate systems to be bridged easily, no matter the platforms, development technologies or programming languages used within the bridged systems.
Web services allow developers to expose business logic and business objects directly over intranets and the Internet via XML. In this way, the business logic exposed can be directly invoked by other applications (for example, a business partner's application running across the Internet). With support for Web services across a wide range of application server products such as IBM WebSphere and BEA WebLogic, .NET and J2EE applications can be easily integrated. Microsoft, IBM and others have sponsored the creation of the Web services Interoperability Organization (WS-I). WS-I provides a forum for the common interpretation of the Web service standards, so technology customers can be confident that different vendors' products can fully interoperate via the Web services standards as specified by the W3C and OASIS standards bodies.
In addition, Microsoft and other vendors are working within the standards process to develop additional advanced Web Service protocols. These enhancements include specifications for additional Web Service security (WS-Security), cross-boundary Web Service transactions (WS-AtomicTransactions), and reliable messaging between Web services (WS-Messaging), among others. Microsoft provides support for draft specifications of these developing standards via the Web Services Enhancements for Microsoft .NET 2.0, available for free download. As these standards are formalized and specifications completed by the standards bodies, Microsoft is fully committed to supporting them as part of the integrated .NET Framework.
Without effective management tools and technologies, there is no ability to either monitor existing applications or effectively deploy new ones. The Microsoft enterprise development platform provides integrated management features and tools to deploy and manage production applications within the data center, as well as desktop resources located outside the data center. The cornerstone of the Microsoft applications management strategy is the Dynamic Systems Initiative (DSI). DSI is an industry effort led by Microsoft to enhance the Microsoft Windows platform and deliver a coordinated set of solutions that dramatically simplify and automate how businesses design, deploy, and operate distributed systems. Microsoft is investing heavily in software research and development and working with partners to deliver end-to-end offerings integrated across application development tools, operating systems, applications, hardware, and management tools that will result in reduced costs, improved reliability, and increased responsiveness throughout the entire IT life cycle.
Support for management and ongoing operations of .NET applications is accomplished via two mechanisms:
- DSI features and management APIs directly embedded within the .NET Framework and Windows Server 2003.
- DSI tools that provide management support of the data center.
Microsoft .NET and Windows Server 2003 Management Features
Microsoft .NET and Windows directly support consuming and emitting Windows Management Instrumentation (WMI) events and allow developers to easily integrate WMI support into their applications. WMI is a standard way to access monitor and manage Windows systems, allowing a standard access method to collect performance and operational information. It is an implementation of the Web Based Enterprise Management standard (WEBM).
Microsoft .NET applications can also take full advantage of system level monitoring tools like event logs and performance counters that enable IT Managers to monitor ongoing operations of .NET applications. The .NET Framework provides objects that wrap all of these system level resources, making it simple for developers to add code that allows their applications to be monitored and also develop sophisticated systems monitoring tools.
Microsoft .NET also allows dynamic application deployment and updating that can be as simple as copying new application code over the old application code. .NET manages the lifetime of currently created objects and the transition to new ones automatically, so that live updates can be easily rolled out across application clusters with no application downtime. .NET applications running on the server are fully process-isolated from other applications, and .NET provides features such as failover and automatic component restarts at the process level, application clustering for sub-second failover at the middle-tier physical machine level, and Microsoft Clustering Services for establishing failover and redundancy at the data tier level. Finally, .NET also includes functionality that makes it easy to automatically update client desktops with new or upgraded functionality with central deployment of smart-client applications from a central server location.
Other DSI features embedded directly within Windows Server 2003 include:
- Network load balancing features balance incoming IP traffic across nodes in a cluster.
- Windows Server clustering provides high availability and scalability for critical applications.
- Windows System Resource Manager enables the allocation of resources, including processor and memory resources, among multiple applications based on business priorities.
- Virtual Disk Service provides a vendor-independent API for identifying and configuring storage devices from multiple vendors in a unified way.
- Automated Deployment Services (ADS) provides rapid server provisioning capabilities and the ability to administer large numbers of Windows Servers from one central location.
- Integrated support for the .NET Framework and ASP.NET provides a fully managed and feature-rich application execution environment for Web-based applications and XML Web services.
- IIS 6.0 is a full-featured Web server with a new fault-tolerant process model that increases the reliability of Web sites and applications.
- Windows Management Instrumentation (WMI) tools provide administrators with unified and direct access to the management functions of local and remote systems.
- Software Update Services enable management of critical-patch releases from Microsoft to automatically deliver them to target computers in an organization from a single intranet.
The Microsoft enterprise application development environment provides a robust, integrated and extensible set of directory services based on Windows Active Directory. The directory services manage users, groups, resources and other system objects and also create and manage the permissions that govern their accessibility. The directory services are exposed to developers through a set of classes in the .NET Framework. This allows developers to easily create directory-aware applications, relieving them from the responsibility of creating their own independent user, group and permission management systems. Moreover, all of the technologies in the platform can use these same permissions to govern access to their resources, including applying role-based security. .NET also supports the Web services directory protocol UDDI.
By providing this level of integration, the platform provides a central management store for credentials and permissions that all applications and technologies can consume.
But the Microsoft enterprise development platform can also fully interoperate with other directory services, such as LDAP. There are several integration mechanisms built into the directory services: .NET applications can use common LDAP interfaces to directly integrate with LDAP services running on other platforms, and administrators can manage and synchronize directory information from multiple directory stores.
The Microsoft enterprise application development platform provides native security services to applications. Security within the platform extends to the code and the CLR managed execution environment, which provides application logic sandboxing. To help protect computer systems from malicious code and to provide a way to enable mobile code to run more safely, the .NET Framework provides a security mechanism called Code Access Security (CAS). CAS is a .NET security feature that applies to all .NET managed code including Web applications, Windows applications, components, and Web services. .NET administrators can assign a predefined set of permissions to an application. These permission sets vary based on the level of trust accorded to an application. By default, applications receive a level of trust dependent upon the evidence presented about the code's digital signature, origin, and the location of the application. This allows an administrator to control which code is allowed to execute and helps prevent hackers or malicious users from running unauthorized code or substituting a signed component that has appropriate permissions with one that doesn't have the appropriate permissions.
Assuming that the code has the appropriate permissions to execute, it can consume other resources using industry standard mechanisms such as SSL, Kerberos, and X.509 digital certificates. The .NET Framework also provides extensive mechanisms for integrating these standards with emerging Web services standards in a simple, object-oriented fashion that's integrated with the Visual Studio tools. For example, there are class libraries that allow a developer to build a SOAP header, require an SSL connection to pass it and then set the user ID and password necessary to authenticate with a remote resource using HTTP Basic authentication over the secure channel. As new standards emerge, the security system can be extended easily. Developers who want to create interoperable systems based on the latest WS-Security standards can download and install the Web services Enhancements (WSE) Toolkit to add these advanced Web services security standards to their services and applications.
Windows Server 2003 and Internet Information Server also provide tight security controls that automatically lock down Web applications from unauthorized access. ASP.NET integrates with these security features, and provides an automated authentication mechanism that prevents unauthenticated access to pages so designated within an application. Using a simple configuration file, the security mechanism can be configured to use Windows integrated security, or a database of registered users. Users attempting to access an authenticated page are automatically redirected to a designated logon page, and once authentication for a user session is complete, automatically redirected to the requested page—all without any programming required.
One of the most important aspects of the Microsoft security efforts is the campaign to educate developers and system administrators on security, and help them create and deploy applications by applying Microsoft-published design patterns and practices. Complete security guides and threat assessment models can be found on the Security Developer Center.
No application or application platform is an island. Even though many are still created with an internal focus, the reality is that connecting applications together has become the norm. Yet connecting software is about more than just exchanging bytes. As organizations move toward a service-oriented architecture (SOA), the real goal—creating business processes that unite separate applications into a coherent whole across application platform boundaries —comes within reach.
Microsoft BizTalk Server provides a development and execution environment for integrating disparate services and applications—including components running on different platforms—into automated business processes. BizTalk tools integrate directly within the Visual Studio IDE, and allow developers and system analysts to build flowcharts of business processes that span organizational boundaries, and then 'bind' these business processes to technical components (including Web services) that perform the various tasks within the business process. The resulting model is then compiled into an executable workflow that is hosted within the BizTalk server or BizTalk server cluster. BizTalk uses XML and messaging to integrate disparate services running on heterogeneous platforms, and includes connectors and XML schema mapping tools for enterprise application integration. Connectors for SAP, SOAP-based Web services and IBM WebSphere MQ are built in.
The orchestration services enable enterprises to connect diverse applications, and then to graphically create and modify business processes that use the services that those applications provide. The services provide a mechanism for specifying business rules, and facilities to manage and monitor the running business processes. These orchestration services also include support for information workers. These include a group of Business Activity Services (BAS), a Business Activity Monitoring (BAM) Framework for analyzing running business processes, support for business process provisioning and configuration, and services that enable information workers to set up and manage interactions with business partners.
Because of the increasing demand for integrated Web services support, the orchestration services have native support for communicating through Web services. In addition, the orchestration services have the ability to define Web services-based business processes by using the Business Process Execution Language for Web services (BPEL4WS, commonly called "BPEL"). And the orchestration services are built completely around the .NET Framework and Visual Studio.
Support for portal development is provided in a standard set of services based on the .NET Framework, Windows SharePoint Services, and Microsoft SharePoint Portal Server. Windows SharePoint Services is a Windows Server 2003 component that helps organizations increase individual and team productivity by enabling them to create Web sites for information sharing and document collaboration. Sites based on Windows SharePoint Services, called SharePoint sites, take file storage to a new level and help create communities for team collaboration. Users can collaborate on documents, tasks, and events and easily share contacts and other information. In addition, Windows SharePoint Services makes it easy for managers of teams and sites to manage site content and user activity. The environment is designed for flexible deployment, administration, and application development based on ASP.NET and the .NET Framework. Windows SharePoint Services is a free downloadable component available on the Microsoft Web site.
SharePoint Portal Server 2003 uses Windows SharePoint Services to create portal pages for people, information, and organizations. The portal also extends the capabilities of Microsoft Windows SharePoint Services sites with organization and management tools, and enables teams to publish information in their sites to the entire organization. SharePoint Portal Server 2003 enables enterprises to develop an intelligent portal that seamlessly connects users, teams, and knowledge so that people can take advantage of relevant information across business processes to help them work more efficiently. SharePoint Portal Server 2003 provides an enterprise business solution that integrates information from various systems into one solution through single sign-on and enterprise application integration capabilities, with flexible deployment options and management tools. The portal facilitates end-to-end collaboration by enabling aggregation, organization, and search capabilities for people, teams, and information. Users can find relevant information quickly through customization and personalization of portal content and layout, as well as by audience targeting. Organizations can target information, programs, and updates to audiences based on their organizational role, team membership, interest, security group, or any other membership criteria that can be defined. SharePoint Portal Server 2003 is programmable via the .NET Framework and Visual Studio to enable developers to create custom portal solutions that integrate with other enterprise applications.
An estimated 70 percent of all corporate data is stored on host systems, such as IBM mainframe and AS/400 computers. Yet, increasingly, organizations rely on personal computers together with Web-based and Windows-based applications for everyday productivity and line-of-business solutions. Companies have discovered that Web and Windows solutions often are easier to learn and quicker to implement than comparable host-based applications. To preserve their time and capital investments in host technology, organizations must either migrate all of their host-based resources to the Windows platforms, which can be expensive and time-consuming, or integrate their host-based resources with Windows-based and Web-based solutions.
The Microsoft enterprise application development platform supports the ability to integrate not only host data, but also to integrate directly at the transaction layer with host systems such as CICS environments. Using the Enterprise Services capabilities built into the application services layer, .NET applications can enlist other transactions from a host and can enforce the same transaction and database update integrity over them that a native host program (like CICS or IMS) could enforce over a mainframe transaction.
The host integration functionality is provided through Microsoft Host Integration Server (HIS). Host Integration Server 2004 features and technologies, including network integration, host access with enhanced security, and application integration, enable Windows developers to publish business processes in IBM mainframe and AS/400 applications as XML Web services, which helps to bring their Host applications and processes into a services oriented architecture.
Over the last few years, most new enterprise applications have been developed using Internet technologies. These decisions weren't based on the needs of the user, but because the organization recognized cost savings based on the inherent distribution and management advantages of Web applications. As long as the enterprise client has a browser installed, it can consume Web-based applications. But thin-client applications fail to take advantage of the processing power and storage provided (and paid for!) by the enterprise client. So as the limitations of a browser-based interface have become more obvious and the cost of deploying and supporting applications that can take advantage of local processors and storage begin to disappear, a new breed of client—a "smart client" has begun to re-emerge as an option for building productive applications that take full advantage of the desktop computer. The Microsoft enterprise application development platform provides extensive support for smart-client development and deployment. Smart-client applications can be divided into two general categories—Windows Forms Applications and custom .NET applications that integrate directly with Microsoft Office as the client.
Windows Forms Applications
The .NET Framework reduces the distribution costs normally associated with smart-client applications. Once installed on the enterprise desktop, the .NET Framework can automatically download, install, update and execute smart-client applications from a central server location. This feature is called 'no touch deployment'. Developers can use the .NET Windows Forms class libraries to create rich user interfaces. And the design tools built into Visual Studio allow for rapid application creation and testing of Windows Forms applications. The object oriented nature of the .NET Framework allows developers to create reusable Windows Forms assets that can serve as the basis for a standard enterprise smart-client framework, increasing the consistency and usability of enterprise smart-client applications. Windows Forms applications have a development model consistent with Web Form applications based on ASP.NET, and can use native Internet transport protocols such as http, as well as standards-based XML data models to communicate with backend servers. Windows Forms applications, like ASP.NET Web Forms applications can be easily integrated with backend Web services developed in either Microsoft .NET or other development frameworks such as J2EE.
Office Applications Using Managed Code
Microsoft Visual Studio Tools for the Microsoft Office System is a new technology that brings the power and productivity of Visual Studio .NET and the Microsoft .NET Framework to business solutions built on the current versions of Microsoft Word and Microsoft Excel. With this technology, developers using Visual Studio .NET 2003 can use Microsoft Visual Basic .NET and Microsoft Visual C# .NET to write code behind Microsoft Office Word- and Microsoft Office Excel-based applications. These tools also bring the power of Web services to Office 2003 solutions by enabling developers to discover and integrate Web services into their Office solutions by leveraging the support for XML Web services that's built into the .NET Framework.
Microsoft Office InfoPath 2003 is a new offering in the Microsoft Office system that supports the use of schematized forms as an interaction model with back-end services. InfoPath has proven itself particularly useful in structured collaboration scenarios, from human resource enrollment to contract negotiation. Another new Office component that provides access to information via Web services is the Microsoft Office Information Bridge Framework (IBF). IBF is an add-in to Visual Studio .NET that enables developers to build Web-services-based solutions that access enterprise business data such as sales numbers, inventory figures, customer information and more. This information can be viewed directly within the 2003 versions of Word, Excel and Outlook. IBF solutions enhance information worker productivity by enabling them to retrieve and act upon information without leaving the familiar Office applications.
There are over 100 million devices in use today, including phones, PDA's and specialty devices (like the Blackberry). As cellular networks continue to increase coverage and bandwidth, the number and sophistication of these devices will increase dramatically over the next five years. Only a small percentage of the current devices are smart devices. A "smart device" is a small form-factor, instant-on device with local processing power, local storage and the ability to create and distribute programs to it. The Microsoft enterprise development platform provides extensive support for smart devices, including full .NET programmability for a wide range of devices ranging from the PocketPC PDA to a variety of smart phones that have the .NET Compact Framework directly embedded. Support for core standards such as WAP and WM within ASP.NET also allow .NET-based server applications to directly support virtually any type of cell phone on the market.
Visual Studio provides a common development platform for building .NET applications for such devices, and includes Mobile Controls that provide a visual development environment for building logic and user interface for such devices. This support includes not only editing and debugging support but also database management, Web services and XML support. Because the smart-device support is based on a scaled down version of the .NET Framework called the .NET Compact Framework, developers can easily transfer their .NET development skills to begin creating smart-device applications. Since the .NET Compact Framework is able to consume Web services, enterprises can also create smart-device applications that can interoperate with backend Web services programmed in other environment such as J2EE.
In addition to DSI management features embedded directly within Windows Server 2003 and the .NET Framework, Microsoft provides core enabling products centered on managing enterprise software environments. These products, also part of DSI, include Microsoft Operations Manager (MOM) and Microsoft Systems Management Server (SMS).
Microsoft Operations Manager
MOM 2005 helps provide the knowledge to avoid the avoidable–reducing the complexity associated with managing today's IT infrastructure environment and lowering the cost of operations. MOM 2005 provides manageability as part of the design and implementation of Windows Server System technologies. By delivering operational knowledge and subject expertise directly from the application developers, MOM 2005 helps simplify identification of issues, streamlines the process for determining the root cause of the problem, and facilitates quick resolution to restore services and to prevent potential IT problems. Core features include comprehensive event monitoring and alert management for data centers. Administrators can set, monitor and capture system-level and performance monitor events within any node of their data center, and program automatic responses to handle these events. For example, an alert indicating a node in a cluster has exceeded its available memory or CPU capacity might trigger an alert that would automatically bring a new server into the cluster and/or automatically restart the existing server. Any system level event including all performance monitor counters can be tracked and managed from a central console and integrated into the event/alert system. Microsoft Operations Manager also provides extensive reporting and trend analysis for the data centers operating enterprise applications on the Windows Server 2003 platform.
Systems Management Server
SMS 2003 provides a comprehensive solution for change and configuration management for the Microsoft platform, enabling organizations to provide relevant software and updates to users quickly and cost-effectively. SMS 2003 provides the following key capabilities:
- Application deployment
- Asset management
- Security patch management
- Windows Management Services integration
- Integration of operations and technology
Microsoft is focused on delivering the guidance necessary to build enterprise applications via Microsoft Patterns & Practices. Extending the traditionally strong guidance for developers available from MSDN, the largest developer community in the world, Microsoft is offering architectural guidance in the form of technical events, books, white papers, reference applications and pattern libraries. The Microsoft Patterns & Practices portal is the access point for architectural guidance, from information design to solution architecture to the modeling of solutions for deployment into the enterprise datacenter.
Microsoft has also worked hard to develop independent communities that provide the mechanisms for users to support each other and for Microsoft to distribute the most up-to-date information and guidance on particular technologies. For example, communities like www.GotDotNet.com provide workspace functionality where Microsoft product managers, developers, testers and other technical employees can interface directly with corporate end users to discuss and support the guidance provided by the Patterns & Practices team. There are several .NET Framework-specific sites designed to foster interaction between and among product teams and their hardcore users. These include sites dedicated to Web development, Windows Forms development and smart-device development.
Microsoft also provides support for local resources. There are hundreds of local .NET Developer users groups around the country and the world (www.ineta.org). In addition, Microsoft provides newsgroups where developers and engineers can post questions about the technologies for fast, reliable support.
Finally, the Microsoft Partner Program is the largest in the industry, and consists of software vendors and system integrators trained and certified on using the .NET Framework and the Microsoft enterprise application development platform to build custom business solutions for any size organizations. Organizations including EDS, Accenture, and IBM Global Services and hundreds of others are available for custom engagements involving development using the .NET Framework
.NET Framework 2.0
The next major release of the .NET Framework is the .NET Framework version 2.0, slated for release in 2005 and currently in beta testing. The Microsoft .NET Framework 2.0 will bring new features and functionality to customers while providing a turnkey upgrade path which in most cases is simply a recompile and run. In addition, the .NET Framework 2.0 can be installed and used side-by-side with the .NET Framework 1.1 on the same machine without conflict, allowing organizations to upgrade easily at their own pace.
The .NET Framework 2.0 core infrastructure enhancements include:
- .NET Framework and CLR enhancements including 64-bit support
- New features for ASP.NET that will enable developers to reduce coding required by an estimated 40 percent to 60 percent with the addition of new pre-packaged and reusable server controls
- Enhanced caching features that enable developers to create middle tier object caches that are automatically refreshed when backend database content changes
- Enhancements and new productivity features for data access and XML manipulation with ADO.NET 2.0
- Many more enhancements
For more information, or to download the beta, see the .NET Framework Developer Center.
Visual Studio 2005
Visual Studio 2005 is set to release at the same time as .NET Framework 2.0, and will fully support the new .NET Framework 2.0 feature set. Visual Studio 2005 will also introduce new enterprise team development features with Visual Studio 2005 Team System. Microsoft Visual Studio 2005 Team System provides tools to support the entire software development team:
Architects: Visual Studio 2005 Team Architect Edition includes integrated and productive tools for visually constructing service-oriented solutions that are designed from the onset for their deployment environments. For more information, see Visual Studio 2005 Team System: Designing Distributed Systems for Deployment.
Developers: Visual Studio 2005 Team Developer Edition equips developers with advanced static analysis, code profiling, code coverage, and unit testing tools that enable teams to design for quality, early and often throughout the life cycle. For more information, see Visual Studio 2005 Team System: Building Robust and Reliable Software.
Testers: Visual Studio 2005 Team Test Edition builds on the developer offering to better equip testers with the tools they need to manage and run a wide assortment of tests, including unit tests, manual tests, Web tests and advanced load testing tools that enable teams to verify the performance of applications prior to deployment. For more information, see Visual Studio 2005 Team System: Enabling Better Software through Better Testing.
Project Managers: Visual Studio 2005 Team Foundation delivers a series of project management tools based on the software project managers already know: Microsoft Excel, Microsoft Project, and Windows SharePoint Services. With Microsoft Office integration, project managers no longer need to manually map data from these applications onto the data used by the engineering team. A project site provides a dashboard view of project status and drill-down capability to stakeholders. Rich reports open up the metrics collected throughout the natural workflow of the team. A customizable project process, based on industry-proven practices, drives the life cycle. For more information, see Visual Studio 2005 Team System: Software Project Management.
Team Development: Visual Studio 2005 Team Foundation also provides team collaboration tools that enable organizations to effortlessly manage and track the progress and health of software projects. The Portfolio Explorer integrates these same project work products found on the project site into the Visual Studio IDE for effective team access. Visual Studio 2005 Team Foundation also provides an extensible work item tracking system and enterprise-class source code control. For more information, see Visual Studio 2005 Team System: Enterprise-Class Source Control and Work Item Tracking.
For more information, visit the Visual Studio 2005 Developer Center.
With the advent of new technologies and the use of the Internet to achieve tighter integration between an organization and its customers and business partners, the potential of IT has only grown. Successful organizations will be able to realize that potential by building a new generation of connected systems. Connected systems are applications that leverage the network to link the actors and systems that drive business processes.
The Microsoft comprehensive enterprise application development platform for building connected systems is focused on meeting the following core customer requirements:
- Interoperability and integration
This paper has provided a high-level overview of the comprehensive Microsoft enterprise application development platform for building connected systems. In so doing, it has touched on core principles such as support for industry standards and service-orientation that allow each element of the Microsoft platform to interoperate with elements provided by different software vendors.
Microsoft .NET adoption is now exceeding J2EE adoption as the preferred development platform for large organizations. While the two technologies will continue to co-exist, in less than three years since its initial release, the .NET Framework has quickly gained critical mass according to several recent analyst reports. Forrester Research reports in their independent study that .NET is now preferred by 56% to 44% over J2EE in North American firms as their primary development platform. In a Gartner Research study, scientifically constructed based on random sampling of Central IT within large US-based corporations, Microsoft and .NET technologies also surpass J2EE usage for mission-critical applications. This study also shows that Windows Server is now the most widely used server operating system for hosting mission critical business applications. Finally, Gartner also reports in September 2004 that Microsoft leads in Web services vision and ability to execute, placing Microsoft .NET as the overall winner of its Web services Magic Quadrant analysis.
Forrester Research recently surveyed 878 IT decision-makers at North American enterprises. This research determined that Microsoft .NET has the edge when it comes to choosing a development platform. In interviewing these enterprise software decision-makers, Forrester found that 56 percent were using .NET as their development platform.
In 2004, Gartner surveyed workers at a number of large enterprises to determine the platform and development environments for their mission critical applications. This presentation shows their findings. (PDF Download).
Microsoft and IBM continue to lead the Web-services-enabled software market, with Microsoft being placed as the overall Web services leader according to Gartner in this latest research report.