Thursday, June 13, 2013

What's New in the .NET Framework 4.5?

This topic contains a summary of key new features and improvements in the following areas of the .NET Framework 4.5. This topic does not provide comprehensive information and is subject to change. For general information about the .NET Framework, see Getting Started with the .NET Framework. For supported platforms, see System Requirements. For download links and installation instructions, see Installing the .NET Framework 4.5.



.NET for Windows Store apps

Windows Store apps are designed for specific form factors and leverage the power of the Windows operating system. A subset of the .NET Framework 4.5 is available for building Windows Store apps for Windows by using C# or Visual Basic. This subset is called .NET for Windows Store apps and is discussed in an overview in the Windows Dev Center.


Portable Class Libraries

The Portable Class Library project in Visual Studio 2012 enables you to write and build managed assemblies that work on multiple .NET Framework platforms. Using a Portable Class Library project, you choose the platforms (such as Windows Phone and .NET for Windows Store apps) to target. The available types and members in your project are automatically restricted to the common types and members across these platforms.


Core New Features and Improvements

The following features and improvements were added to the common language runtime and to .NET Framework classes:
  • Ability to reduce system restarts by detecting and closing .NET Framework 4 applications during deployment. See Reducing System Restarts During .NET Framework 4.5 Installations.
  • Support for arrays that are larger than 2 gigabytes (GB) on 64-bit platforms. This feature can be enabled in the application configuration file. See the gcAllowVeryLargeObjects element, which also lists other restrictions on object size and array size.
  • Better performance through background garbage collection for servers. When you use server garbage collection in the .NET Framework 4.5, background garbage collection is automatically enabled. See the Background Server Garbage Collection section of the Fundamentals of Garbage Collection topic.
  • Background just-in-time (JIT) compilation, which is optionally available on multi-core processors to improve application performance. See ProfileOptimization.
  • Ability to limit how long the regular expression engine will attempt to resolve a regular expression before it times out. See the Regex.MatchTimeout property.
  • Ability to define the default culture for an application domain. See the CultureInfo class.
  • Console support for Unicode (UTF-16) encoding. See the Console class.
  • Support for versioning of cultural string ordering and comparison data. See the SortVersion class.
  • Better performance when retrieving resources. See Packaging and Deploying Resources in Desktop Apps.
  • Zip compression improvements to reduce the size of a compressed file. See the System.IO.Compression namespace.
  • Ability to customize a reflection context to override default reflection behavior through the CustomReflectionContext class.
  • Support for the 2008 version of the Internationalized Domain Names in Applications (IDNA) standard when the System.Globalization.IdnMapping class is used on Windows 8.
  • Delegation of string comparison to the operating system, which implements Unicode 6.0, when the .NET Framework is used on Windows 8. When running on other platforms, the .NET Framework includes its own string comparison data, which implements Unicode 5.x. See the String class and the Remarks section of the SortVersion class.
  • Type reflection support split between Type and TypeInfo classes. See Reflection in the .NET Framework for Windows Store Apps.

Managed Extensibility Framework (MEF)

The Managed Extensibility Framework (MEF) provides the following new features:
  • Support for generic types.
  • Convention-based programming model that enables you to create parts based on naming conventions rather than attributes.
  • Multiple scopes.
  • A subset of MEF that you can use when you create Windows Store apps. This subset is available as a downloadable package from the NuGet Gallery. To install the package, open your project in Visual Studio 2012, choose Manage NuGet Packages from the Project menu, and search online for the Microsoft.Composition package.
     
Asynchronous File Operations

In the .NET Framework 4.5, new asynchronous features were added to the C# and Visual Basic languages. These features add a task-based model for performing asynchronous operations. To use this new model, use the asynchronous methods in the I/O classes. See Asynchronous File I/O.
 

Tools

Resource File Generator (Resgen.exe) enables you to create a .resw file for use in Windows Store apps from a .resources file embedded in a .NET Framework assembly. For more information, see Resgen.exe (Resource File Generator).
Managed Profile Guided Optimization (Mpgo.exe) enables you to improve application startup time, memory utilization (working set size), and throughput by optimizing native image assemblies. The command-line tool generates profile data for native image application assemblies. See Mpgo.exe (Managed Profile Guided Optimization Tool).


Parallel Computing

The .NET Framework 4.5 provides several new features and improvements for parallel computing. These include improved performance, increased control, improved support for asynchronous programming, a new dataflow library, and improved support for parallel debugging and performance analysis. See the entry What’s New for Parallelism in .NET 4.5 in the Parallel Programming with .NET blog.


Web

ASP.NET 4.5 includes the following new features:
  • Support for new HTML5 form types.
  • Support for model binders in Web Forms. These let you bind data controls directly to data-access methods, and automatically convert user input to and from .NET Framework data types.
  • Support for unobtrusive JavaScript in client-side validation scripts.
  • Improved handling of client script through bundling and minification for improved page performance.
  • Integrated encoding routines from the AntiXSS library (previously an external library) to protect from cross-site scripting attacks.
  • Support for WebSockets protocol.
  • Support for reading and writing HTTP requests and responses asynchronously.
  • Support for asynchronous modules and handlers.
  • Support for content distribution network (CDN) fallback in the ScriptManager control.

Networking

The .NET Framework 4.5 provides a new programming interface for HTTP applications. For more information, see the new System.Net.Http and System.Net.Http.Headers namespaces.
Support is also included for a new programming interface for accepting and interacting with a WebSocket connection by using the existing HttpListener and related classes. For more information, see the new System.Net.WebSockets namespace and the HttpListener class.
In addition, the .NET Framework 4.5 includes the following networking improvements:
  • RFC-compliant URI support. For more information, see Uri and related classes.
  • Support for Internationalized Domain Name (IDN) parsing. For more information, see Uri and related classes.
  • Support for Email Address Internationalization (EAI). For more information, see the System.Net.Mail namespace.
  • Improved IPv6 support. For more information, see the System.Net.NetworkInformation namespace.
  • Dual-mode socket support. For more information, see the Socket and TcpListener classes.


Windows Presentation Foundation (WPF)

In the .NET Framework 4.5, Windows Presentation Foundation (WPF) contains changes and improvements in the following areas:
  • The new Ribbon control, which enables you to implement a ribbon user interface that hosts a Quick Access Toolbar, Application Menu, and tabs.
  • The new INotifyDataErrorInfo interface, which supports synchronous and asynchronous data validation.
  • New features for the VirtualizingPanel and Dispatcher classes.
  • Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.
  • Data binding to static properties, data binding to custom types that implement the ICustomTypeProvider interface, and retrieval of data binding information from a binding expression.
  • Repositioning of data as the values change (live shaping).
  • Ability to check whether the data context for an item container is disconnected.
  • Ability to set the amount of time that should elapse between property changes and data source updates.
  • Improved support for implementing weak event patterns. Also, events can now accept markup extensions.

Windows Communication Foundation (WCF)

In the .NET Framework 4.5, the following features have been added to make it simpler to write and maintain Windows Communication Foundation (WCF) applications:
  • Simplification of generated configuration files.
  • Support for contract-first development.
  • Ability to configure ASP.NET compatibility mode more easily.
  • Changes in default transport property values to reduce the likelihood that you will have to set them.
  • Updates to the XmlDictionaryReaderQuotas class to reduce the likelihood that you will have to manually configure quotas for XML dictionary readers.
  • Validation of WCF configuration files by Visual Studio as part of the build process, so you can detect configuration errors before you run your application.
  • New asynchronous streaming support.
  • New HTTPS protocol mapping to make it easier to expose an endpoint over HTTPS with Internet Information Services (IIS).
  • Ability to generate metadata in a single WSDL document by appending ?singleWSDL to the service URL.
  • Websockets support to enable true bidirectional communication over ports 80 and 443 with performance characteristics similar to the TCP transport.
  • Support for configuring services in code.
  • XML Editor tooltips.
  • ChannelFactory caching support.
  • Binary encoder compression support.
  • Support for a UDP transport that enables developers to write services that use "fire and forget" messaging. A client sends a message to a service and expects no response from the service.
  • Ability to support multiple authentication modes on a single WCF endpoint when using the HTTP transport and transport security.
  • Support for WCF services that use internationalized domain names (IDNs).
 

Windows Workflow Foundation (WF)

Several new features have been added to Windows Workflow Foundation (WF) in the .NET Framework 4.5. These new features include:
  • State machine workflows, which were first introduced as part of the .NET Framework 4.0.1 (.NET Framework 4 Platform Update 1). This update included several new classes and activities that enabled developers to create state machine workflows. These classes and activities were updated for the .NET Framework 4.5 to include:
    • The ability to set breakpoints on states.
    • The ability to copy and paste transitions in the workflow designer.
    • Designer support for shared trigger transition creation.
    • Activities for creating state machine workflows, including: StateMachine, State, and Transition.
  • Enhanced Workflow Designer features such as the following:
    • Enhanced workflow search capabilities in Visual Studio, including Quick Find and Find in Files.
    • Ability to automatically create a Sequence activity when a second child activity is added to a container activity, and to include both activities in the Sequence activity.
    • Panning support, which enables the visible portion of a workflow to be changed without using the scroll bars.
    • A new Document Outline view that shows the components of a workflow in a tree-style outline view and lets you select a component in the Document Outline view.
    • Ability to add annotations to activities.
    • Ability to define and consume activity delegates by using the workflow designer.
    • Auto-connect and auto-insert for activities and transitions in state machine and flowchart workflows.
  • Storage of the view state information for a workflow in a single element in the XAML file, so you can easily locate and edit the view state information.
  • A NoPersistScope container activity to prevent child activities from persisting.
  • Support for C# expressions:
    • Workflow projects that use Visual Basic will use Visual Basic expressions, and C# workflow projects will use C# expressions.
    • C# workflow projects that were created in Visual Studio 2010 and that have Visual Basic expressions are compatible with C# workflow projects that use C# expressions.
  • Versioning enhancements:
    • The new WorkflowIdentity class, which provides a mapping between a persisted workflow instance and its workflow definition.
    • Side-by-side execution of multiple workflow versions in the same host, including WorkflowServiceHost.
    • In Dynamic Update, the ability to modify the definition of a persisted workflow instance.
  • Contract-first workflow service development, which provides support for automatically generating activities to match an existing service contract.

Thursday, June 6, 2013

Building Apps for Windows Phone 8

It’s a very exciting time for developers! Last week, we launched Windows 8 and Surface. Microsoft launched Windows Phone 8 and introduced some awesome new smartphone devices. Today, we’re kicking off the Build conference, where we’ll join with thousands of developers in person, and with hundreds of thousands virtually, to explore the opportunities available with Microsoft platforms and tools. And now, in conjunction with yesterday’s Windows Phone 8 news and with our goal of having tools available on the same cadence as the platforms, I’m very excited to share that the Windows Phone SDK 8.0, including Visual Studio Express 2012 for Windows Phone, is now available for download.
With Windows 8, Windows Phone 8, and Windows Azure, developers using Visual Studio 2012 can build experiences that span the Windows ecosystem, from desktops to laptops to tablets to smartphones to the cloud. And with that in mind, today’s release of the Windows Phone SDK 8.0 enables some exciting new capabilities for developers, such as using C++ and DirectX to build stunning experiences, enabling in-app purchases to sell virtual and digital good within apps, helping developers to streamline their efforts with the advances we’ve made in Visual Studio 2012 and .NET, and more.
The Windows Phone SDK 8.0 works with the Visual Studio 2012 and enables you to get started today building great apps for both Windows Phone 8 and Windows Phone 7.x. It includes emulators for both environments, including the ability to validate for multiple chassis, and support for simulating various network conditions (e.g. ‘2G’, ‘3G’). It includes new templates for developing Windows Phone apps, such as for building apps with Direct3D, and it sports enhanced diagnostics for analyzing apps, such as power and network profiling and responsiveness monitoring. It enables building native apps as well as building managed apps that consume native libraries. It enables much easier portability between Windows 8 apps and Windows Phone 8 apps. It includes .NET portable library support, so you can write your libraries once and reuse them across all your apps. The list goes on.
As an avid user of Windows Phone, I’m looking forward to downloading and using the stellar apps you all create.

For a more in-depth tour through what’s new for developers in the Windows Phone SDK 8.0, see the Visual Studio team, .NET team, and Blend team blogs.

Improving the Modern Application Lifecycle

Microsoft recently hosted the 3rd annual ALM Summit, a gathering of Application Lifecycle Management (ALM) practitioners interested in learning more about the craft and sharing their own experiences with others.   Over the course of three packed days and across four tracks of discussions focused on DevOps, testing, agile development, and ALM leadership, attendees are discussing and collaborating with others in the field, all with the goal of improving how our industry delivers software and services.

A key set of themes during this summit focuses on real change happening in the industry.  In a world of devices and services, we’re seeing that feedback and iteration are the name of the game, with multi-year release trains replaced by faster and thoughtful build/measure/learn cycles, with a need for friction-free paths to production yielding advances in quality enablement and continuous deployment, with the blurring of development team roles, and with teams becoming more and more distributed.

All of this has led us to shift our approach in how we improve and release Visual Studio, while at the same time ensuring that new value includes capabilities to propel this “new normal.” In November, we shipped Visual Studio 2012 Update 1 (VS2012.1), an update to Visual Studio 2012 that provided not only fixes for bugs in the RTM release of Visual Studio 2012, but also a wealth of new features, spanning improved support for agile teams and continuous quality in addition to improved support for Windows and SharePoint development.  Today, I’m happy to share that we’ve released our first preview of Visual Studio 2012 Update 2 (VS2012.2).  This preview includes all of the improvements from VS2012.1 while also introducing web-based support for Test Case Management (TCM), improved support for work item tagging, unit testing features for Windows Phone 8, and more.  You can now download this preview, and you can expect subsequent previews and the eventual release of VS2012.2 to contain many more exciting capabilities.

However, while I’m excited by this VS2012.2 preview release, I’m even more excited by another of today’s announcements.  As Brian Harry just announced in his keynote this morning at the ALM Summit, we’ve added Git source code management to Team Foundation Service, with Git repositories hosted in Team Foundation Service available today for use seamlessly from any Git tool on any operating system.  Developers can now benefit from Microsoft’s fully-integrated ALM suite, while at the same time having a choice of using Git or TFVC (Team Foundation Version Control) for their source control repositories.  We’ll continue to invest in both Git and TFVC (Team Foundation Version Control) throughout future releases, as we see both centralized version control and distributed version control systems as being optimized for different types of projects and development workflows.

As part of this effort, today we’re also releasing a preview of an extension for VS2012.2 that enables connecting Visual Studio to Git repositories hosted in any Git host, including Team Foundation Service, CodePlex, GitHub, and any number of other 3rd-party services.  To create this extension, we utilized the open source library libgit2, and in the process, several of our full-time engineers worked as committers to the libgit2 project.  These capabilities will be built into a future release of Visual Studio, enabling it to serve as an incredibly robust Git client, one that provides seamless integration with the rest of the simplicity and power provided by Visual Studio.