Microsoft Platform:

Technology and innovation

At Dynamic Domain, we offer a Microsoft platform building applications using .NET Framework and Microsoft server technologies. 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. Microsoft also provides a 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.

Category

Technologies

Application Infrastructure Common Language Runtime (CLR) .NET Framework
Collaboration / Integration / Workflow Windows Workflow Foundation (WF) Microsoft Office SharePoint Server (MOSS) Microsoft BizTalk Server
Data Access ADO.NET Core ADO.NET Data Services Framework ADO.NET Entity Framework ADO.NET Sync Services Language Integrated Query (LINQ)
Database Server Microsoft SQL Server
Development Tools Microsoft Visual Studio Microsoft Expression® Studio design software
Mobile .NET Compact Framework ASP.NET Mobile Silverlight Mobile
Rich Client Windows Forms Windows Presentation Foundation (WPF)
Rich Internet Application (RIA) Microsoft Silverlight
Services ASP.NET Web Services (ASMX) Windows Communication Foundation (WCF)
Web ASP.NET
Web Server Internet Information Services (IIS)

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.

Data Access

The following data access technologies are available on the Microsoft platform:

  • ADO.NET CoreADO.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 Data Services Framework This framework exposes data from any Linq enabled data source, typically an Entity Data Model, through RESTful Web services accessed over HTTP. The data can be addressed directly using Uniform Resource Identifiers (URIs). The Web service can be configured to return the data as plain Atom and JavaScript Object Notation (JSON) formats
  • ADO.NET Entity FrameworkThis 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 ServicesADO.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 SQLLINQ 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.

Mobile Applications

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 MobileThis 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.

Rich Client

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 controlsThis 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 ControlsThis 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 WPFThis 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.
  • Silverlight with AJAXSilverlight natively supports Asynchronous JavaScript and XML (AJAX) and exposes its object model to JavaScript located in the Web page. You can use this capability to allow background interaction between your page components and the server to provide a more responsive user interface.

Web Services

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.

Workflow

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 ServicesWorkflow 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

Web Applications

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 FormsThis 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 ControlsIf 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 MVCThis 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 DataThis 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.

Develop apps for the Universal Windows Platform (UWP)

With the Universal Windows Platform and our one Windows core, you can run the same app on any Windows 10 device from phones to desktops. Create these Universal Windows apps with Visual Studio 2015 and the Universal Windows App Development tools.

Run your app on a Windows 10 phone, a Windows 10 desktop, or an Xbox. It’s the same app package! With the introduction of the Windows 10 single, unified core, one app package can run across all platforms. Several platforms have Extension SDKs that you can add to your app to take advantage of platform specific behaviors. For example, an extension SDK for mobile handles the back button being pressed on a Windows phone. If you reference an Extension SDK in your project, then just add runtime checks to test if that SDK is available on that platform. That’s how you can have the same app package for each platform!

Device families

Windows 8.1 and Windows Phone 8.1 apps target an operating system (OS): either Windows, or Windows Phone. With Windows 10 you no longer target an operating system but you instead target your app to one or more device families. A device family identifies the APIs, system characteristics, and behaviors that you can expect across devices within the device family. It also determines the set of devices on which your app can be installed from the Store. Here is the device family hierarchy.

A device family is a set of APIs collected together and given a name and a version number. A device family is the foundation of an OS. PCs run the desktop OS, which is based on the desktop device family. Phones and tablets, etc., run the mobile OS, which is based on the mobile device family. And so on.

The universal device family is special. It is not, directly, the foundation of any OS. Instead, the set of APIs in the universal device family is inherited by child device families. The universal device family APIs are thus guaranteed to be present in every OS and consequently on every device. Each child device family adds its own APIs to the ones it inherits. The resulting union of APIs in a child device family is guaranteed to be present in the OS based on that device family, and consequently on every device running that OS.

One benefit of device families is that your app can run on any, or even all, of a variety of devices from phones, tablets, and desktop computers up to Surface Hubs and Xbox consoles. Your app can also use adaptive code to dynamically detect and use features of a device that are outside of the universal device family.

The decision about which device family (or families) your app will target is yours to make. And that decision impacts your app in these important ways. It determines:

  • The set of APIs that your app can assume to be present when it runs (and can therefore call freely).
  • The set of API calls that are safe only inside conditional statements.
  • The set of devices on which your app can be installed from the Store (and consequently the form factors that you need to consider).

There are two main consequences of making a device family choice: the API surface that can be called unconditionally by the app, and the number of devices the app can reach. These two factors involve tradeoffs and are inversely related. For example, a UWP app is an app that specifically targets the universal device family, and consequently is available to all devices. An app that targets the universal device family can assume the presence of only the APIs in the universal device family (because that's what it targets). Other APIs must be called conditionally. Also, such an app must have a highly adaptive UI and comprehensive input capabilities because it can run on a wide variety of devices. A Windows mobile app is an app that specifically targets the mobile device family, and is available to devices whose OS is based on the mobile device family (which includes phones, tablets, and similar devices). A mobile device family app can assume the presence of all APIs in the mobile device family, and its UI has to be moderately adaptive. An app that targets the IoT device family can be installed only on IoT devices and can assume the presence of all APIs in the IoT device family. That app can be very specialized in its UI and input capabilities because you know that it will run only on a specific type of device.

Here are some considerations to help you decide which device family to target:

Maximizing your app's reach

To reach the maximum range of devices with your app, and to have it run on as many kinds of devices as possible, your app will target the universal device family. By doing so, the app automatically targets every device family that's based on universal (in the diagram, all the children of universal). That means that the app runs on every OS based on those device families, and on all the devices that run those operating systems. The only APIs that are guaranteed to be available on all those devices is the set defined by the particular version of the universal device family that you target. (With this release, that version is always 10.0.x.0.) To find out how an app can call APIs outside of its target device family version, see Writing code later in this topic.

Limiting your app to one kind of device

You may not want your app to run on a wide range of devices; perhaps it's specialized for, say, a desktop PC or for an Xbox console. In that case you can choose to target your app at one of the child device families. For example, if you target the desktop device family, the APIs guaranteed to be available to your app include the APIs inherited from the universal device family plus the APIs that are particular to the desktop device family.

Limiting your app to a subset of all possible devices

Instead of targeting the universal device family, or targeting one of the child device families, you can instead target two (or more) child device families. Targeting desktop and mobile might make sense for your app. Or desktop and Xbox.Or desktop, Xbox and Surface Hub.

Excluding support for a particular version of a device family

In rare cases you may want your app to run everywhere except on devices with a particular version of a particular device family. For example, let's say your app targets version 10.0.x.0 of the universal device family. When the operating system version changes in the future, say to 10.0.x.2, at that point you can specify that your app runs everywhere except version 10.0.x.1 of Xbox by targeting your app to 10.0.x.0 of universal and 10.0.x.1 of Xbox. Your app will then be unavailable to the set of device family versions within Xbox 10.0.x.1 (inclusive) and earlier.

By default, Microsoft Visual Studio specifies Windows.Universal as the target device family in the app package manifest file. To specify the device family or device families that your app is offered to from within the Store, manually configure the TargetDeviceFamily element in your Package.appxmanifest file.

UI and universal input

A UWP app can run on many different kinds of devices that have different forms of input, screen resolutions, DPI density, and other unique characteristics. Windows 10 provides new universal controls, layout panels, and tooling to help you adapt your UI to the devices your app may run on. For example, you can tailor the UI to take advantage of the difference in screen resolution when your app is running on a desktop computer versus on a mobile device.

Some aspects of your app's UI will automatically adapt across devices. Controls such as buttons and sliders automatically adapt across device families and input modes. Your app's user-experience design, however, may need to adapt depending on the device the app is running on. For example, a photos app should adapt the UI when running on a small, hand-held device to ensure that usage is ideal for single-hand use. When the photos app is running on a desktop computer, the UI should adapt to take advantage of the additional screen space.

Windows helps you target your UI to multiple devices with the following features:
  • Universal controls and layout panels help you to optimize your UI for the screen resolution of the device.
  • Common input handling allows you to receive input through touch, a pen, a mouse, or a keyboard, or a controller such as a Microsoft Xbox controller
  • Tooling helps you to design UI that can adapt to different screen resolutions
  • Adaptive scaling adjusts to resolution and DPI differences across devices

Universal controls and layout panels

Windows 10 includes new controls such as the calendar and split view. The pivot control, which was previously available only for Windows Phone, is also now available for the universal device family. Controls have been updated to work well on larger screens, adapt themselves based on the number of screen pixels available on the device, and work well with multiple types of input such as keyboard, mouse, touch, pen, and controllers such as the Xbox controller.

You may find that you need to adapt your overall UI layout based on the screen resolution of the device your app will be running on. For example, a communication app running on the desktop may include a picture-in-picture of the caller and controls well suited to mouse input:

However, when the app runs on a phone, because there is less screen real-estate to work with, your app may eliminate the picture-in-picture view and make the call button larger to facilitate one-handed operation:

To help you adapt your overall UI layout based on the amount of available screen space,Windows 10 introduces adaptive panels and design states.

User experience

A Universal Windows app allows you to take advantage of the unique capabilities of the device on which it is running. Your app can make use of all of the power of a desktop device, the natural interaction of direct manipulation on a tablet (including touch and pen input), the portability and convenience of mobile devices, and the collaborative power of Surface Hub.

Good design is the process of deciding how users will interact with your app, as well as how it will look and function. User experience plays a huge part in determining how happy people will be with your app, so don't skimp on this step. Design basics introduce you to designing a Universal Windows app. See the Introduction to Universal Windows Platform (UWP) apps for designersfor information on designing UWP apps that delight your users. Before you start coding, see the device primer to help you think through the interaction experience of using your app on all the different form factors you want to target.

In addition to interaction on different devices, plan your app to embrace the benefits of working across multiple devices. For example:

  • Use cloud services to sync across devices. Learn how to connect to web services in support of your app experience.
  • Consider how you can support users moving from one device to another, picking up where they left off. Include notifications and in-app purchases in your planning. These features should work across devices.
  • Design your workflow using Navigation design basics for UWP apps to accommodate mobile, small-screen, and large-screen devices. Lay out your user interface for a specific window size, not for the available resolution.
  • Consider whether there are features of your app that don’t make sense on a small mobile screen. There may also be areas that don’t make sense on a stationary desktop machine and require a mobile device to light up. For example, most scenarios around location imply a mobile device.
  • Consider how you'll accommodate multiple input modalities. See the Guidelines for interactions to learn how users can interact with your app by using Cortana, Speech, Touch interactions, the Touch keyboard and more.

Submit a Universal Windows app through your Dashboard

The new unified Windows Dev Center dashboard lets you manage and submit all of your apps for Windows devices in one place. New features simplify processes while giving you more control. You'll also find detailed analytic reportscombined payout details, ways to promote your app and engage with your customers, and much more.