SlideShare a Scribd company logo
סקר טכנולוגי לירן זילכה מנכ " ל משותף [email_address]
Aluna Israel’s leading Java/JavaEE and SOA consulting company Customers:
Agenda IT concepts: SOA Cloud Computing Products: SQL Server 2008 VSTS Development Technologies: WPF (XAML) Silverlight WCF
SOA
From Objects to Services Polymorphism Encapsulation Subclassing Message-based Schema+Contract Binding via Policy 1980s 2000s Interface-based Dynamic Loading Runtime Metadata 1990s Object-Oriented Service-Oriented Component-Based
Benefits of Service Orientation Facilitates implementation/platform interop Independent deployment, versioning, mgmt Promotes technology reuse
The Challenge - Radically Simplifying Distributed Application Development Development of connected systems remains costly and frustrating  Different programming models for different tasks Need for security and reliable messaging Interoperability with applications on other platforms Productive service-oriented programming model needed
Cloud Computing
Questions What is cloud computing? Horizontal and functional services What’s it going to change? Software business models, science, life How many clouds will there be? 1, 2, 3,  infinity   What’s new in cloud computing? HPC grids, ASPs, hosted services, Multics (!) Emerging “cloud stack” to support a broad class of programs, including data intensive applications
Living in the Clouds We want to start a new website, FredsList.com Our site will provide listings of items for sale, jobs, etc. As time goes on, we’ll add more features And illustrate how more cloud capabilities (and corresponding infrastructure components) are used as needed List of capabilities/components is illustrative, not exhaustive Our cloud provides a “dataset” abstraction FredsList doesn’t worry about the underlying components
Step 1: Listings Scenario Simple Web Service API’s  Database PNUTS FredsList.com application   1234323, transportation, For sale: one bicycle, barely used FredsList wants to store listings as (key, category, description) 5523442, childcare,  Nanny available in San Jose 215534,  wanted,  Looking for issue 1 of Superman comic book DECLARE DATASET Listings AS ( ID String PRIMARY KEY, Category String, Description Text )
Step 2: System Evolution Simple Web Service API’s  Database PNUTS FredsList.com application   1234323, transportation, For sale: one bicycle, barely used Fred belatedly realizes prices are useful information! 5523442, childcare,  Nanny available in San Jose 215534,  wanted,  Looking for issue 1 of Superman comic book ALTER DATASET Listings ADD (Price Float) Schemas are flexible, and evolve 32138,  camera,  Nikon D40, USD 300 Not every record in a dataset has values defined  for all fields declared for the dataset  vs.
Step 3: Search Simple Web Service API’s   Database PNUTS “ bicycle” FredsList’s customers quickly ask for keyword search Search Vespa “ dvd’s” “ nanny” FredsList.com application  ALTER Listings SET Description SEARCHABLE Messaging Tribble Federation of systems offering different capabilities
Step 4: Photos Simple Web Service API’s   Database PNUTS FredsList decides to add photos/videos to listings Search Vespa Storage MObStor Foreign key photo -> listing FredsList.com application   ALTER Listings ADD Photo BLOB Messaging Tribble Federation of systems offering different performance points
Step 5: Data Analysis Simple Web Service API’s   Database PNUTS FredsList wants to analyze its listings to get statistics about category, do geocoding, etc. Search Vespa Storage MObStor Foreign key photo -> listing FredsList.com application  ALTER Listings MAKE ANALYZABLE Compute Grid Batch export Pig query to analyze categories Hadoop program to geocode data Hadoop program to generate fancy pages for listings Messaging Tribble
Step 6: Performance Simple Web Service API’s   Database PNUTS FredsList wants to reduce its data access latency Search Vespa Messaging Tribble Storage MObStor Foreign key photo -> listing FredsList.com application   ALTER Listings MAKE CACHEABLE Compute Grid Batch export Caching memcached And by now, Fred is global, and wants geo-replication!
Data Serving vs. Analysis Very different workloads, requirements Data from serving system is one of many kinds of data (click streams are another common kind, as are syndicated feeds) to be analyzed and integrated The result of analysis often goes right back into serving system
Why Clouds? On-demand infrastructure to create a fundamental shift in the OE curve: Do things we can’t do Build more robustly, more efficiently, more globally, more completely, more quickly, for a given budget Cloud services should do heavy lifting of heavy-lifting of scaling & high-availability Today, this is done at the app-level, which is not productive
Requirements for Cloud Services Multitenant. A cloud service must support multiple, organizationally distant customers.  Elasticity. Tenants should be able to negotiate and receive resources/QoS on-demand. Resource Sharing. Ideally, spare cloud resources should be transparently applied when a tenant’s negotiated QoS is insufficient, e.g., due to spikes. Horizontal scaling. It should be possible to add cloud capacity in small increments; this should be transparent to the tenants of the service.
Requirements for Cloud Services Metering. A cloud service must support accounting that reasonably ascribes operational and capital expenditures to each of the tenants of the service.  Security. A cloud service should be secure in that tenants are not made vulnerable because of loopholes in the cloud. Availability. A cloud service should be highly available. Operability. A cloud service should be easy to operate, with few operators. Operating costs should scale linearly or better with the capacity of the service.
Types of Cloud Services Two kinds of cloud services: Horizontal (“Platform”) Cloud Services Functionality enabling tenants to build applications or new services on top of the cloud Functional Cloud Services  Functionality that is useful in and of itself to tenants. E.g., various SaaS instances, such as Saleforce.com; Google Analytics and Yahoo!’s IndexTools; Yahoo! properties aimed at end-users and small businesses, e.g., flickr, Groups, Mail, News, Shopping  Could be built on top of horizontal cloud services or from scratch Yahoo! has been offering these for a long while (e.g., Mail for SMB, Groups, Flickr, BOSS, Ad exchanges)
Horizontal Cloud Services Horizontal cloud services are foundations on which tenants build applications or new services. They should be: Semantics-free. Must be "generic infrastructure,” and not tied to specific app-logic.  May provide the ability to inject application logic through well-defined APIs Broadly applicable. Must be broadly applicable (i.e., it can't be intended for just one or two properties).  Fault-tolerant over commodity hardware.  Must be built using inexpensive commodity hardware, and should mask component failures. While each cloud service provides value, the power of the cloud paradigm will depend on a collection of well-chosen, loosely coupled services that collectively make it easy to quickly develop and operate innovative web applications.
What’s in the Horizontal Cloud? Shared  Infrastructure Horizontal Cloud Services Edge Content Services e.g., YCS, YCPI Provisioning & Virtualization e.g., EC2  Batch Storage & Processing e.g., Hadoop & Pig Operational Storage e.g., S3,  MObStor, Sherpa Other Services Messaging, Workflow, virtual DBs & Webserving Simple Web Service API’s  Common Approaches to QA, Production Engineering, Performance Engineering, Datacenter Management, and Optimization ID & Account Management Monitoring & QoS Metering, Billing, Accounting Security
Web Data Management Large data analysis (Hadoop) Structured record storage (PNUTS/Sherpa) Blob storage (SAN/NAS) Scan oriented workloads Focus on sequential disk I/O $ per cpu cycle CRUD  Point lookups and short scans Index organized table and random I/Os $ per latency Object retrieval and streaming Scalable file storage $ per GB
The World Has Changed Web serving applications need: Scalability! Preferably elastic Flexible schemas Geographic distribution High availability Reliable storage Web serving applications can do without: Complicated queries Strong transactions
SQL Server 2008
SQL Server 2008
Enterprise Data Platform Policy-Based Management Management of multiple SQL Server instances from a single location. Create policies that control security, database options, object naming conventions, and other settings at a highly granular level.  Data Collector Collect, store, and view performance data automatically.  It collects disk usage, server activity, and query statistics data, which it loads in a management data warehouse and performance data can be reviewed in SQL Server Management Studio or by using third-party tools.
Enterprise Data Platform – Cont’ Data compression Resource Governor Allocate resource to high profile applications Database files encryption Auditing
Development MERGE support Allows easy merge of data for Data Warehouses Language Integrated Query (LINQ) A .NET Framework version 3.5 feature that provides developers with a common syntax to query any data source from client applications.  Using LINQ to SQL or LINQ to Entities, developers can select, insert, update, and delete data that is stored in SQL Server 2008 databases using any .NET programming language
Development – Cont’ Change Data Capture (CDC) Allows you to track changes in the database (insert/update/delete) and store them in a table, for use in Data Warehouses ADO.NET Entity Framework An ORM solution, much like Nhibernate ADO.NET Data Services  A data access infrastructure for Internet applications by enabling Web applications to expose SQL Server data as a service that can be consumed by client applications in corporate networks and across the Internet.
Non Relational Data Spatial support Full text search Large user defined types Better XML support
Visual Studio Team System
VSTS ALM Solution Excel Project Operations, QA and Help Desk Non-Microsoft Developer Team System Web Access
Facilitate Team Collaboration Approachable and intuitive products Tight integration across tools, process and roles Single integrated server for greater communication and collaboration Tailored tools for each role Greater team productivity
Team System Architecture Dev Team  (Local) Dev Team (Remote) Business User Build Server Version Control Proxy (Remote) Active Directory TCP/IP HTTP / S Win 2003 Server SQL Server 2005 IIS 6.0 Team Foundation Server
Process Enacted By Tooling Choose process when creating a new project
Process IS important in TFS Take your process/methodology and use it Does not need to be heavy process Grab processes from elsewhere Eg: SCRUM Easily Customizable through Process Templates
Process Templates: Make the entire system work the way you want it to work: Define your (bug, etc) definition, your terms, your form layout, and workflow Create your own process guidance easily Create your own look and feel for a collaboration portal Include all of your document templates, other artifacts Include your own roles and security settings Include your own reporting
Team Foundation Server A single, integrated server  for team collaboration: Team Portal – SharePoint site for team collaboration Change Management – flexible work item tracking system for requirements, change requests, bugs, issues and other work items Project Management – manage project resources, timelines and quality  Version Control – robust version control system for all project artifacts, including branching, change sets, and shelving Build Server – automate team project build, analysis, testing Reporting – central data warehouse for real-time project metrics and analytics
Team Explorer Common integrated client to access: Work Items Documents Reports Team Builds Source Code Control Single team view of all project artifacts Fully integrated into Visual Studio 2005 Available as stand-alone for business analysts, project managers and other team members
Web Access Browser-based access to Project Dashboard Documents Reports Work Item Tracking Source Code Control Single team view of all project artifacts Includes Source Control search capabilities ASP.NET 2.0 Solution Free Download!
Some Adoption Scenarios Replace Source Control (Replace SourceSafe) Need to track bugs, etc. Want to have a build server to handle promotion management Need to work towards audit requirements Support for distributed teams
Compliance and Audit TFS supports this easily: Process Guidance details how you work Work Items provide a granular audit trail Reports used to supplement this TFS does all (or most of) the work for you.
Compliance And Auditing Capturing evidence does not have to be a manual process, ...
Compliance And Auditing … because there is a complete audit trail on all the tasks, code, and tests.
Integrated Project Portal Customizable SharePoint portal for team collaboration
Business Requirements Business requirements captured and managed to enable end-to-end traceability
Project Planning Full integration into Microsoft Project for a real-time view of work items
Team Explorer Access work items, project documents, reports, builds and source control from one location
Web Access Access work items, project documents, reports, builds and source control any browser!
Work Item Association Associate work items with each check-in to provide traceability from  requirements to code
Check-In Policies Policies enforced by tooling reinforce good development practices
Managing Work Items Manage and analyze work items using Microsoft Excel
Database Change Management A new offline Database project allows you to work with your database schema offline while full integration with TFS allows you to manage and version these changes Rename refactoring makes it easy to make changes to your database schema
Build And Deployment Build verification test results as part of the build process Who checked in what?
What Requirements Haven’t Been Tested? Tracks progression of requirements’ states from untested to passed by successive build
How Far Can We Get In The Available Time? Work completed Work  planned
Where Do We Need To Shift Resources? Bulge in work in process (i.e. in testing) indicates inadequate resources or inadequate incoming quality
Scope Creep “ Dark matter” emerging during iteration Planned work is squeezed out
How Effective Is Our Team? Test rates (pass, inconclusive, fail) shown in bars Against code coverage, … code churn, … and active bugs
Inadequate Unit Testing Falling code coverage Fewer passing and more inconclusive tests Rising code churn
Integration with Project Server Project Server 2007 VSTS Connector  available on CodePlex
Workspaces Workspaces provide Isolated areas A single PC can have many workspaces Workspaces are a powerful tool with branching
Branching Allows parallel development But for anything that you  don't want  to service or patch, labelling is sufficient.   For a release that you  do want  to service or patch, branching is the way to go.  Using merging, you can move changes between branches.
Branching
Using the TFS API Team Explorer installs all the DLLs are in the GAC, but doesn’t registered them for Visual Studio Can write own desktop clients to do anything you can in Team Explorer or the command line
Other Cool Tools SVNBridge – Allows SubVersion client to access TFS Conchango’s Scrum Project Guidance Pack Personify Design’s TeamLook Outlook Addin  Microsoft Israel’s Team System Outlook Addin TeamPrise Client Suite – TFS access from Macs, Linux and  Eclipse IDE NB  all clients still need a Team Explorer
TFS & VSS Differences Architecture TFS: client/server, VSS: client-side Security Windows/AD vs. VSS based security Reliability VSS database integrity can be compromised TFS uses SQL Server Scalability TFS can support up to 2000 user per instance and data size is limited only by physical media & SQL Server limits ( in the terabytes)
TFS & VSS Differences TFS does NOT perform a “get latest” on checkout “ get latest” and “check out” are 2 separate ops “ get latest” is explicit in TFS, controlled by the user Provides a consistent snapshot of code TFS does NOT add a file until checked in
Migration from VSS to TFS VSSConverter migration tool Imports VSS repository into TFS Command line interface Can migrate most VSS repositories easily VSS Shared files are copied VSS Pinned items are labeled as “PINNED” in TFS
Visual Studio 2008 Administration Share Point 2007 support Enable use of a separate Share Point farm. Support for SQL Named Instances  “ Longhorn” server support  Sync Large Groups  (~30,000 or more) Installation on a domain controller Non-default ports & web sites  Simplify installation  Upgrade from TFS 2005
Visual Studio 2008 Version Control Add support for checkin policy overrides to the warehouse (an oversight from V1). Annotate & Folder Diff  Destroy  Get Latest On Checkout  Workspace improvements  Performance & Scale improvements  Migration toolkit between TFS and other systems
Visual Studio 2008 Build Support multi-threaded builds with the new MSBuild.  Continuous Integration Improved ability to specify what source, versions of source, and other build properties.  Improved ability to manage multiple build machines.  Stop and delete builds from within VS.  Simplified ability to specify what tests get run as part of a build.  The ability to store build definitions anywhere in the version control hierarchy
WPF
Why WPF? Windows Presentation Foundation, part of WinFx, is a completely new presentation framework replacing User, GDI, GDI+, Win32 Competes with HTML, Macromedia Flash, SVG Give developers the tools to make Office quality applications, but also Flash like websites.
Hello World C# example using System; using System.Windows; namespace AvalonExample {   class MyApp {   [STAThread]   static void Main(){   MessageBox.Show(“Hello World!”); } } }
Hello World XAML example <Page xmlns=&quot;http://schemas.microsoft.com/winfx/avalon/2005&quot; xmlns:x=&quot;http://schemas.microsoft.com/winfx/xaml/2005&quot;> <TextBlock>Hello World!</TextBlock> </Page>
What Is XAML XAML = eXtensible Application Markup Language XAML provides a declarative programming model that allows various objects to be defined: Layout controls User input Controls Shapes (lines, rectangles, ellipses, plus more) Media (audio or video files) Animations and transformations Silverlight supports a subset of the original XAML schema created for WPF applications
Application Object Application object acts as container for more complex applications MainWindow Application events like Startup & Shutdown
Application Object public class MyApp : Application {   [STAThread]   static void Main(string[] args)   {   MyApp app = new MyApp();   app.Startup += app.OnApplicationStartup;   app.Run(args);   } void OnApplicationStartup(object sender,   StartupEventArgs e)   {   Window w = new Window();   w.Title = &quot;Mark says: Hello World!&quot;;   w.Show();   } }
Content Model WPF offers strong separation of behaviour (API) and presentation Behaviour (API) consists of Commands, Properties, Events & Methods Presentation of controls is controlled by Nested content Templates
StackPanel example <Window x:Class=&quot;Demo4.Content.Window1&quot;  xmlns=&quot;http://schemas.microsoft.com/winfx/avalon/2005&quot;  xmlns:x=&quot;http://schemas.microsoft.com/winfx/xaml/2005&quot;  Title=&quot;Demo4.Content&quot;>   <StackPanel Orientation=“Vertical&quot;>   <Button Name=&quot;button1&quot;>Just text</Button>   <Button Name=&quot;button2&quot;>   <Image Source=&quot;banner.jpg&quot; Name=&quot;image1&quot; Width=&quot;100&quot;/>   </Button>   <Button Name=&quot;button3&quot;>   <StackPanel Orientation=&quot;Vertical&quot;>   <TextBlock>Just text<LineBreak/>The next line</TextBlock>   <Image Source=&quot;banner.jpg&quot; Name=&quot;image1&quot; Width=&quot;100&quot;/>   </StackPanel>   </Button>   </StackPanel> </Window>
Grid example <Window x:Class=&quot;Demo4.Content.Window1&quot;  xmlns=&quot;http://schemas.microsoft.com/winfx/avalon/2005&quot;  xmlns:x=&quot;http://schemas.microsoft.com/winfx/xaml/2005&quot;  Title=&quot;Demo4.Content&quot;>   <Grid ShowGridLines=&quot;True&quot;>   <Grid.ColumnDefinitions>   <ColumnDefinition/>   <ColumnDefinition/>   <ColumnDefinition/>   </Grid.ColumnDefinitions>   <Grid.RowDefinitions>   <RowDefinition/>   <RowDefinition/>   <RowDefinition/>   </Grid.RowDefinitions>   <TextBlock Grid.Column=&quot;0&quot; Grid.Row=&quot;0&quot;>Top left</TextBlock>   <TextBlock Grid.Column=&quot;1&quot; Grid.Row=&quot;1&quot;>Middle</TextBlock>   <TextBlock Grid.Column=&quot;2&quot; Grid.Row=&quot;2&quot;>LRight</TextBlock>   </Grid> </Window>
Eventhandling Most significant feature is ‘Event Bubbling’ called ‘EventRouting’ RoutedEventArgs e.Handled = true; void innerButton_Click(object sender, RoutedEventArgs e) { MessageBox.Show(&quot;Hello SDN!&quot;); e.Handled = true; }
Databinding example <StackPanel Name=&quot;pnlMain&quot;>   <TextBlock>Name: </TextBlock>   <TextBox Name=&quot;txtName&quot;    Text=&quot;{Binding Path=Name}“/>   <TextBlock>City:</TextBlock>   <TextBox Name=&quot;txtCity&quot;    Text=&quot;{Binding Path=City}“/>   <StackPanel Orientation=&quot;Horizontal&quot;>   <Button Name=&quot;btnPrevious“   Click=&quot;btnPrevious_Click&quot;>&lt;</Button>   <Button Name=&quot;btnNext“   Click=&quot;btnNext_Click&quot;>&gt;</Button>   </StackPanel>   <ListBox Name=&quot;lstCustomers“   IsSynchronizedWithCurrentItem=&quot;True“   ItemsSource=&quot;{Binding}&quot;/> </StackPanel>
Silverlight2
Introduction What is Silverlight? Browser control capable of displaying objects, shapes controls and media Handles animations and transformations of objects Works with IE, FireFox and Safari Works on Windows or Macs Applications written using C#, VB.NET, JavaScript or other languages Support for VC-1 (HD), WMV, MP3 and WMA
Silverlight2 Features Built-in subset of the CLR Support for multiple languages including C# and VB.NET Support for LINQ 30+ built-in controls Access distributed services (WCF, SOAP, sockets, more) Custom styles Custom control templates Data binding support Multiple layout control options Color, gradient and image brushes More…
Uses
Calendar <UserControl xmlns:my=&quot;clr-namespace:System.Windows.Controls; assembly=System.Windows.Controls &quot; x:Class=&quot;UserInputControls.Page&quot; xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/ presentation&quot; xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot; … <my:Calendar x:Name=&quot;cal&quot; IsTodayHighlighted=&quot;True&quot; HorizontalAlignment=&quot;Left&quot; /> … </UserControl>
WCF
Windows Communication Foundation Unified framework for rapidly building service-oriented applications
WCF Design Goals “ The unified programming model for rapidly building service-oriented applications on the Windows platform” Unification Unifies today’s distributed technology stacks Composable functionality Appropriate for use on-machine, in the intranet, and cross the Internet Service-Oriented Programming Service-oriented programming model Maximized developer productivity Interoperability WS-* interoperability with applications running  on other platforms Interoperability with today’s distributed stacks
Services and Clients Client Service Message Message
Endpoints Client Service Message Endpoint Endpoint Endpoint
WCF Architecture
Address, Binding, Contract Client Service Message Address Binding Contract (Where) (How) (What) A B C A B C A B C
WCF Architecture: Messaging Runtime Client Dispatcher Service Contract and Behaviors Binding Address Transport Encoder Protocol(s) Transport Encoder Protocol(s)
Service Model Layer Influences system operation  based on incoming and  outgoing messages. Effects of behaviors are local. Messaging Layer Moves messages back and forth  and adds transfer semantics. Channels are symmetric. Service Code WCF Architecture: Composition & Behaviors Message Inspector Formatter Behavior Instancing Behavior Security Channel TCP Transport Security Channel TCP Transport Transaction Behavior Formatter Behavior
Three Types of Contracts Service Contract Defines Operations, Behaviors and  Communication Shape Data Contract Defines Schema and Versioning Strategies Message Contract Allows defining application-specific headers and unwrapped body content
Ways to Talk One Way:  Datagram-style delivery Request-Reply Immediate Reply on same logical thread Duplex Reply “later” and on backchannel (callback-style) Client Service One Way Request-Reply Duplex (Dual)
Bindings & Binding Elements Transport IPC MSMQ Custom TCP HTTP Protocol Encoders .NET TX Custom Security Reliability Binding HTTP TX Security Reliability Text Text Binary Custom
Standard Bindings N = None | T = Transport | M = Message | B = Both | RS = Reliable Sessions Binding  Interop Security Session TX Duplex  BasicHttpBinding  BP 1.1 N, T N N n/a WSHttpBinding  WS M , T, X N , T, RS N , Yes n/a WSDualHttpBinding  WS M RS N , Yes Yes WSFederationBinding  Federation M N , RS N , Yes No NetTcpBinding  .NET T , M T  ,RS N , Yes Yes NetNamedPipeBinding  .NET T T , N N , Yes Yes NetPeerTcpBinding  Peer T N N Yes NetMsmqBinding  .NET T , M, X N N , Yes No MsmqIntegrationBinding  MSMQ T N N , Yes n/a
Bindings & Behaviors: Security Service Client Be Be Bindings Insert Claims in Messages Behaviors Implement Security Gates C B A C B A A B C C B A
Security Claims based end-to-end security Secure end-to-end message exchanges Secure access to resources Record resource access requests X509, Username/Password, Kerberos, SAML, custom credentials Message security Confidentiality and integrity Transport or message level Access to resources Authentication and authorization
Bindings & Behaviors: Transactions Service Client Be Be Bindings Flow Transactions Behaviors AutoEnlist and AutoComplete C B A C B A A B C C B A
Bindings & Behaviors: Reliable Sessions Service Client Bindings provide Session and Guarantees C B A C B A A B C C B A
Reliability and Transactions End-to-end Reliable messaging In-order guarantees Exactly once guarantees Transport-Independent Sessions Integration with ASP.NET Sessions in IIS-Hosted compatibility mode Transactions Guaranteed atomic success or failure across services

More Related Content

Technology Overview

  • 1. סקר טכנולוגי לירן זילכה מנכ &quot; ל משותף [email_address]
  • 2. Aluna Israel’s leading Java/JavaEE and SOA consulting company Customers:
  • 3. Agenda IT concepts: SOA Cloud Computing Products: SQL Server 2008 VSTS Development Technologies: WPF (XAML) Silverlight WCF
  • 4. SOA
  • 5. From Objects to Services Polymorphism Encapsulation Subclassing Message-based Schema+Contract Binding via Policy 1980s 2000s Interface-based Dynamic Loading Runtime Metadata 1990s Object-Oriented Service-Oriented Component-Based
  • 6. Benefits of Service Orientation Facilitates implementation/platform interop Independent deployment, versioning, mgmt Promotes technology reuse
  • 7. The Challenge - Radically Simplifying Distributed Application Development Development of connected systems remains costly and frustrating Different programming models for different tasks Need for security and reliable messaging Interoperability with applications on other platforms Productive service-oriented programming model needed
  • 9. Questions What is cloud computing? Horizontal and functional services What’s it going to change? Software business models, science, life How many clouds will there be? 1, 2, 3, infinity What’s new in cloud computing? HPC grids, ASPs, hosted services, Multics (!) Emerging “cloud stack” to support a broad class of programs, including data intensive applications
  • 10. Living in the Clouds We want to start a new website, FredsList.com Our site will provide listings of items for sale, jobs, etc. As time goes on, we’ll add more features And illustrate how more cloud capabilities (and corresponding infrastructure components) are used as needed List of capabilities/components is illustrative, not exhaustive Our cloud provides a “dataset” abstraction FredsList doesn’t worry about the underlying components
  • 11. Step 1: Listings Scenario Simple Web Service API’s Database PNUTS FredsList.com application 1234323, transportation, For sale: one bicycle, barely used FredsList wants to store listings as (key, category, description) 5523442, childcare, Nanny available in San Jose 215534, wanted, Looking for issue 1 of Superman comic book DECLARE DATASET Listings AS ( ID String PRIMARY KEY, Category String, Description Text )
  • 12. Step 2: System Evolution Simple Web Service API’s Database PNUTS FredsList.com application 1234323, transportation, For sale: one bicycle, barely used Fred belatedly realizes prices are useful information! 5523442, childcare, Nanny available in San Jose 215534, wanted, Looking for issue 1 of Superman comic book ALTER DATASET Listings ADD (Price Float) Schemas are flexible, and evolve 32138, camera, Nikon D40, USD 300 Not every record in a dataset has values defined for all fields declared for the dataset vs.
  • 13. Step 3: Search Simple Web Service API’s Database PNUTS “ bicycle” FredsList’s customers quickly ask for keyword search Search Vespa “ dvd’s” “ nanny” FredsList.com application ALTER Listings SET Description SEARCHABLE Messaging Tribble Federation of systems offering different capabilities
  • 14. Step 4: Photos Simple Web Service API’s Database PNUTS FredsList decides to add photos/videos to listings Search Vespa Storage MObStor Foreign key photo -> listing FredsList.com application ALTER Listings ADD Photo BLOB Messaging Tribble Federation of systems offering different performance points
  • 15. Step 5: Data Analysis Simple Web Service API’s Database PNUTS FredsList wants to analyze its listings to get statistics about category, do geocoding, etc. Search Vespa Storage MObStor Foreign key photo -> listing FredsList.com application ALTER Listings MAKE ANALYZABLE Compute Grid Batch export Pig query to analyze categories Hadoop program to geocode data Hadoop program to generate fancy pages for listings Messaging Tribble
  • 16. Step 6: Performance Simple Web Service API’s Database PNUTS FredsList wants to reduce its data access latency Search Vespa Messaging Tribble Storage MObStor Foreign key photo -> listing FredsList.com application ALTER Listings MAKE CACHEABLE Compute Grid Batch export Caching memcached And by now, Fred is global, and wants geo-replication!
  • 17. Data Serving vs. Analysis Very different workloads, requirements Data from serving system is one of many kinds of data (click streams are another common kind, as are syndicated feeds) to be analyzed and integrated The result of analysis often goes right back into serving system
  • 18. Why Clouds? On-demand infrastructure to create a fundamental shift in the OE curve: Do things we can’t do Build more robustly, more efficiently, more globally, more completely, more quickly, for a given budget Cloud services should do heavy lifting of heavy-lifting of scaling & high-availability Today, this is done at the app-level, which is not productive
  • 19. Requirements for Cloud Services Multitenant. A cloud service must support multiple, organizationally distant customers. Elasticity. Tenants should be able to negotiate and receive resources/QoS on-demand. Resource Sharing. Ideally, spare cloud resources should be transparently applied when a tenant’s negotiated QoS is insufficient, e.g., due to spikes. Horizontal scaling. It should be possible to add cloud capacity in small increments; this should be transparent to the tenants of the service.
  • 20. Requirements for Cloud Services Metering. A cloud service must support accounting that reasonably ascribes operational and capital expenditures to each of the tenants of the service. Security. A cloud service should be secure in that tenants are not made vulnerable because of loopholes in the cloud. Availability. A cloud service should be highly available. Operability. A cloud service should be easy to operate, with few operators. Operating costs should scale linearly or better with the capacity of the service.
  • 21. Types of Cloud Services Two kinds of cloud services: Horizontal (“Platform”) Cloud Services Functionality enabling tenants to build applications or new services on top of the cloud Functional Cloud Services Functionality that is useful in and of itself to tenants. E.g., various SaaS instances, such as Saleforce.com; Google Analytics and Yahoo!’s IndexTools; Yahoo! properties aimed at end-users and small businesses, e.g., flickr, Groups, Mail, News, Shopping Could be built on top of horizontal cloud services or from scratch Yahoo! has been offering these for a long while (e.g., Mail for SMB, Groups, Flickr, BOSS, Ad exchanges)
  • 22. Horizontal Cloud Services Horizontal cloud services are foundations on which tenants build applications or new services. They should be: Semantics-free. Must be &quot;generic infrastructure,” and not tied to specific app-logic. May provide the ability to inject application logic through well-defined APIs Broadly applicable. Must be broadly applicable (i.e., it can't be intended for just one or two properties). Fault-tolerant over commodity hardware. Must be built using inexpensive commodity hardware, and should mask component failures. While each cloud service provides value, the power of the cloud paradigm will depend on a collection of well-chosen, loosely coupled services that collectively make it easy to quickly develop and operate innovative web applications.
  • 23. What’s in the Horizontal Cloud? Shared Infrastructure Horizontal Cloud Services Edge Content Services e.g., YCS, YCPI Provisioning & Virtualization e.g., EC2 Batch Storage & Processing e.g., Hadoop & Pig Operational Storage e.g., S3, MObStor, Sherpa Other Services Messaging, Workflow, virtual DBs & Webserving Simple Web Service API’s Common Approaches to QA, Production Engineering, Performance Engineering, Datacenter Management, and Optimization ID & Account Management Monitoring & QoS Metering, Billing, Accounting Security
  • 24. Web Data Management Large data analysis (Hadoop) Structured record storage (PNUTS/Sherpa) Blob storage (SAN/NAS) Scan oriented workloads Focus on sequential disk I/O $ per cpu cycle CRUD Point lookups and short scans Index organized table and random I/Os $ per latency Object retrieval and streaming Scalable file storage $ per GB
  • 25. The World Has Changed Web serving applications need: Scalability! Preferably elastic Flexible schemas Geographic distribution High availability Reliable storage Web serving applications can do without: Complicated queries Strong transactions
  • 28. Enterprise Data Platform Policy-Based Management Management of multiple SQL Server instances from a single location. Create policies that control security, database options, object naming conventions, and other settings at a highly granular level. Data Collector Collect, store, and view performance data automatically. It collects disk usage, server activity, and query statistics data, which it loads in a management data warehouse and performance data can be reviewed in SQL Server Management Studio or by using third-party tools.
  • 29. Enterprise Data Platform – Cont’ Data compression Resource Governor Allocate resource to high profile applications Database files encryption Auditing
  • 30. Development MERGE support Allows easy merge of data for Data Warehouses Language Integrated Query (LINQ) A .NET Framework version 3.5 feature that provides developers with a common syntax to query any data source from client applications. Using LINQ to SQL or LINQ to Entities, developers can select, insert, update, and delete data that is stored in SQL Server 2008 databases using any .NET programming language
  • 31. Development – Cont’ Change Data Capture (CDC) Allows you to track changes in the database (insert/update/delete) and store them in a table, for use in Data Warehouses ADO.NET Entity Framework An ORM solution, much like Nhibernate ADO.NET Data Services A data access infrastructure for Internet applications by enabling Web applications to expose SQL Server data as a service that can be consumed by client applications in corporate networks and across the Internet.
  • 32. Non Relational Data Spatial support Full text search Large user defined types Better XML support
  • 34. VSTS ALM Solution Excel Project Operations, QA and Help Desk Non-Microsoft Developer Team System Web Access
  • 35. Facilitate Team Collaboration Approachable and intuitive products Tight integration across tools, process and roles Single integrated server for greater communication and collaboration Tailored tools for each role Greater team productivity
  • 36. Team System Architecture Dev Team (Local) Dev Team (Remote) Business User Build Server Version Control Proxy (Remote) Active Directory TCP/IP HTTP / S Win 2003 Server SQL Server 2005 IIS 6.0 Team Foundation Server
  • 37. Process Enacted By Tooling Choose process when creating a new project
  • 38. Process IS important in TFS Take your process/methodology and use it Does not need to be heavy process Grab processes from elsewhere Eg: SCRUM Easily Customizable through Process Templates
  • 39. Process Templates: Make the entire system work the way you want it to work: Define your (bug, etc) definition, your terms, your form layout, and workflow Create your own process guidance easily Create your own look and feel for a collaboration portal Include all of your document templates, other artifacts Include your own roles and security settings Include your own reporting
  • 40. Team Foundation Server A single, integrated server for team collaboration: Team Portal – SharePoint site for team collaboration Change Management – flexible work item tracking system for requirements, change requests, bugs, issues and other work items Project Management – manage project resources, timelines and quality Version Control – robust version control system for all project artifacts, including branching, change sets, and shelving Build Server – automate team project build, analysis, testing Reporting – central data warehouse for real-time project metrics and analytics
  • 41. Team Explorer Common integrated client to access: Work Items Documents Reports Team Builds Source Code Control Single team view of all project artifacts Fully integrated into Visual Studio 2005 Available as stand-alone for business analysts, project managers and other team members
  • 42. Web Access Browser-based access to Project Dashboard Documents Reports Work Item Tracking Source Code Control Single team view of all project artifacts Includes Source Control search capabilities ASP.NET 2.0 Solution Free Download!
  • 43. Some Adoption Scenarios Replace Source Control (Replace SourceSafe) Need to track bugs, etc. Want to have a build server to handle promotion management Need to work towards audit requirements Support for distributed teams
  • 44. Compliance and Audit TFS supports this easily: Process Guidance details how you work Work Items provide a granular audit trail Reports used to supplement this TFS does all (or most of) the work for you.
  • 45. Compliance And Auditing Capturing evidence does not have to be a manual process, ...
  • 46. Compliance And Auditing … because there is a complete audit trail on all the tasks, code, and tests.
  • 47. Integrated Project Portal Customizable SharePoint portal for team collaboration
  • 48. Business Requirements Business requirements captured and managed to enable end-to-end traceability
  • 49. Project Planning Full integration into Microsoft Project for a real-time view of work items
  • 50. Team Explorer Access work items, project documents, reports, builds and source control from one location
  • 51. Web Access Access work items, project documents, reports, builds and source control any browser!
  • 52. Work Item Association Associate work items with each check-in to provide traceability from requirements to code
  • 53. Check-In Policies Policies enforced by tooling reinforce good development practices
  • 54. Managing Work Items Manage and analyze work items using Microsoft Excel
  • 55. Database Change Management A new offline Database project allows you to work with your database schema offline while full integration with TFS allows you to manage and version these changes Rename refactoring makes it easy to make changes to your database schema
  • 56. Build And Deployment Build verification test results as part of the build process Who checked in what?
  • 57. What Requirements Haven’t Been Tested? Tracks progression of requirements’ states from untested to passed by successive build
  • 58. How Far Can We Get In The Available Time? Work completed Work planned
  • 59. Where Do We Need To Shift Resources? Bulge in work in process (i.e. in testing) indicates inadequate resources or inadequate incoming quality
  • 60. Scope Creep “ Dark matter” emerging during iteration Planned work is squeezed out
  • 61. How Effective Is Our Team? Test rates (pass, inconclusive, fail) shown in bars Against code coverage, … code churn, … and active bugs
  • 62. Inadequate Unit Testing Falling code coverage Fewer passing and more inconclusive tests Rising code churn
  • 63. Integration with Project Server Project Server 2007 VSTS Connector available on CodePlex
  • 64. Workspaces Workspaces provide Isolated areas A single PC can have many workspaces Workspaces are a powerful tool with branching
  • 65. Branching Allows parallel development But for anything that you don't want to service or patch, labelling is sufficient.  For a release that you do want to service or patch, branching is the way to go.  Using merging, you can move changes between branches.
  • 67. Using the TFS API Team Explorer installs all the DLLs are in the GAC, but doesn’t registered them for Visual Studio Can write own desktop clients to do anything you can in Team Explorer or the command line
  • 68. Other Cool Tools SVNBridge – Allows SubVersion client to access TFS Conchango’s Scrum Project Guidance Pack Personify Design’s TeamLook Outlook Addin Microsoft Israel’s Team System Outlook Addin TeamPrise Client Suite – TFS access from Macs, Linux and Eclipse IDE NB all clients still need a Team Explorer
  • 69. TFS & VSS Differences Architecture TFS: client/server, VSS: client-side Security Windows/AD vs. VSS based security Reliability VSS database integrity can be compromised TFS uses SQL Server Scalability TFS can support up to 2000 user per instance and data size is limited only by physical media & SQL Server limits ( in the terabytes)
  • 70. TFS & VSS Differences TFS does NOT perform a “get latest” on checkout “ get latest” and “check out” are 2 separate ops “ get latest” is explicit in TFS, controlled by the user Provides a consistent snapshot of code TFS does NOT add a file until checked in
  • 71. Migration from VSS to TFS VSSConverter migration tool Imports VSS repository into TFS Command line interface Can migrate most VSS repositories easily VSS Shared files are copied VSS Pinned items are labeled as “PINNED” in TFS
  • 72. Visual Studio 2008 Administration Share Point 2007 support Enable use of a separate Share Point farm. Support for SQL Named Instances “ Longhorn” server support Sync Large Groups (~30,000 or more) Installation on a domain controller Non-default ports & web sites Simplify installation Upgrade from TFS 2005
  • 73. Visual Studio 2008 Version Control Add support for checkin policy overrides to the warehouse (an oversight from V1). Annotate & Folder Diff Destroy Get Latest On Checkout Workspace improvements Performance & Scale improvements Migration toolkit between TFS and other systems
  • 74. Visual Studio 2008 Build Support multi-threaded builds with the new MSBuild. Continuous Integration Improved ability to specify what source, versions of source, and other build properties. Improved ability to manage multiple build machines. Stop and delete builds from within VS. Simplified ability to specify what tests get run as part of a build. The ability to store build definitions anywhere in the version control hierarchy
  • 75. WPF
  • 76. Why WPF? Windows Presentation Foundation, part of WinFx, is a completely new presentation framework replacing User, GDI, GDI+, Win32 Competes with HTML, Macromedia Flash, SVG Give developers the tools to make Office quality applications, but also Flash like websites.
  • 77. Hello World C# example using System; using System.Windows; namespace AvalonExample { class MyApp { [STAThread] static void Main(){ MessageBox.Show(“Hello World!”); } } }
  • 78. Hello World XAML example <Page xmlns=&quot;http://schemas.microsoft.com/winfx/avalon/2005&quot; xmlns:x=&quot;http://schemas.microsoft.com/winfx/xaml/2005&quot;> <TextBlock>Hello World!</TextBlock> </Page>
  • 79. What Is XAML XAML = eXtensible Application Markup Language XAML provides a declarative programming model that allows various objects to be defined: Layout controls User input Controls Shapes (lines, rectangles, ellipses, plus more) Media (audio or video files) Animations and transformations Silverlight supports a subset of the original XAML schema created for WPF applications
  • 80. Application Object Application object acts as container for more complex applications MainWindow Application events like Startup & Shutdown
  • 81. Application Object public class MyApp : Application { [STAThread] static void Main(string[] args) { MyApp app = new MyApp(); app.Startup += app.OnApplicationStartup; app.Run(args); } void OnApplicationStartup(object sender, StartupEventArgs e) { Window w = new Window(); w.Title = &quot;Mark says: Hello World!&quot;; w.Show(); } }
  • 82. Content Model WPF offers strong separation of behaviour (API) and presentation Behaviour (API) consists of Commands, Properties, Events & Methods Presentation of controls is controlled by Nested content Templates
  • 83. StackPanel example <Window x:Class=&quot;Demo4.Content.Window1&quot; xmlns=&quot;http://schemas.microsoft.com/winfx/avalon/2005&quot; xmlns:x=&quot;http://schemas.microsoft.com/winfx/xaml/2005&quot; Title=&quot;Demo4.Content&quot;> <StackPanel Orientation=“Vertical&quot;> <Button Name=&quot;button1&quot;>Just text</Button> <Button Name=&quot;button2&quot;> <Image Source=&quot;banner.jpg&quot; Name=&quot;image1&quot; Width=&quot;100&quot;/> </Button> <Button Name=&quot;button3&quot;> <StackPanel Orientation=&quot;Vertical&quot;> <TextBlock>Just text<LineBreak/>The next line</TextBlock> <Image Source=&quot;banner.jpg&quot; Name=&quot;image1&quot; Width=&quot;100&quot;/> </StackPanel> </Button> </StackPanel> </Window>
  • 84. Grid example <Window x:Class=&quot;Demo4.Content.Window1&quot; xmlns=&quot;http://schemas.microsoft.com/winfx/avalon/2005&quot; xmlns:x=&quot;http://schemas.microsoft.com/winfx/xaml/2005&quot; Title=&quot;Demo4.Content&quot;> <Grid ShowGridLines=&quot;True&quot;> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <TextBlock Grid.Column=&quot;0&quot; Grid.Row=&quot;0&quot;>Top left</TextBlock> <TextBlock Grid.Column=&quot;1&quot; Grid.Row=&quot;1&quot;>Middle</TextBlock> <TextBlock Grid.Column=&quot;2&quot; Grid.Row=&quot;2&quot;>LRight</TextBlock> </Grid> </Window>
  • 85. Eventhandling Most significant feature is ‘Event Bubbling’ called ‘EventRouting’ RoutedEventArgs e.Handled = true; void innerButton_Click(object sender, RoutedEventArgs e) { MessageBox.Show(&quot;Hello SDN!&quot;); e.Handled = true; }
  • 86. Databinding example <StackPanel Name=&quot;pnlMain&quot;> <TextBlock>Name: </TextBlock> <TextBox Name=&quot;txtName&quot; Text=&quot;{Binding Path=Name}“/> <TextBlock>City:</TextBlock> <TextBox Name=&quot;txtCity&quot; Text=&quot;{Binding Path=City}“/> <StackPanel Orientation=&quot;Horizontal&quot;> <Button Name=&quot;btnPrevious“ Click=&quot;btnPrevious_Click&quot;>&lt;</Button> <Button Name=&quot;btnNext“ Click=&quot;btnNext_Click&quot;>&gt;</Button> </StackPanel> <ListBox Name=&quot;lstCustomers“ IsSynchronizedWithCurrentItem=&quot;True“ ItemsSource=&quot;{Binding}&quot;/> </StackPanel>
  • 88. Introduction What is Silverlight? Browser control capable of displaying objects, shapes controls and media Handles animations and transformations of objects Works with IE, FireFox and Safari Works on Windows or Macs Applications written using C#, VB.NET, JavaScript or other languages Support for VC-1 (HD), WMV, MP3 and WMA
  • 89. Silverlight2 Features Built-in subset of the CLR Support for multiple languages including C# and VB.NET Support for LINQ 30+ built-in controls Access distributed services (WCF, SOAP, sockets, more) Custom styles Custom control templates Data binding support Multiple layout control options Color, gradient and image brushes More…
  • 90. Uses
  • 91. Calendar <UserControl xmlns:my=&quot;clr-namespace:System.Windows.Controls; assembly=System.Windows.Controls &quot; x:Class=&quot;UserInputControls.Page&quot; xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/ presentation&quot; xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot; … <my:Calendar x:Name=&quot;cal&quot; IsTodayHighlighted=&quot;True&quot; HorizontalAlignment=&quot;Left&quot; /> … </UserControl>
  • 92. WCF
  • 93. Windows Communication Foundation Unified framework for rapidly building service-oriented applications
  • 94. WCF Design Goals “ The unified programming model for rapidly building service-oriented applications on the Windows platform” Unification Unifies today’s distributed technology stacks Composable functionality Appropriate for use on-machine, in the intranet, and cross the Internet Service-Oriented Programming Service-oriented programming model Maximized developer productivity Interoperability WS-* interoperability with applications running on other platforms Interoperability with today’s distributed stacks
  • 95. Services and Clients Client Service Message Message
  • 96. Endpoints Client Service Message Endpoint Endpoint Endpoint
  • 98. Address, Binding, Contract Client Service Message Address Binding Contract (Where) (How) (What) A B C A B C A B C
  • 99. WCF Architecture: Messaging Runtime Client Dispatcher Service Contract and Behaviors Binding Address Transport Encoder Protocol(s) Transport Encoder Protocol(s)
  • 100. Service Model Layer Influences system operation based on incoming and outgoing messages. Effects of behaviors are local. Messaging Layer Moves messages back and forth and adds transfer semantics. Channels are symmetric. Service Code WCF Architecture: Composition & Behaviors Message Inspector Formatter Behavior Instancing Behavior Security Channel TCP Transport Security Channel TCP Transport Transaction Behavior Formatter Behavior
  • 101. Three Types of Contracts Service Contract Defines Operations, Behaviors and Communication Shape Data Contract Defines Schema and Versioning Strategies Message Contract Allows defining application-specific headers and unwrapped body content
  • 102. Ways to Talk One Way: Datagram-style delivery Request-Reply Immediate Reply on same logical thread Duplex Reply “later” and on backchannel (callback-style) Client Service One Way Request-Reply Duplex (Dual)
  • 103. Bindings & Binding Elements Transport IPC MSMQ Custom TCP HTTP Protocol Encoders .NET TX Custom Security Reliability Binding HTTP TX Security Reliability Text Text Binary Custom
  • 104. Standard Bindings N = None | T = Transport | M = Message | B = Both | RS = Reliable Sessions Binding Interop Security Session TX Duplex BasicHttpBinding BP 1.1 N, T N N n/a WSHttpBinding WS M , T, X N , T, RS N , Yes n/a WSDualHttpBinding WS M RS N , Yes Yes WSFederationBinding Federation M N , RS N , Yes No NetTcpBinding .NET T , M T ,RS N , Yes Yes NetNamedPipeBinding .NET T T , N N , Yes Yes NetPeerTcpBinding Peer T N N Yes NetMsmqBinding .NET T , M, X N N , Yes No MsmqIntegrationBinding MSMQ T N N , Yes n/a
  • 105. Bindings & Behaviors: Security Service Client Be Be Bindings Insert Claims in Messages Behaviors Implement Security Gates C B A C B A A B C C B A
  • 106. Security Claims based end-to-end security Secure end-to-end message exchanges Secure access to resources Record resource access requests X509, Username/Password, Kerberos, SAML, custom credentials Message security Confidentiality and integrity Transport or message level Access to resources Authentication and authorization
  • 107. Bindings & Behaviors: Transactions Service Client Be Be Bindings Flow Transactions Behaviors AutoEnlist and AutoComplete C B A C B A A B C C B A
  • 108. Bindings & Behaviors: Reliable Sessions Service Client Bindings provide Session and Guarantees C B A C B A A B C C B A
  • 109. Reliability and Transactions End-to-end Reliable messaging In-order guarantees Exactly once guarantees Transport-Independent Sessions Integration with ASP.NET Sessions in IIS-Hosted compatibility mode Transactions Guaranteed atomic success or failure across services

Editor's Notes

  1. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. Speaker Notes For years, software development has focused on how to best reuse the code that we write. Ultimately, people and businesses want long-term return on their short-term investments in code. How do we do this? We’ve seen 3 waves of advancement in this movement in recent decades: 1980s and Object-Orientation: Object-oriented development promised the idea of building reusable abstractions (called classes) that we could then inherit from in order to reuse the base class functionality. This shift from simple procedural-based code brought with it a lot of benefits including polymorphism (the ability to dynamically bind types at runtime), abstractions that included both state and behavior, and encapsulation (controlling which parts of the code the external world can access). However, Object-Orientation by itself didn’t facilitate the dynamic evolution of software at runtime. Once an application was built, it was static. There wasn’t an easy way to infuse new code into an application. 1990s and Components: Component-based development helped us overcome this challenge. It forced the developer to think about the external facing interface of the application. This enabled us to build systems that dynamically load and bind to new functionality at runtime (an application discovers new components after it has been built) and introduced the notion of an application as a growing/evolving organism. To facilitate dynamic loading, we saw a big emphasis on runtime metadata. In the past, you couldn’t easily discern application capabilities since there was very little/rudimentary metadata information stored as part of the application. Whereas C and C++ programs from 1980s were these relatively opaque collections of code, component-based applications of the 1990s enabled runtime inspection of code to determine what a particular component supported. This introduced the notion of self-describing systems. But while this metaphor worked really well on a single machine (using method invocation on an object reference), we hit scaling problems when we tried to stretch it out and apply it as the substrate for distributed software integration (across machines, etc). 2000s and Service-Orientation – With Service-Orientation, we retain the benefits of self-describing applications, explicit encapsulation, and dynamic loading of functionality. What changes is the metaphor with which we accomplish it. Instead of using method invocation on an object reference, we shift the conversation to that of message passing – a proven metaphor for scalable distributed software integration. In addition, to support dynamic loading of service-based functionality, we use schema to describes the structure of messages, behavioral contract to define acceptable message exchange patterns, and policy to define service semantics. Simplifying service-oriented development is one of the biggest bets we’re making in WCF. WCF takes the service-oriented concepts of message passing, schema, contract, and policy, and implicitly applies it to all of the services we build. As such, WCF provides you with the first true service-oriented programming model. Transition to next slide: We define service oriented applications as those that adhere to “The Four Tenets of Service-Orientation.” Let’s examine these and see how WCF implements them…
  2. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. Speaker Notes At a high level, service-oriented programming reduces long-term TCO for connected systems. First, it facilitates application to application interoperability across platforms through the use of loosely-coupled standards-based integration. Second, it enables independent deployment, versioning, and management of caller (traditionally referred to as the client) and the called (traditionally referred to as the server). Finally, it promotes the reuse of our investments as they evolve over time. Transition to next slide: We’ve now covered all three pillars of WCF – Unification, Integration/Interoperability, and Service-Oriented Programming. Let’s review…
  3. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. Speaker Notes The next challenge we face is actually something we’ve been doing for quite some time now – building distributed applications. As developers, we’ve been building distributed applications for years now. However, I’ll assert that it’s never been as easy as it should be, or could be. While our ability to build distributed applications has certainly changed over the past few years, it hasn’t necessarily gotten any easier. In fact, additional capabilities and options for building distributed applications have brought with them additional complexity! Security is critical for applications, but often complicated to implement. Standards-based interoperability needs to be taken into account for communication across heterogeneous systems. We have different programming models with different capabilities that are focused on different application scenarios: Web services, distributed objects, and message queuing all helped address development needs, but again, they’ve added more complexity to our lives. They require us to learn different programming paradigms and often contain functionality and features that don’t compose (combine) well with one another. With the resurgence of service orientation and service-oriented architectures (SOA), we also need to design our applications for flexibility in the face of change. It was these types of development challenges in building distributed applications that drove the WCF product design goals. Transition to next slide: So at a high level, the goal of WCF is to radically simplify the development of distributed applications. We can summarize WCF’s design goals in three key concepts…
  4. © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. TFS provides the infrastructure for team members to collaborate successfully to deliver a software project. It’s built on Windows Server 2003 and SQL Server. It leverages core technologies like ASP.NET web services and SharePoint to provide services. It’s composed of four cornerstones. The first is Work Item Tracking which is very fundamental to TFS. WI are our generic name for any piece of information related to a project that require further action or input. So it can be a Feature, Bug/Defect, Task, Requirement, etc. WIs are used by all parts of TFS. Version Control is the name of our enterprise class source code Change Management feature that we’ll be talking about in depth shortly. Build Automation makes it simple for teams to set up a regularly scheduled build. Performing regular builds will increase quality by catching defects when code is integrated. TFS makes it dead simple to set this up. Team Communication is important to ensure the team is in sync. TFS supports this by aggregating all project related data in a single repository and making that easily accessible to anyone related to the project. Good communication increases the transparency of the project. Finally, TFS’s extensive Reporting capabilities increase the predictability of a project by gathering and presenting important information. Out of the box we have over 20 predefined reports and it’s really simple to extend existing reports as well as create new reports.
  5. Give some stats on saleability and network requirements. Caching Proxy Server Downloading files is expensive in terms of bandwidth. Solution: cache them locally at your remote sites. High level, clients get all meta data from server as to what is the latest version etc. When it wants to download a file, sends the request to the proxy server. If proxy has it sends it, otherwise gets it from the server. Keeps it stored in GZIP format (unless file format grows when GZIPED) Also useful for reducing load on App tier. There is a file cache in app tier (stored in GZIP format) Cache has fixed size limit or percentage space limit (of disk system) Files removed on a FIFO policy. Cache counters available at http://&lt;proxy&gt;:8081/VersionControlProxy/v1.0/ProxyStatistics.asmx http://&lt;at&gt;:8080/VersionControl/v1.0/ProxyStatistics.asmx Can also be output to server log file on a periodic basis. Cache files located on separate disc to OS – configured for speed not reliability (files are stored in DB tier properly) Can proxy multiple AT instances Each proxy should have own user id? In Microsoft, TFS Server in Redmond, TFS proxy in Raliegh (where the VC team are), TeamBuild in India and Beijing team. Need to fit in with your WAN environment. Where are your main data centres. Where will your teams be? Cost low (cost of a Windows 2003 server) Configure disks for fast raid striping (RAID 0) (just a cache – don’t bother with redundancy for the cache partition) Typical usage is 89% cache hit. © 2006 Teamprise. All rights reserved. This presentation is for informational purposes only. Teamprise makes no warranties, express or implied, in this summary. Teamprise
  6. © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  7. © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  8. © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  9. http://www.codeplex.com/pstfsconnector The Visual Studio Team System Project Server 2007 Connector is designed to integrate the project management capabilities of VSTS with Project Server 2007. It&apos;s been developed by the Visual Studio Team System Rangers in response to significant customer demand for a connector solution. Future versions of Team System will have native integration with Project Server, in the meantime this Connector solution is the best way to integrate the two Microsoft products. This solution builds on the previous PS2003 VSTS Connector , published on GotDotNet. This solution is intended to provide guidance, provided as source code that can be used &amp;quot;as is,&amp;quot; extended, or modified by developers to use on enterprise development projects.
  10. This is a presentation in itself The size of the development team has big effect on branching options Branching typically involves: Taking a snapshot of source code to create isolation – a snapshot may be as of a certain point in time, or a stable or known state of source code (such as the last successful build). The resulting copy is the child branch, and the source from which it was created is called the parent branch. Containing and stabilizing changes within the isolated snapshot in the child branch. Bi-directional synchronization of changes with the parent branch – usually referred to as integrating or merging. We will explain why this is important later in this document. Release Isolation: If you need to work on multiple releases in parallel, you will probably want source code for those releases to be isolated in their own branch – hence release isolation . This is the most common need that causes organizations to start branching their sources. Keep in mind that the term “release” here does not necessarily refer to a new version of your product. It may be appropriate to release your application to your test team from a dedicated branch so that you can work through issues with that release independently from the new development that is continuing on your development branch. Feature Isolation: It is common for teams to embark on new functionality that is either considered experimental or is considered risky enough to merit that work being performed in its own branch. In such cases, feature isolation allows the people working on a given feature to collaborate without exposing the rest of the application to any instability that may result. Team Isolation: It is also common that organizations elect to have sub-teams work in isolation from each other. Team isolation provides the ability for these teams to collaborate without being subjected to the potentially breaking changes that other teams are working on. Some organizations go so far as to create a dedicated branch for every developer on the team. This is not required with Team Foundation Server because of the nature of client-side workspaces discussed earlier. Integration Isolation: Merging changes between branches is often a very destabilizing event. It is sometimes beneficial to maintain an integration branch where active development does not take place but rather serves as a staging area for merges. Changes from other branches can be merged into this branch and then stabilized. Once stable, the changes can be merged back into the other branches. In some organization, the term “breaking changes” refers to the potential destabilization bug fixes or merges can introduce – accordingly they provide for a “breaking changes branch” to accommodate the need for integration isolation.
  11. http://msdn2.microsoft.com/en-us/library/aa730834(VS.80).aspx You know you are on the wrong track if you experience one or more of the following symptoms in your development environment: Merge Paranoia —avoiding merging at all cost, usually because of a fear of the consequences. Merge Mania —spending too much time merging software assets instead of developing them. Big Bang Merge —deferring branch merging to the end of the development effort and attempting to merge all branches simultaneously. Never-Ending Merge —continuous merging activity because there is always more to merge. Wrong-Way Merge —merging a software asset version with an earlier version. Branch Mania —creating many branches for no apparent reason. Cascading Branches —branching but never merging back to the main line. Mysterious Branches —branching for no apparent reason. Temporary Branches —branching for changing reasons, so the branch becomes a permanent temporary workspace. Volatile Branches —branching with unstable software assets shared by other branches or merged into another branch.
  12. Can register DLLS using TechNote 306149 or manually find program filesmicrosoft visual studio 8common7ideprivate assemblies Microsoft.TeamFoundation.Client.dll, Microsoft.TeamFoundation.VersionControl.Common.dll, Microsoft.TeamFoundation.VersionControl.Client.dll
  13. SvnBridge allows you to use TortoiseSVN and other Subversion clients with Team Foundation Server. It converts the calls made by your Subversion client to the API supported by TFS. Http://www.codeplex.com/SvnBridge Scrum for Team System is a free Agile Software Development Methodology add-in for Microsoft Visual Studio Team System , developed by Conchango , in collaboration with Ken Schwaber and the Microsoft Technology Centre UK . http://www.scrumforteamsystem.com Team Look Personify Design TeamLook™ extends Microsoft Outlook so that all stakeholders in a software project can communicate more effectively and gain accurate visibility into project status. TeamLook™ connects to Visual Studio 2005 Team Foundation Server and enables users to view WorkItems, Reports, and other artifacts stored in their Visual Studio 2005 Team System installations. With constant synchronization TeamLook™ functions in a similar manner to other Microsoft Outlook features, reducing training costs and enabling organizations to realize immediate productivity gains. http://www.personifydesign.com/products/teamlook/teamlook.aspx Team System Outlook Addin From Microsoft Israel and free unlike TeamLook (www.personifydesign.com/products/teamlook/teamlook.aspx at $199 per seat) http://blogs.microsoft.co.il/blogs/srlteam/archive/2007/02/05/Team-System-Outlook-Addin-_2D00_-v1.0.aspx Create work item directly from email messages Submit and edit work items Execute stored queries Find work items by ids Export stored queries results Send work items data and queries results http://www.teamprise.com/product/index.html $500 per seat Teamprise is a suite of client applications for accessing Microsoft Visual Studio 2005 Team Foundation Server from outside of the Visual Studio Integrated Development Environment (IDE). Teamprise enables software development teams to use the source control, work item tracking, documents, and reporting features of Team Foundation Server from within the Eclipse IDE, and from other operating systems, including Linux and Mac OS X.
  14. http://msdn2.microsoft.com/en-us/library/ms181369.aspx
  15. I would recommend you don’t do it unless you have to. We have decided to start new projects on TFS leaving the old on VSS/Sourcegear SOS If we do move over a project we get latest from VSS, break source control binding then add to TFS
  16. Share Point 2007 support Enable use of a separate Share Point farm. Support for SQL Named Instances – This will allow customers to share a SQL server between multiple TFS instances, or with other applications.  This has been a commonly requested feature by enterprises. “ Longhorn” server support – TFS will support the next version of the server (and corresponding new version of IIS) that is currently under development. Sync Large Groups – This is a set of work to improve the performance and robustness of TFS’s handling large groups of users (~30,000 or more) granted permission to a TFS instance.  Today this can result in a support call to recover from it. Installation on a domain controller – TFS will support installation on a domain controller.  This has been a fairly common request from smaller organizations who don’t have the budget for special purpose servers. Improvements to TFS Trial – We’ll plan to improve the trial experience to include warnings as expiration approaches. Non-default ports &amp; web sites – We’ve gotten a bunch of feedback from enterprise customers about TFS’s limited support for alternate web sites and ports running afoul of data center policies.  We are going to be improving TFS’s configurability in this respect in Orcas.  We won’t be getting everything everyone has asked for but we should make some significant progress. Simplify installation – In Orcas, we will be doing a variety of things to attempt to make installing TFS easier and quicker than it is now.  The most significant of them is simplifying the requirements around required domain accounts by supporting the built in machine accounts (like Network Service) where we can. Support for client certificates Upgrade from TFS 2005
  17. Annotate – This is based on the TFS Annotate Power Tool but includes numerous improvements. Folder Diff – Also based on the TFS Tree Diff Power Tool with numerous improvements. Destroy – The ability to permanently delete version control files/folders from TFS.  It can also be used to destroy the file contents while preserving the change set history. Get Latest On Checkout – There have been many requests for this feature (which was a change in behavior from SourceSafe).  There is now an option that allows you to specify that you want TFS to download the latest version of files when you check them out. Workspace improvements – Workspaces will now support mapping a folder or file under a cloaked folder and wildcard mappings so that you can map all files in a folder without mapping sub folders.  Based on experience with large projects, this will simplify workspace definitions for many people. Performance improvements – A variety of Version Control performance enhancements that will improve virtually all aspects of version control performance.  The gains for smaller servers/projects (&lt; 10,000 files) will be modest.  The gains for larger projects (particularly where the file count approaches 100,000’s) will be substantial. Scale improvements – Fixed out of memory problems on the server when operating on more than a few hundred thousand files at a time. Migration toolkit – Orcas will include a toolkit for building conversion and mirroring solutions between TFS and other systems.  In addition, we will release one or more new tools to integrate with popular alternative systems.  We expect to release some of these on our Power Tool train before Orcas and will roll them into a post-Orcas release.
  18. Build Support multi-threaded builds with the new MSBuild. Continuous Integration – There are many components to this, including build queuing and queue management, drop management (so that users can set policies for when builds should be automatically deleted), and build triggers that allows configuration of exactly how when CI builds should be triggered, for example – every checkin, rolling build (completion of one build starts the next), etc. Improved ability to specify what source, versions of source, and other build properties. Improved extensibility of the build targets – such as ability to easily execute targets before and after each solution/project is built. Improved ability to manage multiple build machines. Stop and delete builds from within VS. .NET Object model for programming against the build server. Simplified ability to specify what tests get run as part of a build. The ability to story build definitions anywhere in the version control hierarchy
  19. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. Speaker notes: Background Building distributed applications has never been easy. As the applications that we write satisfy more complex business requirements, it’s traditionally meant that the distributed applications we build get more complex themselves. For example, Security is critical for applications, but often complicated to implement. Standards-based interoperability needs to be taken into account for communication across heterogeneous systems. We have different programming models with different capabilities that are focused on different application scenarios: Web services, distributed objects, and message queuing all helped address development needs, but again, they’ve added more complexity to our lives. They require us to learn different programming paradigms and often contain functionality and features that don’t compose (combine) well with one another. With the resurgence of service orientation and service-oriented architectures (SOA), we also need to design our applications for flexibility in the face of change. It was these types of development challenges in building distributed applications that drove the design goals of the Windows Communication Foundation (WCF). WCF Overview WCF is a new framework for building distributed applications. It enables developers to build secure, reliable service-oriented applications that integrate across platforms and interoperate with existing investments. WCF solutions can run within the context of a single machine, over company intranets, or across the Internet using a variety of protocols, formats, and message exchange patterns. By combining and extending the capabilities of existing Microsoft distributed systems technologies (Enterprise Services, System.Messaging, .NET Remoting, ASMX, and WSE), WCF reduces the coding and complexity of developing, deploying and managing distributed applications. With support for REST, RSS, and the WS-* Web services protocols, WCF provides the communication infrastructure for a wide range of software, from consumer P2P applications and content feeds to enterprise-critical solutions. In fact, the InfoCard technology was itself built using WCF. Transition to next slide: Let’s drill into two key areas of WCF – the unified programming model and the support for Web services…
  20. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  21. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  22. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. Speaker Notes This is a high-level view of the WCF architecture. It is a two layered architecture consisting of a messaging layer and the service model. The Messaging layer handles the low-level messaging of WCF services. It moves messages around on the wire and provides messaging features like transport extensibility, reliability, and transport security. The Service Model sits on top of the Messaging layer. It is the API for building WCF services. We built the Service Model to look familiar to you regardless of which distributed technology you use today. In that sense, WCF is a “logical vNext” for existing distributed technologies. Other things to call out about the Service Model: It is the coupling between the messaging world and the CLR world. In other words, it’s the link between the XML being sent across the wire and our .NET Framework-based code. It is where transactions get set up, it controls instancing of objects, etc. Also, all features in messaging layer are exposed through the service model. Transition to next slide: We mentioned on the last slide that WCF enables you to cover all of the scenarios available in today&apos;s distributed technologies and more. How do we enable this? It&apos;s all about composability. Let’s see how it works…
  23. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  24. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  25. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. Speaker Notes Let’s take a closer look at how WCF services work using both the messaging layer and the Service Model. In this example, we’ll see how incoming messages to an WCF service get processed before they reach our user code and then how outgoing messages get processed before being sent across the wire. &lt;click&gt; We’ll begin with the Messaging layer. The Messaging layer basically works by Taking messages in from the wire, Adding transfer semantics (called Channels ) Passing the messages on for additional processing. This flexible architecture allows you to chain multiple channels together. &lt;click&gt; For example, if we want to send and receive our messages using the TCP transport, we have a channel called the TCP transport channel that allows you to do this. Once the TCP transport channel processes an inbound message, it simply hands off the message to next level in the processing chain. This “next level” could either be your application code or another channel . &lt;click&gt; So if you want end-to-end interoperable SOAP-based security, you’d simply stack a Security channel on top. This secures outbound messages before handing off to TCP and validates incoming messages before handing back to your application. From there we get to the Service Model layer. This layer bridges the gap between the messaging layer and our user code that implement the WCF service. Just as the messaging layer has the stackable concept of Channels, the Service model layer has a stackable concept called Behaviors. &lt;click&gt; For example, there is a CLR Type Integration behavior. This takes an incoming message and figures out what method to call in order to dispatch it. In other words, this behavior takes an incoming XML Infoset - looks for &amp;quot;action=foo&amp;quot;, &amp;quot;parameter=bar&amp;quot; and figures out what method to call. Of course, if you want, you can also just pass the message through to your code directly if you want to manipulate the XML yourself. &lt;click&gt; The Transaction Behavior pulls the transaction out of the message and enlists in the transaction for you so when your code is called you are in the right transaction context. &lt;click&gt; The Instancing Behavior allows you to choose if you want a new instance of your service with every call, or if you’d like to use a singleton, as well as options that keep the same instance per session. Transition to next slide: There&apos;s a whole bunch of behaviors and channels. Let&apos;s look at them in action…
  26. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  27. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  28. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  29. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  30. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  31. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. Speaker Notes WCF security secures message exchanges, secures access to resources, and records requests for resources. Security is focused on the support and use of credentials. Credentials consist of claims, issuer, proof of possession. Confidentiality is ensured by encryption using the recipients credentials, integrity is ensured by signing messages using the senders credentials. WCF is secure by default (with the exception of the basicHttpBinding). By default, WCF supports X509 certificates and Username/password, as well as Kerb and SAML tokens. Of course, custom tokens can be written and plugged into WCF as well, and WCF also supports anonymous access if the service chooses to. Access to resources – authentication and autorization consistent with .NET FX AuthZ processes. Supports integration authentication or control via separate access lists. Acces
  32. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  33. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  34. 06/29/09 09:25 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. Speaker Notes When we talk about reliable messaging (RM), we’re talking about a guarantee that a message actually gets from one service to another (retrying on failed attempts until success). WCF supports two RM guarantees: in-order and exactly once (similar to MSMQ and MQSeries guarantees). “In order” guarantees ensure that messages received are done so in the order in which they are sent. Exactly once guarantees ensure that each message is received only once. There are also two modes for doing RM: an express lightweight mode in which messages are not stored to disk before sending; and a transacted mode in which messages are durably stored to disk before sending. In the case of machine failure, express mode services would lose any messages in the buffer at the time of failure. When you truly need classic, atomic two-phase commit across two services, WCF also supports transactions. This provides the ability to flow a transaction across service boundaries, for and all participants to enlist in the transaction, vote on the outcome, and succeed or fail together atomically. It’s also important to point out that security, RM, and transaction support are all configured by default to communicate using Web Services specification-compliant protocols (WS-Security, WS-ReliableMessaging, WS-AtomicTransaction, etc). This provides a new level of integration between services built on our platform and built on other vendor&apos;s platforms (WebSphere, etc). Transition to next slide: Now that we’ve discussed a broad range of WCF-supported features, let’s look at how WCF services are hosted and activated…