Windows Server 2008 for Developers - Part 2


Published on

Windows Server 2008 will be launched in Q1 2008. Come and learn what’s new in this release for developers.


Whether you are building Web applications or writing core server-based system services, Windows Server 2008 provides many new features that you can leverage to build more secure, flexible, and innovative applications. In this 2-session event we will go through the “Top 7 Ways to Light Up Your Apps on Windows Server 2008”. Demos will include IIS7, PowerShell, Transactional File System (TxF), restart/recovery APIs plus more.

For more details and the original slidedeck visit

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Windows Server 2008 for Developers - Part 2

    1. 1. for Developers Daniel Moth Developer and Platform Group Microsoft
    2. 2. AGENDA <ul><li>Top 7 Ways To “Light Up” Your Apps on Windows Server 2008 </li></ul><ul><li>Part 1 emphasis on </li></ul><ul><ul><li>IIS7, PowerShell </li></ul></ul><ul><li>Part 2 emphasis on </li></ul><ul><ul><li>WER, Restart and Recovery APIs, TxF </li></ul></ul>
    3. 3. 1. Build More Flexible Web Apps
    4. 4. 2. Design Highly-Manageable Apps
    5. 5. 3. Develop Federation-Aware Apps
    6. 6. 4. Build Connected Systems
    7. 7. The Top 7 Ways… Part 2 <ul><li>Build More Flexible Web Applications </li></ul><ul><li>Design Highly-Manageable Applications </li></ul><ul><li>Develop Federation-Aware Applications </li></ul><ul><li>Build Connected Systems </li></ul><ul><li>Build For Scalability </li></ul><ul><li>Develop More Reliable Applications </li></ul><ul><li>Virtualize </li></ul>
    8. 8. 5. Build For Scalability
    9. 9. Native Threading Enhancements in Windows Vista and Windows Server 2008 <ul><li>Thread Pools </li></ul><ul><li>One-Time Initialization </li></ul><ul><li>Slim Reader/Writer Lock </li></ul><ul><li>Condition Variables </li></ul><ul><li>Thread Ordering Service </li></ul><ul><li>Wait Chain Traversal </li></ul>
    10. 10. Thread Pool in Vista and Server 2008 <ul><li>Re-architected Thread Pool </li></ul><ul><ul><li>Simpler, more reliable, higher performance </li></ul></ul><ul><ul><li>Does not use a timer thread </li></ul></ul><ul><ul><li>Single queue </li></ul></ul><ul><ul><li>Dedicated persistent thread </li></ul></ul><ul><ul><li>Clean-up groups </li></ul></ul><ul><ul><li>Single worker thread type (both I/O and non-I/O) </li></ul></ul><ul><ul><li>Multiple pools per process </li></ul></ul><ul><ul><li>More flexible API </li></ul></ul>
    11. 11. Feature Original API Current API Synch RegisterWaitForSingleObject UnregisterWaitEx CloseThreadpoolWait CreateThreadpoolWait SetThreadpoolWait WaitForThreadpoolWaitCallbacks Work QueueUserWorkItem CloseThreadpoolWork CreateThreadpoolWork SubmitThreadpoolWork TrySubmitThreadpoolCallback WaitForThreadpoolWorkCallbacks Timer CreateTimerQueue CreateTimerQueueTimer ChangeTimerQueueTimer DeleteTimerQueueTimer DeleteTimerQueueEx CloseThreadpoolTimer CreateThreadpoolTimer IsThreadpoolTimerSet SetThreadpoolTimer WaitForThreadpoolTimerCallbacks I/O BindIoCompletionCallback CancelThreadpoolIo CloseThreadpoolIo CreateThreadpoolIo StartThreadpoolIo WaitForThreadpoolIoCallbacks Clean-up group CloseThreadpoolCleanupGroup CloseThreadpoolCleanupGroupMembers CreateThreadpoolCleanupGroup Pool CloseThreadpool CreateThreadpool SetThreadpoolThreadMaximum SetThreadpoolThreadMinimum Callback environment DestroyThreadpoolEnvironment InitializeThreadpoolEnvironment SetThreadpoolCallbackCleanupGroup SetThreadpoolCallbackLibrary SetThreadpoolCallbackPool SetThreadpoolCallbackRunsLong Callback CallbackMayRunLong Callback clean up DisassociateCurrentThreadFromCallback FreeLibraryWhenCallbackReturns LeaveCriticalSectionWhenCallbackReturns ReleaseMutexWhenCallbackReturns ReleaseSemaphoreWhenCallbackReturns SetEventWhenCallbackReturns
    12. 12. One-Time Initialization <ul><li>Interlocked functions ensure that only one thread performs the initialization </li></ul><ul><li>One-time initialization is better </li></ul><ul><ul><li>Optimized for speed </li></ul></ul><ul><ul><li>Appropriate barriers are created on processor architectures that require them </li></ul></ul><ul><ul><li>Support for both locked and parallel initialization </li></ul></ul><ul><ul><li>No internal locking so the code can operate asynchronously or synchronously </li></ul></ul>
    13. 13. One Time Init Steps <ul><li>BOOL WINAPI InitOnceBeginInitialize( </li></ul><ul><li>__inout LPINIT_ONCE lpInitOnce , __in DWORD dwFlags , __out PBOOL fPending , __out LPVOID* lpContext ); </li></ul><ul><li>BOOL WINAPI InitOnceExecuteOnce( </li></ul><ul><li>__inout PINIT_ONCE InitOnce , __in PINIT_ONCE_FN InitFn , __inout_opt PVOID Parameter , __out LPVOID* Context ); </li></ul><ul><li>BOOL WINAPI InitOnceComplete( </li></ul><ul><li>__inout LPINIT_ONCE lpInitOnce , __in DWORD dwFlags , __in LPVOID lpContext ); </li></ul><ul><li>BOOL CALLBACK InitOnceCallback( </li></ul><ul><li>__inout PINIT_ONCE InitOnce , __inout_opt PVOID Parameter , __out_opt PVOID* Context ); </li></ul>
    14. 14. Slim Reader/Writer Lock <ul><li>SRW locks – new synchronization primitive </li></ul><ul><ul><li>enable threads to access shared resources </li></ul></ul><ul><ul><li>optimized for speed </li></ul></ul><ul><ul><li>take very little memory </li></ul></ul><ul><ul><li>built on top of windows kernel keyed events </li></ul></ul><ul><li>Two modes </li></ul><ul><ul><li>Shared mode </li></ul></ul><ul><ul><ul><li>grants shared read-only access to multiple reader threads </li></ul></ul></ul><ul><ul><li>Exclusive mode </li></ul></ul><ul><ul><ul><li>grants read/write access to one writer thread at a time </li></ul></ul></ul>
    15. 15. SRW Lock APIs <ul><li>VOID WINAPI InitializeSRWLock( </li></ul><ul><li>__out PSRWLOCK SRWLock ); </li></ul><ul><li>VOID WINAPI AcquireSRWLockExclusive( </li></ul><ul><li>__inout PSRWLOCK SRWLock ); </li></ul><ul><li>VOID WINAPI ReleaseSRWLockExclusive( </li></ul><ul><li>__inout PSRWLOCK SRWLock ); </li></ul><ul><li>VOID WINAPI AcquireSRWLockShared( </li></ul><ul><li>__inout PSRWLOCK SRWLock ); </li></ul><ul><li>VOID WINAPI ReleaseSRWLockShared( </li></ul><ul><li>__inout PSRWLOCK SRWLock ); </li></ul>
    16. 16. Condition Variables <ul><li>Used to synchronize a group of threads based on the result of some conditional test </li></ul><ul><li>Enable threads to atomically release a lock and enter the sleeping state </li></ul><ul><li>Benefits </li></ul><ul><ul><li>Much clearer and less error-prone </li></ul></ul><ul><ul><li>Can be more efficient </li></ul></ul><ul><ul><ul><li>Tries to avoid trips to kernel mode (unlike WaitForSingleObject) </li></ul></ul></ul>
    17. 17. Condition Variable APIs <ul><li>VOID WINAPI InitializeConditionVariable( </li></ul><ul><li>__out PCONDITION_VARIABLE ConditionVariable ); </li></ul><ul><li>BOOL WINAPI SleepConditionVariableCS( </li></ul><ul><li>__inout PCONDITION_VARIABLE ConditionVariable , </li></ul><ul><li>__inout PCRITICAL_SECTION CriticalSection , </li></ul><ul><li>__in DWORD dwMilliseconds ); </li></ul><ul><li>BOOL WINAPI SleepConditionVariableSRW( </li></ul><ul><ul><li>__inout PCONDITION_VARIABLE ConditionVariable , </li></ul></ul><ul><ul><li>__inout PSRWLOCK SRWLock , </li></ul></ul><ul><ul><li>__in DWORD dwMilliseconds , </li></ul></ul><ul><ul><li>__in ULONG Flags ); </li></ul></ul><ul><li>VOID WINAPI WakeConditionVariable( </li></ul><ul><li>__inout PCONDITION_VARIABLE ConditionVariable ); </li></ul><ul><li>VOID WINAPI WakeAllConditionVariable( </li></ul><ul><li>__inout PCONDITION_VARIABLE ConditionVariable ); </li></ul>
    18. 18. Thread Ordering Service (TOS) <ul><li>TOS controls the execution of client threads </li></ul><ul><ul><li>Ensures that they run once and in order </li></ul></ul><ul><li>5 APIs – AvRt Xxxx ThreadOrderingGroup </li></ul><ul><ul><li>parent thread calls Create to set up the TOS </li></ul></ul><ul><ul><li>client threads call Join to join the TOS </li></ul></ul><ul><ul><li>all of them call Wait , run their code and Wait </li></ul></ul><ul><ul><li>...client threads call Leave when they are done </li></ul></ul><ul><ul><li>parent thread calls Delete to end it all </li></ul></ul>
    19. 19. TOS APIs - avrt.h <ul><li>BOOL WINAPI AvRt Create ThreadOrderingGroup( </li></ul><ul><li>__out PHANDLE Context, </li></ul><ul><li>__in PLARGE_INTEGER Period, </li></ul><ul><li>__inout GUID* ThreadOrderingGuid, </li></ul><ul><li>__in_opt PLARGE_INTEGER Timeout ); </li></ul><ul><li>BOOL WINAPI AvRt Join ThreadOrderingGroup( </li></ul><ul><li>__out PHANDLE Context, </li></ul><ul><li>__in GUID* ThreadOrderingGuid, </li></ul><ul><li>__in BOOL Before ); </li></ul><ul><li>BOOL WINAPI AvRt Wait OnThreadOrderingGroup( </li></ul><ul><li>__in HANDLE Context ); </li></ul><ul><li>BOOL WINAPI AvRt Leave ThreadOrderingGroup( </li></ul><ul><li>__in HANDLE Context ); </li></ul><ul><li>BOOL WINAPI AvRt Delete ThreadOrderingGroup( </li></ul><ul><li>__in HANDLE Context ); </li></ul>
    20. 20. Wait Chain Traversal (WCT) <ul><li>Enables debuggers to diagnose application hangs and deadlocks </li></ul><ul><li>“ Wait chain is an alternating sequence of threads and synchronization objects; each thread waits for the object that follows it, which is owned by the subsequent thread in the chain” </li></ul><ul><li>WCT supports the following </li></ul><ul><ul><li>ALPC, COM, Critical sections, Mutexes, SendMessage </li></ul></ul>
    21. 21. WCT APIs in Wct.h <ul><li>HWCT WINAPI OpenThreadWaitChainSession( __in DWORD Flags , __in_opt PWAITCHAINCALLBACK callback ); </li></ul><ul><li>BOOL WINAPI GetThreadWaitChain( __in HWCT WctHandle , __in_opt DWORD_PTR Context , __in DWORD Flags , __in DWORD ThreadId , __inout LPDWORD NodeCount , __out PWAITCHAIN_NODE_INFO NodeInfoArray , __out LPBOOL IsCycle ); </li></ul><ul><li>VOID WINAPI CloseThreadWaitChainSession( __in HWCT WctHandle ); </li></ul><ul><li>VOID CALLBACK WaitChainCallback( HWCT WctHandle , DWORD_PTR Context , DWORD CallbackStatus , LPDWORD NodeCount , PWAITCHAIN_NODE_INFO NodeInfoArray , LPBOOL IsCycle ); </li></ul><ul><li>typedef struct _WAITCHAIN_NODE_INFO { <SNIP> </li></ul>
    22. 22. Native Threading Enhancements in Windows Vista and Windows Server 2008 <ul><li>Thread Pools </li></ul><ul><li>One-Time Initialization </li></ul><ul><li>Slim Reader/Writer Lock </li></ul><ul><li>Condition Variables </li></ul><ul><li>Thread Ordering Service </li></ul><ul><li>Wait Chain Traversal </li></ul><ul><li>MSDN Magazine: Oct07, Jun07, Jul07 </li></ul>
    23. 23. 6. Develop More Reliable Apps
    24. 24. Windows Error Reporting & winqual <ul><li>New User Experience </li></ul><ul><ul><li>In addition to crashes, hangs are also detected </li></ul></ul><ul><ul><li>Privacy evaluation , Queuing and transport </li></ul></ul><ul><ul><li>Problem Reports and Solutions </li></ul></ul><ul><ul><li>Response management </li></ul></ul><ul><li>New Public APIs </li></ul><ul><ul><li>Adding additional file and memory data to a report (inc. minidump & heap information) </li></ul></ul><ul><ul><li>Create reports for custom events </li></ul></ul>
    25. 25. WER, Restart, Recovery
    26. 27. Restart API <ul><li>Register to be restarted after fatal problems </li></ul><ul><ul><li>Registration also used for Restart Manager </li></ul></ul><ul><ul><ul><li>Restarts process after patch installation </li></ul></ul></ul><ul><ul><li>All applications should support restart </li></ul></ul><ul><ul><ul><li>Especially if support document recovery </li></ul></ul></ul><ul><li>How it works </li></ul><ul><ul><li>Register command-line that should be called every execution </li></ul></ul><ul><ul><ul><li>HRESULT RegisterApplicationRestart (IN PCWSTR pwzCommandline, DWORD dwFlags) </li></ul></ul></ul><ul><ul><li>After fatal event is reported, app is restarted </li></ul></ul><ul><ul><ul><li>Fatal events block user tasks </li></ul></ul></ul><ul><ul><ul><li>Automatically restarting saves users from having to re-open the application </li></ul></ul></ul>
    27. 28. Recovery APIs <ul><li>Attempt to recover data after a fatal event </li></ul><ul><ul><li>Users should not lose any work to an app bug </li></ul></ul><ul><li>How it works </li></ul><ul><ul><li>1. App registers a “recovery callback” every execution </li></ul></ul><ul><ul><ul><li>HRESULT RegisterApplicationRecoveryCallback (IN RECOVERY_ROUTINE RecoveryRoutine, IN PVOID pvParameter) </li></ul></ul></ul><ul><ul><li>2. Recovery routine called after data collection </li></ul></ul><ul><ul><ul><li>Application’s code attempts to recover user work </li></ul></ul></ul><ul><ul><ul><ul><li>Flush to disk, repair on next run of application </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Repair data in memory, save to disk </li></ul></ul></ul></ul><ul><ul><ul><li>Need to call RecoveryInProgress() every 5 seconds to heartbeat </li></ul></ul></ul><ul><ul><ul><li>Call RecoveryFinished() to signal recovery is completed </li></ul></ul></ul>
    28. 29. Restart Manager Overview <ul><li>With the Restart Manager technology installers can </li></ul><ul><li>Automatically shutdown only the applications and services holding a file to be updated </li></ul><ul><li>When available, leverage specific application functionality to restore the user to the state they were in before the restart </li></ul><ul><li>When a reboot cannot be avoided, automatically re-launch apps after reboot </li></ul>
    29. 30. Restart Manager
    30. 31. Restart Manager, Call to Action <ul><li>Installer software </li></ul><ul><ul><li>call the Restart Manager APIs </li></ul></ul><ul><li>Applications and Services </li></ul><ul><ul><li>Restart Manager &quot;aware” </li></ul></ul>
    31. 32. Transactional NTFS <ul><li>Windows Vista and Windows Server 2008 </li></ul><ul><li>Does what it says on the tin </li></ul><ul><li>System.Transactions.dll + PInvoke </li></ul>
    32. 33. Transactional Platform <ul><li>Kernel Transaction Manager (KTM) </li></ul><ul><ul><li>Makes transactions available as kernel objects </li></ul></ul><ul><ul><li>Provides transaction management services to system components such as TxF </li></ul></ul><ul><ul><li>Can communicate with DTC to enable distributed transactions </li></ul></ul><ul><li>Transactional NTFS (TxF) </li></ul><ul><ul><li>Integrates transactions directly into the NTFS file system </li></ul></ul><ul><li>Transactional Registry (TxR) </li></ul><ul><ul><li>Integrates transactions directly into the Registry </li></ul></ul>
    33. 34. Transactional NTFS (TxF) KTM CLFS NTFS Registry Kernel KtmRm KtmW32 DTC Native Managed System.Tx LTM WS-* WCF MSMQ SQL
    34. 35. TxF
    35. 36. 7. Virtualize
    36. 37. Hosted Virtualization Products <ul><li>Microsoft Virtual PC 2007 </li></ul><ul><ul><li>Over 3.5 million downloads </li></ul></ul><ul><ul><li>Support for Windows Vista as a host and guest </li></ul></ul><ul><ul><li>64-bit host support </li></ul></ul><ul><ul><li>Improved performance </li></ul></ul><ul><ul><li>Support for Intel VT and AMD-V </li></ul></ul><ul><li>Microsoft Virtual Server 2005 R2 SP1 </li></ul><ul><ul><li>Support for Intel VT and AMD-V </li></ul></ul><ul><ul><li>Support for SLES 10 </li></ul></ul><ul><ul><li>VSS integration for live backup of running virtual machines </li></ul></ul><ul><ul><li>VHD mounting tool for offline servicing </li></ul></ul><ul><ul><li>Improved performance </li></ul></ul><ul><ul><li>Improved scalability: 512 VMs on x64 systems </li></ul></ul>
    37. 38. Microsoft Virtualization Products Server Virtualization Application Virtualization Desktop Virtualization Presentation Virtualization Management A comprehensive set of virtualization products, from the data center to the desktop Assets – both virtual and physical – are managed from a single platform Centralized Desktop Hyper-V Server
    38. 39. Virtualization Benefits Server consolidation Business Continuity Flexibility Utilization
    39. 40. Hyper-V <ul><li>Flexible and dynamic virtualization solution </li></ul><ul><li>A role of Windows Server 2008 (Std, EE, DC) </li></ul><ul><ul><li>Can be a full role with local UI or Server Core role </li></ul></ul><ul><li>Hypervisor based architecture </li></ul><ul><li>Managed by Microsoft System Center </li></ul><ul><li>Also provided as a standalone server </li></ul><ul><ul><li>Microsoft Hyper-V Server ($28) </li></ul></ul>Codename &quot;Viridian&quot;, Windows Server Virtualization
    40. 41. Windows Server Core role <ul><li>Server Core </li></ul><ul><ul><li>Minimal Installation option in all x86/x64 editions </li></ul></ul><ul><ul><li>Command line interface only, no GUI shell </li></ul></ul><ul><ul><li>Provides essential server functionality </li></ul></ul><ul><ul><li>Deployed for a single role </li></ul></ul><ul><ul><ul><li>No need to deploy and service the whole OS </li></ul></ul></ul><ul><li>Benefits </li></ul><ul><ul><li>Less code results in fewer patches and servicing burden </li></ul></ul><ul><ul><li>Low surface area targeted for server roles </li></ul></ul><ul><ul><li>More secure and reliable with less management </li></ul></ul>
    41. 42. Virtualization and High Availability <ul><li>Traditional Non-Virtualized Environment </li></ul><ul><ul><li>Downtime is bad, but affects only one workload </li></ul></ul><ul><li>Virtualized Environment </li></ul><ul><ul><li>Value of the physical server goes up </li></ul></ul><ul><ul><li>Downtime is far worse because multiple workloads are affected </li></ul></ul>Virtualization and High-Availability Go Hand in Hand
    42. 43. Microsoft Hyper-V High Availability <ul><li>Planned downtime </li></ul><ul><ul><li>More common than unplanned </li></ul></ul><ul><ul><li>Quickly move virtualized workloads in order to service underlying hardware </li></ul></ul><ul><li>Unplanned downtime </li></ul><ul><ul><li>Not as common and more difficult </li></ul></ul><ul><ul><li>Automatic failover to other nodes </li></ul></ul><ul><ul><ul><li>hardware or power failure </li></ul></ul></ul>
    43. 44. Quick Migration Fundamentals Planned Downtime <ul><li>Save state </li></ul><ul><ul><li>Save entire virtual machine state </li></ul></ul><ul><li>Move virtual machine </li></ul><ul><ul><li>Move storage connectivity from origin to destination host </li></ul></ul><ul><li>Restore state and Run </li></ul><ul><ul><li>Restore virtual machine and run </li></ul></ul>Network Connectivity Shared Storage VHDs
    44. 45. Quick Migration – Planned Downtime <ul><li>Active server requires servicing </li></ul><ul><li>Move virtualized workloads to a standby server </li></ul><ul><li>~4 seconds downtime per virtual machine </li></ul>VHDs on SAN Domain Controller Storage Connectivity Virtualization Servers (3 + 1 Servers) System Center Virtual Machine Manager Windows Server 2008 Failover Cluster Manager Ethernet
    45. 46. Quick Migration – Unplanned Downtime <ul><li>Active server loses power </li></ul><ul><li>Virtual machines automatically restart on the next cluster node </li></ul><ul><li>If there is not enough memory, the failover automatically moves to the next node until done </li></ul>VHDs on SAN Domain Controller Storage Connectivity Virtualization Servers (3 + 1 Servers) System Center Virtual Machine Manager Windows Server 2008 Failover Cluster Manager Ethernet
    46. 47. Quick Migration – How Quick Is It? Disc / VM Memory 1 GbE iSCSI 2 Gb FC 4 Gb FC 512 MB ~8 seconds ~ 4 seconds ~2 seconds 1 GB ~16 seconds ~8 second ~ 4 seconds 2 GB ~32 seconds ~16 seconds ~8 seconds 4 GB ~64 seconds ~32 seconds ~16 seconds 8 GB ~2 minutes ~64 seconds ~32 seconds
    47. 48. Terminology <ul><li>Hypervisor </li></ul><ul><ul><li>A piece of software that provides the ability to run multiple operating systems on one piece of hardware </li></ul></ul><ul><ul><li>Ensures that the CPU and hardware answer the *correct* OS </li></ul></ul><ul><ul><li>Microkernelized or Monolithic </li></ul></ul><ul><li>Hyper-V </li></ul><ul><ul><li>A role you can install in Windows that includes the Hypervisor as well as management software </li></ul></ul><ul><li>Partition </li></ul><ul><ul><li>An “operating system” to the hypervisor </li></ul></ul><ul><li>Virtual Machine </li></ul><ul><ul><li>A “child” partition </li></ul></ul>
    48. 49. Hyper-V Overview <ul><li>Windows Hypervisor </li></ul><ul><li>Powerful virtualization built into the Windows platform </li></ul>Virtualization Platform and Management <ul><li>Management tools </li></ul>VM 2 “Child” VM 1 “Parent” VM 2 “Child”
    49. 50. Hyper-V Architecture Parent Partition Child Partitions Kernel Mode User Mode Applications “ Designed for Windows” Server Hardware Virtualization Service Providers (VSPs) Windows Kernel Server Core IHV Drivers Virtualization Service Clients (VSCs) Windows Kernel Enlightenments VMBus Windows hypervisor Virtualization Stack VM Worker Processes VM Service WMI Provider Provided by: Windows ISV OEM Hyper-V
    50. 51. Example VSP/VSC Design Parent Partition Child Partitions Kernel Mode Provided by: Windows ISV OEM Hyper-V Hardware User Mode Windows hypervisor Applications VMBus Windows File System Volume Partition Disk Fast Path Filter (VSC) iSCSIprt Virtual Storage Miniport (VSC) Virtual Storage Provider (VSP) StorPort StorPort Miniport VM Worker Process Disk
    51. 52. Monolithic vs. Microkernelized <ul><li>Monolithic hypervisor </li></ul><ul><ul><li>Simpler than a modern kernel, but still complex </li></ul></ul><ul><ul><li>Contains its own drivers model </li></ul></ul><ul><li>Microkernelized hypervisor </li></ul><ul><ul><li>Simple partitioning functionality </li></ul></ul><ul><ul><li>Increase reliability and minimize TCB </li></ul></ul><ul><ul><li>No third-party code </li></ul></ul><ul><ul><li>Drivers run within guests </li></ul></ul>VM 1 (“Admin”) VM 3 Hypervisor VM 2 Hardware Microkernelized Hypervisor has an inherently secure architecture with minimal attack surface Hardware Hypervisor VM 2 (“Child”) VM 3 (“Child”) Virtual- ization Stack VM 1 (“Parent”) Drivers Drivers Drivers Drivers Drivers Drivers Drivers Drivers Drivers Drivers Drivers Drivers VMware ESX Approach Hyper-V Approach
    52. 53. Virtual Server 2005 vs. Hyper-V
    53. 54. Hyper-V Features and Abilities <ul><li>Performance </li></ul><ul><ul><li>Hypervisor </li></ul></ul><ul><ul><li>Synthetic Drivers </li></ul></ul><ul><ul><li>Server Core </li></ul></ul><ul><li>Flexibility </li></ul><ul><ul><li>Multi-architecture </li></ul></ul><ul><ul><li>Multi-OS VM’s </li></ul></ul><ul><li>Manageability </li></ul><ul><ul><li>Managed through WMI (PowerShell) </li></ul></ul><ul><ul><li>SCVMM </li></ul></ul><ul><ul><li>Windows </li></ul></ul>
    54. 55. Interoperability & Standards <ul><li>VHD (Virtual Hard Disk) </li></ul><ul><ul><li>VHD specification is freely available under Open Specification Promise (OSP) </li></ul></ul><ul><ul><li>VHD TestDrive program for ISVs </li></ul></ul><ul><li>Standards based management APIs </li></ul><ul><ul><li>DMTF defining industry standard model for VM management </li></ul></ul><ul><ul><li>Hyper-V uses this model </li></ul></ul><ul><li>Hypervisor hypercall API </li></ul><ul><ul><li>Preliminary documentation available under OSP </li></ul></ul><ul><ul><li>Final version will be at RTM </li></ul></ul>
    55. 56. Interoperablity & 3rd Party OS Support <ul><li>Linux </li></ul><ul><ul><li>Working with XenSource </li></ul></ul><ul><ul><ul><li>Developing adapter layer to map Xen hypercall API to Hyper-V hypercall API </li></ul></ul></ul><ul><ul><ul><li>Developing disk and networking drivers (VSCs) to integrate with the new I/O architecture </li></ul></ul></ul><ul><ul><li>Working with Novell </li></ul></ul><ul><ul><ul><li>Interoperability and joint support for Windows Server and Novel SUSE Linux Enterprise Server 10 </li></ul></ul></ul><ul><ul><li>Support for Linux on Hyper-V </li></ul></ul><ul><li>Solaris </li></ul><ul><ul><li>Working with Sun to support Solaris on Hyper-V </li></ul></ul>
    56. 57. Industry Leadership In Licensing Windows Server Enterprise/Datacenter Includes 4/Unlimited virtual instances Windows Vista (Software Assurance Customer Benefit) Allows Vista Enterprise Centralized Desktop deployments Licensing per Virtual Processor SQL Server, BizTalk Server, etc. Instance Based Licensing Will enable new usage models Demo Distribution of Virtual Images
    57. 58. Virtualization Investments Management Interoperability Applications Licensing Infrastructure
    58. 59. Summary <ul><li>Build More Flexible Web Applications </li></ul><ul><li>Design Highly-Manageable Applications </li></ul><ul><li>Develop Federation-Aware Applications </li></ul><ul><li>Build Connected Systems </li></ul><ul><li>Build For Scalability </li></ul><ul><li>Develop More Reliable Applications </li></ul><ul><li>Virtualize </li></ul>
    59. 60. MSDN in the UK <ul><li>Visit </li></ul><ul><ul><li>Newsletter </li></ul></ul><ul><ul><li>Events </li></ul></ul><ul><ul><li>Screencasts </li></ul></ul><ul><ul><li>Blogs </li></ul></ul>