Note that the information on this page is the BETA 1 of a guide that is now released. See
http://www.codeplex.com/AppArchGuide for the latest PDF and HTML content.
Chapter 2 – .NET Platform Overview
- J.D. Meier, Alex Homer, David Hill,
Prashant Bansode, Lonnie Wall, Rob Boucher Jr, Akshay Bogawat
- Understand the high-level features of the .NET Framework.
- Learn about specific technologies that make up the .NET Platform.
- Understand the development tools available for designing and creating .NET applications.
The Microsoft .NET Platform is composed of server applications, infrastructure components, runtime services used by .NET applications, and the .NET Framework. Although the .NET Framework is mentioned last, this chapter starts with an overview of the .NET Framework,
which an essential part of the .NET platform. The .NET Framework provides a virtual environment used to host .NET applications, a large library of classes, and runtime services used in the development, and execution, of .NET applications.
Following the overview of the .NET Framework, you will learn about different technologies that make up the .NET Platform. Rather than list everything alphabetically, technologies used in the development and execution of .NET applications are grouped by the
following application features:
- Data Access
- Mobile Applications
- Rich Client
- Rich Internet Application
The remainder of this chapter examines server applications, along with development tools and external libraries. The primary environment for developing .NET applications is Microsoft Visual Studio, which is organized into several different versions with some
versions targeted at specific groups involved in the full life cycle of application development. In addition to Visual Studio, Microsoft provides other development environments such as Expression Studio, and external libraries that are not included in the
At a high level, the .NET Framework is composed of a virtual runtime engine, a library of classes, and runtime services used in the development and execution of .NET applications. The .NET framework was initially released with a runtime engine and core set
of classes used to build applications. Subsequent releases extended and updated the core classes, and added new technologies such as the Windows Communication Foundation. The following diagram provides a high-level view of the .NET Framework:
The Base Class Library (BCL) provides a core set of classes that cover a large range of programming requirements in a number of areas, including user interface, data access, database connectivity, cryptography, Web application development, numeric algorithms,
and network communications.
Overlaying the Base Class Library (BCL) are core technologies for developing .NET applications. These technologies include class libraries and runtime services that are grouped by application features, such as rich client and data access. As the Microsoft .NET
platform evolves, new technologies are added on top of the core technologies, such as Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF).
Common Language Runtime (CLR)
The .NET Framework includes a virtual environment that manages the program's runtime requirements. This environment is called the Common Language Runtime (CLR), and provides the appearance of a virtual machine so that programmers need not consider the capabilities
of the specific CPU or other hardware that will execute the program. Applications that run within the CLR are referred to as managed applications, and most .NET applications are developed using managed code (code that will execute within the CLR).
The CLR also provides services such as security, memory management, and exception handling.
For Web applications, you use the ASP.NET functionality within the .NET Framework, hosted within Windows Server Internet Information Services (IIS). The .NET platform provides the following technology options for Web applications:
- ASP.NET Web Forms.** ASP.NET Web Forms are the standard UI design technology for .NET Web applications. An ASP.NET Web Forms application is installed only on the Web server; no components are required on the client computer.
- ASP.NET Web Forms with AJAX. Use AJAX with ASP.NET Web Forms to send requests to the server asynchronously and process the responses on the client. This improves responsiveness and reduces the number of post backs to the server. AJAX is an integral
component of ASP.NET starting with the .NET Framework version 3.5.
- ASP.NET Web Forms with Silverlight Controls. If you have an existing ASP.NET application, you can use Silverlight controls to improve the user experience without the requirement to write a new Silverlight application from scratch.
- ASP.NET MVC.** ASP.NET MVC allows you to use ASP.NET to easily build applications that implement the Model View Controller (MVC) design pattern. ASP.NET MVC supports test-driven development (TDD), and provides clear separation of concerns between
UI processing and UI rendering.
- ASP.NET Dynamic Data.** ASP.NET Dynamic Data allows you to create ASP.NET applications that leverage LINQ to SQL functionality. This functionality allows you to more easily model your database in your application, and query the database using LINQ
The .NET platform provides the following of technology options for data access:
- ADO.NET Core. ADO.NET provides features for the general retrieval, update, and management of data. It includes providers for SQL Server, OLE-DB, ODBC, SQL Server Mobile, and Oracle databases.
- ADO.NET Data Services Framework. The ADO.NET Data Services Framework exposes data using the Entity Data Model (EDM), through RESTful Web services accessed using HTTP. The data can be addressed directly via a URI. The Web service can be configured
to return the data as plain Atom and JSON formats in version 1, with other formats due in subsequent releases.
- SQL Server Data Services. SQL Server Data Services provides a hosted data service that supports open wire formats such as SOAP and REST. The data model encompasses the concepts of authority, container, and entity, and uses flexible schemas. Queries
are sent to the service using a URL-style request containing a LINQ query.
The .NET platform provides the following technology options for mobile applications:
- .NET Compact Framework. The .NET Compact Framework is a subset of the full .NET Framework designed specifically for mobile devices. Use this for mobile applications that must run on a device without guaranteed network connectivity.
- ASP.NET Mobile. ASP.NET Mobile is a subset of the ASP.NET controls plus additional functionality designed specifically for delivering content to mobile devices. ASP.NET Mobile applications can be hosted on a normal ASP.NET Web server. Use this approach
for mobile Web applications that can rely on a persistent network connection.
- Silverlight Mobile. Silverlight Mobile is a mobile-specific version of the Silverlight client. It requires the Silverlight plug-in to be available on the mobile device. Use this approach to port existing Silverlight applications to mobile devices,
or if you want to create a richer UI than possible with other options.
Windows-based applications are executed by the .NET Framework within Windows. The .NET platform provides the following technology options for rich client applications:
- Windows Forms. Windows Forms is the standard UI design technology for the .NET Framework. It is still a good choice for UI design if your team is familiar with Windows Forms and comfortable using the Visual Studio UI designer.
- Windows Forms with WPF User Controls. You can use this approach to take advantage of the more powerful UI features provided by WPF controls. You can add WPF controls to your existing Windows Forms application. However, remember that WPF controls
tend to work best on higher-powered client machines.
- Windows Presentation Foundation (WPF). WPF supports advanced graphics capabilities such as 2D and 3D graphics, display resolution independence, advanced document and typography support, animation with timelines, streaming audio and video, and vector-based
graphics. WPF uses Extensible Application Markup Language (XAML) to improve UI appearance and performance, support data binding, and define events. WPF applications can be deployed to the desktop, or displayed in a Web browser as an XAML Browser Application
- XAML Browser Application (XBAP) using WPF. The XBAP mechanism** hosts a sandboxed WPF application in Internet Explorer or Firefox on Windows. Unlike Silverlight, you can use the full WPF framework, but there are some limitations related to accessing
system resources from the partial-trust sandbox. XBAP requires Vista or both the .NET Framework version 3.0 and higher plus the XBAP browser plug-in. XBAP is a good choice for intranet-facing WPF applications due to the heavier footprint and the support for
Rich Internet Application
For a Rich Internet Application (RIA), you use the Silverlight functions of the .NET Framework, hosted within Windows Server Internet Information Services (IIS). The .NET platform provides the following technology options for RIAs:
- Silverlight. Silverlight is a browser-optimized subset of WPF that works cross-platform and cross-browser. Compared to XBAP, Silverlight is a smaller and faster installation, but does not support 3D graphics and text flow layout. Due to the small
footprint and cross-platform support, Silverlight is a good choice for Internet-facing WPF applications that do not require premium WPF graphics support.
The .NET platform provides the following technologies for creating service-based applications:
- Windows Communication Foundation (WCF). WCF is designed to offer a manageable approach to distributed computing, provide broad interoperability, and includes direct support for service orientation. It supports a range of protocols including HTTP,
TCP, MSMQ, and named pipes.
- ASP.NET Web services (ASMX). ASMX offers a simpler approach to distributed computing and interoperability, but supports only the HTTP protocol.
The .NET platform provides the following technology options for implementing workflows:
- Windows Workflow Foundation (WF). WF is a foundational technology that allows you to implement workflow. WF is a toolkit for professional developers and ISVs who want to build a sequential or state-machine based workflow. WF supports the following
types of workflow: Sequential, State-Machine, Data Driven, and Custom. You can create workflows using the Windows Workflow (WF) Designer in Visual Studio. WF is integrated with WCF in .NET version 3.5 to provide WCF-based services for workflow.
- Microsoft Office SharePoint Server (MOSS). MOSS is a server application that provides a platform for content management and collaboration. MOSS workflow is based on a version of Windows Workflow Foundation (WF). It is a solution for human workflow
and collaboration in the context of a SharePoint server. You can create basic workflows using administrative interfaces that are included in the SharePoint Central administration tool. To extend or customize the SharePoint workflow solutions, you can use Visual
Studio with WF. You can also customize workflow markup using either the Microsoft Office SharePoint Designer or the Windows Workflow Foundation (WF) Designer in Visual Studio.
- Biz Talk Server. BizTalk currently has its own workflow engine geared towards orchestration, such as enterprise integration with system-level workflows. You can define the overall design and flow of loosely coupled, long-running business processes
within applications, and between applications, using BizTalk Orchestration services.
Web Server – Internet Information Services (IIS)
The Microsoft platform includes Internet Information Services (IIS), which provides full-scale support for Internet publishing; including transport services, client applications, administrative tools, database and applications connectivity, and encrypted communication.
IIS supports the following services:
- World Wide Web Service. This service provides all the features required for hypertext document publishing, and delivering other types of content that use the HTTP protocol. It provides high performance, compression, extensive configurability, and
supports a range of security and authentication options.
- FTP Service File Transfer Protocol. This service allows you to receive and deliver files using the FTP protocol. However, authentication is limited to the Basic methods.
- Gopher Service. This service supports a distributed document search and retrieval network protocol. It is very rarely used today.
- Internet Database Connector. An integrated gateway and template scripting mechanism for the World Wide Web service to access ODBC databases. Generally superseded by new data access and scripting technologies such as ASP.NET and ASP.NET Data Services.
- Secure Sockets Layer (SSL) Client/Server. Provides a mechanism to support encrypted communication over the HTTP protocol, allowing clients and servers to communicate more securely than when sending content as plain text.
- Internet Service Manager Server. An administration console and associated tools that provide local and remote administration features for IIS.
- Integration with ASP.NET. IIS 7.0 and higher is specifically designed to integrate closely with ASP.NET to maximize performance and minimize server load when using ASP.NET to create and deliver content.
Database Server – SQL Server
A relational database is a common approach for storing and accessing data in an enterprise application. The .NET platform provides SQL Server as the database engine for your applications. SQL server is available in several variants; from a single instance,
local database (SQL Server Express) scaling to corporate data warehouse applications through SQL Server Enterprise Edition.
The data access technologies that are part of the .NET Framework allow you to access data in any version of SQL Server, so you do not need to modify your application if you want to scale up to a more powerful version.
Visual Studio Development Environment
The .NET platform provides a comprehensive development environment called Visual Studio Team System. You can use the language of your choice within Visual Studio Team System to write applications that target the .NET Framework. As an integrated development
environment (IDE), it provides all the tools you require to design, develop, debug, and deploy Windows, Web, Mobile, and Office-based solutions.
Visual Studio Team System is available in five versions:
- Architecture Edition. This version contains application, system, logical datacenter, and deployment designers; plus a settings and constraints editor.
- Database Edition. This version contains a series of tools, projects, schemas, and editors that allow you to create, modify, manipulate, validate, and compare databases.
- Development Edition. This version contains code analysis, profiling, and quality tools; including tools to check coding style and coding rules, quantify performance, and perform unit testing.
- Test Edition. This version contains a range of code quality tools; including code coverage, unit testing, Web testing, load testing, and generic tests.
- Team Suite. This version contains all of the features of the four versions listed above.
You can install multiple versions side-by-side to obtain the required combination of features.
Other Tools and Libraries
In addition to Visual Studio, other tools and frameworks are available to speed development, or to tackle specific types of applications. Examples are:
- Enterprise Library, which contains a series of application blocks that address cross cutting concerns. For more information, see
Enterprise Library at
- System Center, which provides a set of tools and environments for enterprise-level application monitoring, deployment, configuration, and management. For more information, see
Microsoft System Center at
- Expression Studio, which provides tools aimed at graphical designers for creating rich interfaces and animations. For more information, see
Microsoft Expression at
- Software Factories, which speed development of specific types of application such as Smart Clients, WPF applications, and Web Services. For more information, see
patterns & practices: by Application Type at
For more information about the .NET Framework, see the following resources:
For more information about Web Services, see the following resources:
For more information about workflow services, see the following resources: