How to Get Started Leveraging Windows Server 2008 R2 Features

W2K8R2_thumb_1 With all the talk about Windows 7 on the client, we haven’t talked much about the server platform that will shortly follow Windows 7. The release candidate updates for Windows Server 2008 R2 gives you some way to stand out from your competition and provide a better experience for your customers.

You can get the release candidate for Windows Server 2008 R2 from Windows Server 2008 R2 Release Candidate as either a Web download or virtual hard drive image.

Windows Server 2008 R2 provides new virtualization tools, Web resources, management updates, and Windows 7 integration reduce costs, and provide for a dynamic and efficiently managed data center.

Windows 7 and Server 2008 R2 based on same kernel. That means you can exploit many of the features that are also in Windows 7. The Windows SDK provides samples, documentation, headers and libraries, and tools. This release of the Windows SDK is compatible with Visual Studio 2008; including Visual Studio Express Editions. For more information about how to get the SDK, see Windows SDK Supports Release Candidates. Many key features are also supported in Windows 7 are those I won’t go deeper into here.

For more information about these Windows 7 features, see Walkthrough to Get Your Applications Ready for Windows 7.

Key features for developers for your Windows Server 2008 R2 application are:

  • Support for Server Core
  • APIs and tools to help your tune your parallel applications using NUMA
  • PowerShell 2.0
  • Windows Web Services
  • Background Services and Tasks
  • Background Intelligence Transfer

Windows Server 2008 R2 is 64-bit only. You will, however, be able to run your x86 binaries on Windows Server.   32-bit binaries will be dependent upon the "WoW-64" emulation layer (actually just a thin thunking layer on x64, and a full instruction set emulation layer on ia64).   Software Developers will need to ensure their applications are thus compatible with x64 Windows. For more information, see Gearing up for 64-bit Computing on Windows Server and Running 32-bit Applications on Windows Server 2008 R2, Server Core.

This posting focuses mainly on what you can do in your code to help your customers leverage the features in Windows Server 2008 R2. And it focuses on what features you can leverage in your development processes. For more information on what your customers are looking for in R2 in terms of deployment, more effective management in data centers, and the overall business value of R2, see Introduction to Windows Server 2008 R2.

Compatibility

Windows 7 and Windows Server 2008 R2 are highly compatible with most applications written for Windows Vista, Windows Server 2008, and Windows Server 2008 R2 and their service packs. Some compatibility breaks are inevitable due to innovations, security tightening, and increased reliability. For more information about what has changed and might affect your application, see Windows 7 and Windows Server 2008 R2 Application Quality Cookbook: A Developer’s Guide to Application Compatibility, Reliability, and Performance.

Server Core

Server Core is where you run Windows Server without the graphical user interface. Think of Server Core as an application server. It means a smaller footprint and is idea in datacenters. So customer want to deploy your server applications into Server Core both on the bare metal, but also in virtualized environments. Now with Windows Server 2008 R2, you can now run ASP.NET applications from within Server Core.

Windows Server 2008 R2 Server Core includes subsets of the 2.0/3.0/3.5 .NET Framework. The Framework makes it possible to run an almost full-featured version of ASP.NET. But you don’t get MMC-Snap-ins, No System.Web.Mail Namespace, and no Web Application Tool (WAT). If you can live with those limitations, you’ll want to support Server Core both in your development, for customer deployment, and for your own hosting.

For more information on how to host your application using Server Core under Windows Server 2008 R2, see How To Get Started with ASP.NET Applications on Server Core.

For more information on the Channel9 and Code Gallery "5 Minute Concept" series about on Server Core application development, see Channel9 and Code Gallery.

But the big question for developers is how to debug. To learn how, see How to Debug .NET Server Core Applications on Channel 9.

For more information about why Server Core is interesting to your customers, see Why Is Server Core Useful?.

PowerShell is available with Server Core, allowing installations to benefit from local and remote command line administration and automation -- another reason to PowerShell-enable your server application.

Parallel Processing with NUMA

The 64-bit versions of Windows 7 and Windows Server 2008 R2 support more than 64 Logical Processors (LP) on a single computer. New processors are now appearing that leverage non-uniform memory access (NUMA) architectures.

Apps scaling beyond 8-16 logical processors should be NUMA aware.

Many high-end server-class solutions may need to be architected with NUMA awareness in order to achieve linear performance scaling on such systems. Parallel Computing and High Performance Computing solution developers may also find NUMA awareness essential for performance scalability.

For more information, see New NUMA Support with Windows Server 2008 R2 and Windows 7.

You can learn more about NUMA processing from a series of Webcasts on Channel 9:

For all developers, additional Visual Studio 2010 will make it easier to write and debug your parallel code. Watch for:

  • Visual Studio IDE support for parallel programming
  • Parallel Pattern Library: Native C++ libraries that use lambda functions and align well with STL
  • Parallel Extensions to the .NET Framework: Library-based support for imperative data and task parallelism, declarative data parallelism, and work coordination and managing shared state
  • Concurrency Runtime: Resource management of the multicore hardware and task scheduling
  • Tools: Parallel debugging windows and profiling views

For more information, see a WebCast on May 28, 9 am Pacific (noon Eastern) Windows Server 2008 R2, NUMA and UMS APIs.

PowerShell 2.0

The PowerShell “shell” is really just a user-interface (cmd line, GUI, or custom interface) over a sophisticated automation system.

PowerShell version 2 includes significant new features and functionality. PowerShell offers interesting scenarios for your customers include remote execution, an integrated graphical development and runtime shell with localization capability, transactions, and background jobs.

Once you enable your application methods to be called by PowerShell, your customers can connect your application to others using scripting, do batch processing, self-service data import and export. When you build your application’s configuration tools to call PowerShell scripts, it also makes it easier for your customers to deploy your application, then script the configuration remotely.

And it helps your development efforts so you can script your tests easier. You can take the results of one query and pipe them to the next, checking your data and business rules along the way, all in PowerShell script.

For more information, see PowerShell V2 demonstrated on Channel 9. Sample scripts are available at PowerShell V2 Features and Resources. For more information about how to enable your application to support PowerShell, see Windows PowerShell Programmer's Guide.

Windows Web Services

The Windows Web Services API (WWSAPI) is a new "minimalist" web services endpoint library available on Windows.  Use Windows Web Services whenever the following requirements must be met:

  1. Native Code is a must

  2. A very low number of dependencies is desired

  3. Startup time is a very important factor

  4. Memory constraints are faced

With the Windows Web Services API (WWSAPI), you can connect your client applications with web services as well as implement web services. This API, new with Windows 7 (client) and Windows Server 2008 R2 (server), is a native-code implementation of WS-* family of protocols for SOAP based web services. It enables several solution scenarios including:

  • The ability to build web services in native C/C++ code on both Windows client and server.
  • Achieve interoperability with web services implemented using Windows Communication Foundation, ASP.NET XML Web Services, and even services implemented using non-Microsoft implementations of WS-* protocols.
  • The ability to build web services with minimal service startup time and minimal working-set dependencies.
  • The ability to use web services in resource-constrained deployment environments.

For a demonstration project for WWSAPI see Implement Web Services with the Windows Web Services API.   For a  walk-thru by the WWSAPI development team, see Demo of native code client to WCF services and native code web service using Windows Web Service API.  Learn more about WWSAPI at the MSDN Online Library.

Background Services & Tasks

Inefficient background activity has a dramatic impact on system performance, power consumption, responsiveness, and memory footprint. You'll want to use best practices for background process design and dives deep on the capabilities of the Service Control Manager (SCM) and Task Scheduler.

Windows Services are for those pieces of code that are continuously running. Typically there is no user session and you may want to specify a dependency of some other code that is running. Windows Tasks are short duration activates that take action on take action on user login and are standalone executable.

The goal of Windows platform is to improve performance, security, power consumption. Does your service have to run all the time? You’ll want to give your background activity the minimum security privileges. So you’ll want to retire “old” XP-style services and look to:

  • Delay auto-start services
  • Trigger-start services
  • Schedule tasks

For more information, see Windows 7: Designing Efficient Background Processes.

Background Intelligent Transfer Service (BITS)

Need to move lots of information between servers or between your server and client? BITS is your answer. This is an in-the-box Windows file transfer service that supports both download and upload. Windows / Microsoft update is built on BITS and is used by over 600 million users worldwide.

BITS provides a very simple way to reliably and politely transfer files over HTTP/HTTPS. For more information about the API and how you can access BITS from your application, see About BITS.

Resources

There are lots of resources to get started leveraging the new features in Windows Server 2008 R2.

The Windows Server 2008 Developer Training Kit includes a set of hands-on-labs and presentations for technologies such as IIS7, Management, WCF, WF, Windows CardSpace, Windows PowerShell, Virtualization and the Transactional File System (TxF).