Appendix A: The Microsoft Application Platform
For more details of the topics covered in this guide, see Contents of the Guide.
- Finding Information and Resources
- The .NET Framework
- Common Language Runtime (CLR)
- Data Access
- Mobile Applications
- Rich Client
- Rich Internet Application
- Web Applications
- Web Server — Internet Information Services (IIS)
- Database Server — SQL Server
- Visual Studio Development Environment
- Other Tools and Libraries
- Additional Resources
This appendix starts with a summary of the features of the Microsoft platform that will help you to find your way around the technologies if you are not familiar with building applications that target the .NET Framework and Microsoft server technologies. The next section, "Finding Information and Resources", will help you to find information more easily when visiting the many sites that make up Microsoft's vast Web presence.
Next are an overview of the .NET Framework and the Common Language Runtime (CLR), followed by a series of sections that discuss the range of Microsoft application platform technologies available for a range of application types, collaboration, integration, data access, and workflow. Then the chapter provides an overview of several product technologies such as SQL Server, IIS (Web server) and development tools such as Visual Studio, and external libraries.
The Microsoft application platform is composed of products, infrastructure components, run-time services, and the .NET Framework, as detailed in the following table.
Common Language Runtime (CLR)
Collaboration / Integration / Workflow
Windows Workflow Foundation (WF)
Microsoft Office SharePoint Server (MOSS)
Microsoft BizTalk Server
ADO.NET Data Services Framework
ADO.NET Entity Framework
ADO.NET Sync Services
Language Integrated Query (LINQ)
Microsoft SQL Server
Microsoft Visual Studio
Microsoft Expression® Studio design software
.NET Compact Framework
Windows Presentation Foundation (WPF)
Rich Internet Application (RIA)
ASP.NET Web Services (ASMX)
Windows Communication Foundation (WCF)
Internet Information Services (IIS)
Finding Information and Resources
This guide provides a road map for architecture, and describes the best practices you should consider when designing applications for the .NET Framework and Microsoft application platform. While the guide contains a wealth of information, including step-by-step topics for many of the most common scenarios, it cannot provide full details of every conceivable topic. However, Microsoft maintains a library of wide ranging yet deep guidance on all of its technologies, products, and services as described in the following section.
How Microsoft Organizes Technical Information on the Web
If you are just starting out trying to navigate Microsoft's rather large collection of technical documentation, there are a few things that you need to know, which will help to find what you are looking for more quickly.
First, Microsoft has several large Web sites, each with a different function. First Microsoft's corporate Web site (https://www.microsoft.com) contains all of Microsoft's product marketing information, including a substantial amount of technical marketing. For example, If you want to know what Microsoft's official position is on a topic such as Service Oriented Architecture (SOA), you could find that by simply navigating to Microsoft.com and searching for “SOA.” In general, Microsoft tries to keep Microsoft.com focused on presenting the corporate image and explaining the benefits of the products, and locates technical information on other dedicated Web sites.
While the technical content is kept elsewhere, you can easily find the links to it from the Microsoft.com home page. If you examine the home page, you will notice categories of content such as “Highlights," "Latest Releases," "Using Your Computer,", "For Business,” and two categories of technical content, “For IT Professionals” and “For Developers.” Microsoft makes a distinction between software developers, and all other types of IT Professionals. This is primarily because there is so much content for developers, and because developers have significantly different information needs than, say, network administrators or operations personnel. While many of the links in these categories change frequently, the primary Web sites for technical information do not change. Technical information for developers is found on the Microsoft Developer Network (MSDN) site at https://msdn.microsoft.com. The primary site for technical information for all other IT professionals is Microsoft TechNet found at https://technet.microsoft.com.
Microsoft Developer Network
Once on MSDN, you will notice that it is divided into several areas including Developer Centers (typically one for each major development tool, language, technology, and technical domain), the Library (a huge repository of searchable content), Downloads, Support Forums, and Communities (where you can see what others are thinking and writing about, and participate should you choose).
There are also a couple of other important special subsites. Channel9 (https://channel9.msdn.com) features informal videos, usually of Microsoft product group software engineers or architects explaining the technologies they are working on, and often discussing the future plans of developer tools or technologies. CodePlex (https://codeplex.com) is Microsoft's open source project hosting site. There you can browse projects that other people are working on in public communities, or even spin up your own project. The Microsoft patterns & practices team develops all of their offerings in public CodePlex communities, providing the community at large to provide feedback on the project throughout the development cycle.
MSDN also provides technical chats and events such as Webcasts that can be very helpful in learning about a new technology area, or emerging technology.
Likewise, Microsoft TechNet offers a similar set of information and opportunities. On TechNet, not surprisingly, you will find TechCenters instead of Developer Centers. Other than that, the only significant difference is that TechNet contains the technical content for topics such as network infrastructure design, deployment, operations, and guidance for installing and managing Microsoft's products.
The .NET Framework
At a high level, the .NET Framework is composed of a virtual run-time engine, a library of classes, and run-time services used in the development and execution of .NET applications. The .NET Framework was initially released as a run-time engine and core set of classes used to build applications.
The Base Class Library (BCL) provides a core set of classes that cover a wide range of programming requirements in a number of areas, including UI, data access, database connectivity, cryptography, numeric algorithms, and network communications.
Overlaying the BCL are core technologies for developing .NET applications. These technologies include class libraries and run-time 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 WCF, WPF, and WF.
Common Language Runtime
The .NET Framework includes a virtual environment that manages the program's run-time requirements. This environment is called the CLR and provides the appearance of a virtual machine so that programmers do not need to 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. Microsoft .NET Framework applications are developed using managed code (code that will execute within the CLR), although some features (such as device drivers that need to use kernel APIs) are often developed using unmanaged code. The CLR also provides services such as security, memory management, and exception handling.
The following data access technologies are available on the Microsoft platform:
- ADO.NET Core. ADO.NET Core provides facilities for the general retrieval, update, and management of data. It includes providers for SQL Server, OLE DB, Open Database Connectivity (ODBC), SQL Server Compact Edition, and Oracle databases.
- ADO.NET Entity Framework. This framework gives you a strongly typed data access experience over relational databases. It moves the data model from the physical structure of relational tables to a conceptual model that accurately reflects common business objects. The Entity Framework introduces a common Entity Data Model within the ADO.NET environment, allowing developers to define a flexible mapping to relational data. This mapping helps to isolate applications from changes in the underlying storage schema. The Entity Framework also supports LINQ to Entities, which provides LINQ support for business objects exposed through the Entity Framework. When used as an Object/Relational Mapping (O/RM) product, developers use LINQ to Entities against business objects, which Entity Framework will convert to Entity SQL that is mapped against an Entity Data Model managed by the Entity Framework. Developers also have the option of working directly with the Entity Data Model and using Entity SQL in their applications.
- ADO.NET Sync Services. ADO.NET Sync Services is a provider included in the Microsoft Sync Framework, and is used to implement synchronization for ADO.NET-enabled databases. It enables data synchronization to be built into occasionally connected applications. It periodically gathers information from the client database and synchronizes it with the server database.
- Language Integrated Query (LINQ). LINQ provides class libraries that extend C# and Visual Basic with native language syntax for queries. It is primarily a query technology supported by different assemblies throughout the .NET Framework; for example, LINQ to Entities is included with the ADO.NET Entity Framework assemblies, LINQ to XML is included with the System.Xml assemblies, and LINQ to Objects is included with the .NET Framework core system assemblies. Queries can be performed against a variety of data formats, including DataSet (LINQ to DataSet), XML (LINQ to XML), in-memory objects (LINQ to Objects), ADO.NET Data Services (LINQ to Data Services), and relational data (LINQ to Entities).
- LINQ to SQL. LINQ to SQL provides a lightweight, strongly typed query solution against SQL Server. LINQ to SQL is designed for easy, fast object persistence scenarios where the classes in the mid-tier map very closely to database table structures. Starting with .NET Framework 4.0, LINQ to SQL scenarios will be integrated and supported by the ADO.NET Entity Framework; however, LINQ to SQL will continue to be a supported technology. For more information, see the ADO.NET team blog at https://blogs.msdn.com/adonet/archive/2008/10/31/clarifying-the-message-on-l2s-futures.aspx.
The .NET platform provides the following technology options for mobile applications:
- Microsoft .NET Compact Framework. This is a subset of the Microsoft .NET Framework designed specifically for mobile devices. Use this technology for mobile applications that must run on the device as a stand-alone or occasionally connected application.
- ASP.NET for Mobile. This is a subset of ASP.NET, designed specifically for mobile devices. ASP.NET Mobile applications can be hosted on a normal IIS Web server. Use this technology for mobile Web applications when you must support a large number of mobile devices and browsers that can rely on a guaranteed network connection.
- Silverlight for Mobile. This subset of the Silverlight client requires the Silverlight plug-in to be installed on the mobile device. Use this technology to port existing Silverlight applications to mobile devices, or if you want to create a richer UI than is possible using other technologies.
Windows-based applications are executed by the .NET Framework. The .NET Framework provides the following technology options for rich client applications:
- Windows Forms. This is the standard UI design technology for the .NET Framework. Even with the availability of WPF, Windows Forms is still a good choice for UI design if your team already has technical expertise with Windows Forms, and the application does not have a requirement for a highly graphical or streaming media UI.
- Windows Presentation Foundation (WPF) application. WPF applications support more advanced graphics capabilities, such as 2-D and 3-D 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 implement the UI, data binding, and event definitions. WPF also includes advanced data binding and template capabilities. WPF applications can be deployed to the desktop or within a browser using a XAML browser application (XBAP). WPF applications support developer/designer interaction—developers can focus on the business logic, while designers can control the appearance and behavior.
- Windows Forms with WPF user controls. This approach allows you to take advantage of the more powerful UI capabilities provided by WPF controls. You can add WPF to your existing Windows Forms application. Keep in mind that WPF controls tend to work best on higher-powered client machines.
- WPF with Windows Forms User Controls. This technology allows you to supplement WPF with controls that are not provided with WPF. You can use the WindowsFormsHost control provided in the WindowsFormsIntegration assembly to add Windows Forms controls. However, there are some restrictions and inconsistencies related to overlapping controls, interface focus, and rendering techniques used by the different technologies.
- XAML Browser Application (XBAP) using WPF. This technology hosts a sandboxed WPF application in Microsoft Internet Explorer or Mozilla Firefox on Windows. Unlike Silverlight, you can use most of the WPF framework, but there are some limitations related to accessing system resources from the partial-trust sandbox. XBAP requires Windows Vista or both .NET Framework 3.5 and the XBAP browser plug-in on the client desktop. XBAP is a good choice when the required features are not available in Silverlight, and you can specify the client platform and trust requirements.
Rich Internet Application
The Microsoft application platform includes the Silverlight technology for building rich Internet applications. RIAs must be hosted on a Web server such as Windows Server Internet Information Services (IIS). The following options are available for building RIAs:
- Silverlight. This is a browser-optimized subset of WPF that works cross-platform and cross-browser. Compared to XBAP, Silverlight is a smaller, faster install but does not support 3-D graphics and text-flowable documents. Due to its small footprint and cross-platform support, Silverlight is a good choice for 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 and provide broad interoperability, and includes direct support for service orientation. It supports a range of protocols including HTTP, TCP, Microsoft Message Queuing, 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. A toolkit for professional developers and independent software vendors (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 Designer in Visual Studio.
- Workflow Services. Workflow Services provides integration between WCF and WF to provide WCF-based services for workflow. Starting with Microsoft .NET Framework 3.5, WCF has been extended to provide support for workflows exposed as services and the ability to call services from within workflows. In addition, Visual Studio 2008 includes new templates and tools that support workflow services.
- Microsoft Office SharePoint Services (MOSS). MOSS is a content-management and collaboration platform that provides workflow support based on WF. MOSS provides a solution for human workflow and collaboration in the context of a SharePoint server. You can create workflows for document approval directly within the MOSS interface. You can also create workflows using either the SharePoint Designer or the Windows Workflow Designer in Visual Studio**.** For workflow customization, you can use the WF object model within Visual Studio.
- Microsoft BizTalk Server. BizTalk currently has its own workflow engine that is geared toward orchestration, such as enterprise integration with system-level workflows. A future version of BizTalk may use WF as well as XLANG (an extension of the Web Service Definition Language used to model service orchestration and collaboration), which is the existing orchestration technology in BizTalk. You can define the overall design and flow of loosely coupled, long-running business processes by using BizTalk Orchestration Services within and between applications.
MOSS and BizTalk server are not part of the .NET Framework or Visual Studio; these are independent products, but part of the overall Microsoft platform.
The .NET platform includes ASP.NET for building Web applications and simple Web services. ASP.NET applications must be hosted within a Web server such as IIS. The following technologies are available for building Web applications using ASP.NET:
- ASP.NET Web Forms. This is the standard UI design and implementation technology for .NET Web applications. An ASP.NET Web Forms application needs only to be installed on the Web server, with no components required on the client desktop.
- ASP.NET Web Forms with AJAX. Use AJAX with ASP.NET Web Forms to process requests between the server and client asynchronously to improve responsiveness, provide richer experience to the client, and reduce the number of post backs to the server. AJAX is an integral part of ASP.NET in .NET Framework 3.5 and later.
- 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 and avoid the requirement to write a whole new Silverlight application. This is a good approach for creating islands of Silverlight content in an existing application.
- ASP.NET MVC. This technology allows you to use ASP.NET to build applications based on the Model-View-Controller (MVC) pattern. ASP.NET MVC supports test-driven development and clear separation of concerns between UI processing and UI rendering. This approach helps to avoid mixing presentation information with logic code.
- ASP.NET Dynamic Data. This technology allows you to create data-driven ASP.NET applications that leverage LINQ to Entities functionality. It provides a rapid development model for line-of-business (LOB)-style data-driven applications, supporting both simple scaffolding and full customization capabilities.
Web Server — Internet Information Services
The Microsoft platform includes IIS, which provides full-scale support for Internet publishing, including transport services, client applications, administrative tools, database and application 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 HTTP. It provides high performance, compression, extensive configurability, and supports a range of security and authentication options.
- File Transfer Protocol (FTP) Service. This service allows you to receive and deliver files using FTP. However, authentication is limited to the Basic method.
- Gopher Service. This service supports a distributed document search and retrieval network protocol. It is rarely used today.
- Internet Database Connector. This is an integrated gateway and template scripting mechanism for the World Wide Web service to access Open Database Connectivity (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. This provides a mechanism to support encrypted communication over HTTP, allowing clients and servers to communicate more securely than when sending content as plain text.
- Internet Service Manager Server. This is an administration console and associated tools that provide local and remote administration features for IIS.
- Integration with ASP.NET. IIS 7.0 and later 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 Microsoft application 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 enterprise-level 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 known as the Visual Studio Team System. Microsoft Visual Studio is the primary environment for developing .NET applications, and is available in several different versions that target specific groups involved in the full life cycle of application development.
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 rich client, RIA, Web, mobile, services, and Office-based solutions. 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 facilitate operational management. Examples are:
- System Center, which provides a set of tools and environments for enterprise-level application monitoring, deployment, configuration, and management. For more information, see the "Microsoft System Center" at https://www.microsoft.com/systemcenter/en/us/default.aspx.
- Expression Studio, which provides tools aimed at graphical designers for creating rich interfaces and animations. For more information, see "Microsoft Expression" at https://www.microsoft.com/expression/products/Overview.aspx?key=studio.
patterns & practices Solution Assets
For more information on solution assets available from the Microsoft patterns & practices group, see the following resources:
- Composite Client Application Guidance for WPF for both desktop and Silverlight makes it easier to create modular applications. For more information, see "Composite Client Application Guidance" at https://msdn.microsoft.com/en-us/library/cc707819.aspx.
- Enterprise Library contains a series of application blocks that address crosscutting concerns. For more information, see "Enterprise Library" at https://msdn.microsoft.com/en-us/library/cc467894.aspx.
- Software Factories 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 https://msdn.microsoft.com/en-gb/practices/bb969054.aspx.
- Unity Application Block for both enterprise and Silverlight scenarios provides features for implementing dependency injection, service location, and inversion of control. For more information, see "Unity Application Block" at https://msdn.microsoft.com/en-us/library/dd203101.aspx.
- Detailed guidance for a wide range of enterprise architecture, design, development, and deployment scenarios. These include scenarios such as solution development fundamentals, client development, server development, and services development. For more information, see the patterns & practices home page at https://msdn.microsoft.com/en-us/library/ms998572.aspx.
For more information about the .NET Framework, see the following resources:
- ".NET Framework 3.5 Overview" at https://msdn.microsoft.com/en-us/library/a4t23ktk.aspx.
- "Overview of the .NET Framework" at https://msdn.microsoft.com/en-us/library/zw4w595w(VS.71).aspx.
- "Overview of the .NET Compact Framework" at https://msdn.microsoft.com/en-us/library/w6ah6cw1(VS.80).aspx.
For more information about Web services, see the following resources:
- "Windows Communication Foundation" at https://msdn.microsoft.com/en-us/library/ms735119.aspx.
- "XML Web Services Using ASP.NET" at https://msdn.microsoft.com/en-us/library/ba0z6a33.aspx.
For more information about workflow services, see the following resources:
- "Microsoft BizTalk ESB Toolkit" at https://msdn.microsoft.com/en-us/library/ee236739(BTS.10).aspx.
- "Workflows in Office SharePoint Server 2007" at https://msdn.microsoft.com/en-us/library/ms549489.aspx.
- "Windows Workflow Foundation (WF)" at https://msdn.microsoft.com/en-us/netframework/aa663328.aspx.
For more information about other features of the Microsoft platform, see the following resources:
- For more information on data access, see "Data Platform Development" at https://msdn.microsoft.com/en-gb/data/default.aspx.
- For more information about the IIS Web server, see "A High-Level Look at Microsoft Internet Information Server" at https://msdn.microsoft.com/en-us/library/ms993571.aspx.
- For more information about SQL Server, see "SQL Server" at https://msdn.microsoft.com/en-gb/sqlserver/default.aspx.
- For more information about Visual Studio Team System, see "Visual Studio 2008 Overview" at https://www.microsoft.com/visualstudio/en-us/default.mspx.