Whether an application runs in the cloud, uses services provided by the cloud, or both, some kind of application platform is required. Viewed broadly, an application platform can be thought of as anything that provides developer-accessible services for creating applications. In the local, on-premises Windows world, for example, this includes technologies such as the .NET Framework, SQL Server, and more. To let applications exploit the cloud, cloud application platforms must also exist. And because there are a variety of ways for applications to use cloud services, different kinds of cloud platforms are useful in different situations. Microsoft’s Windows Azure platform is a group of cloud technologies, each providing a specific set of services to application developers. The Windows Azure platform can be used both by applications running in the cloud and by applications running on local systems. The components of the Windows Azure platform can be used by local applications running on a variety of systems, including various flavors of Windows, mobile devices, and others. Those components include: Windows Azure: Provides a Windows-based environment for running applications and storing data on servers in Microsoft data centers. Microsoft .NET Services: Offers distributed infrastructure services to cloud-based and local applications. Microsoft SQL Azure: Provides data services in the cloud based on SQL Server. Each component of the Windows Azure platform has its own role to play. This overview describes all four, first at a high level, then in a bit more detail. While none of them are yet final—details and more might change before their initial release—it’s not too early to start understanding this new set of platform technologies.
Read the slide
Build and deploy software quickly and easily by capitalizing on the same personnel, development tools investments, and knowledge that already power your IT organization. Use the services platform’s infrastructure to power prototyping environments for experimentation, and then launch to full-scale production as soon as your business needs it. Imagine connecting existing applications with an online database that can be shared with partners, or a service bus that enables secure B2B connectivity across firewalls.Pay as you grow and reduce costs. Pay for the services you use and reduce the capital costs associated with purchasing hardware and infrastructure. Reduce operational costs by running applications on the services platform and decrease the need for maintaining on-premises infrastructure. Increase business efficiency and agility by dynamically adding and subtracting capacity in real time. Envision building an e-commerce Web site that you can scale at the click of a mouse to meet seasonal demands or spikes in traffic based on sales and promotions. Develop a new portfolio of expertise. In these early stages of software development for the cloud, businesses will be seeking the best advice on what this means for their current and future technology investments. Stay ahead of the curve and help your customers understand what cloud computing and development means to their business today and how they can pivot and extend their investments to maximize its value tomorrow. Don’t slow down. Start projects without the hurdles of lengthy training or waiting for new infrastructure to be delivered and installed. With a broad set of services already running on Microsoft global data centers, the services platform is ready to start prototyping and testing solutions.
As the figure shows, Windows Azure runs on machines in Microsoft data centers. Rather than providing software that Microsoft customers can install and run themselves on their own computers, Windows Azure is a service: Customers use it to run applications and store data on Internet-accessible machines owned by Microsoft. Those applications might provide services to businesses, to consumers, or both.
Read the slide headlines, answer questions
All Windows Azure applications and all of the data in Windows Azure Storage live in some Microsoft data center. Within that data center, the set of machines dedicated to Windows Azure is organized into a fabric. As the figure shows, the Windows Azure Fabric consists of a (large) group of machines, all of which are managed by software called the fabric controller. The fabric controller is replicated across a group of five to seven machines, and it owns all of the resources in the fabric: computers, switches, load balancers, and more. Because it can communicate with a fabric agent on every computer, it’s also aware of every Windows Azure application in this fabric. (Interestingly, the fabric controller sees Windows Azure Storage as just another application, and so the details of data management and replication aren’t visible to the controller.) 8 This broad knowledge lets the fabric controller do many useful things. It monitors all running applications, for example, giving it an up-to-the-minute picture of what’s happening in the fabric. It manages operating systems, taking care of things like patching the version of Windows Server 2008 that runs in Windows Azure VMs. It also decides where new applications should run, choosing physical servers to optimize hardware utilization. To do this, the fabric controller depends on a configuration file that is uploaded with each Windows Azure application. This file provides an XML-based description of what the application needs: how many Web role instances, how many Worker role instances, and more. When the fabric controller receives this new application, it uses
The Windows Azure Compute service can run many different kinds of applications. A primary goal of this platform, however, is to support applications that have a very large number of simultaneous users. (In fact, Microsoft has said that it will build its own SaaS applications on Windows Azure, which sets the bar high.) Reaching this goal by scaling up—running on bigger and bigger machines—isn’t possible. Instead, Windows Azure is designed to support applications that scale out, running multiple copies of the same code across many commodity servers. To allow this, a Windows Azure application can have multiple instances, each executing in its own virtual machine (VM). These VMs run 64-bit Windows Server 2008, and they’re provided by a hypervisor (based on Hyper-V) that’s been modified for use in Microsoft’s cloud. To run an application, a developer accesses the Windows Azure portal through her Web browser, signing in with a Windows Live ID. She then chooses whether to create a hosting account for running applications, a storage account for storing data, or both. Once the developer has a hosting account, she can upload her application, specifying how many instances the application needs. Windows Azure then creates the necessary VMs and runs the application. It’s important to note that a developer can’t supply her own VM image for Windows Azure to run. Instead, the platform itself provides and maintains its own copy of Windows. Developers focus solely on creating applications that run on Windows Azure. 4 In the initial incarnation of Windows Azure, known as the Community Technology Preview (CTP), two different instance types are available for developers to use: Web role instances and Worker role instances.
Regardless of how it’s stored—in blobs, tables, or queues—all data held in Windows Azure storage is replicated three times. This replication allows fault tolerance, so losing a copy isn’t fatal. The system guarantees consistency, however, so an application that reads data it has just written will get what it expects. Windows Azure storage can be accessed either by a Windows Azure application or by an application running someplace else. In both cases, all three Windows Azure storage styles use the conventions of REST to identify and expose data. Everything is named using URIs and accessed with standard HTTP operations. A .NET client can also use ADO.NET Data Services and LINQ, but access to Windows Azure storage from, say, a Java application can just use standard REST.
Managing applications in this complex environment is challenging. For example, how do you upgrade your apps without bringing it down or degrading its performance, or how do you upgrade an underlying OS without degrading your app's performance of bringing it down. Windows Azure can handle both of these scenarios. Windows Azure separates the applications from the underlying OS so both the application and the OS are managed separately. Microsoft manages the OS and ensures it is up-to-date and always available and the developer of the service can focus exclusively on delivering their business logic. At the heart of Windows Azure is a so-called “fabric controller”. This manages services running on Windows Azure. Developers interact with the fabric controller, hand it their services and tell it how they wish to run their service. The fabric controller is then responsible for deploying the service to the global data center and ensuring its availability.In today's world services are expected to deliver 24/7 availability. Windows Azure strives for this in two important ways. First, all our components are built to be highly available. Fabric controller and storage system are built in a highly redundant and a four-quadrant way. No single processor are a disk failure. In fact, no double failure of these components can bring either of these services down. For massive scale, our storage system partitions and replicates the data across multiple machines, possibly thousands of machines, using adaptive replication, caching, automatic load balancing, our storage systems can maintain high availability under varying loads with no user intervention.Automates Service Management:You tell it what to do—it figures out howScale up, scale down, update or roll application back to a previous versionFabric:Abstracts the VMs from the physical devices
SQL Azure Database provides the best aspects of simple, cloud-based storage and a hosted RDBMS.Developers have the flexibility of being able to choose the data access model that best fits the application requirements. They can use the same tools and libraries as with on-premise client applications to build client applications or Web applications hosted in Windows Azure that access data through familiar data access APIs. Alternatively, they can use ADO.NET Data Services and the Entity Framework to expose a REST-based interface that enables rich Internet applications to access data in the cloud.Whichever data access model is used, SQL Azure Database significantly reduces the effort and cost associated with provisioning data storage for an application. You can just use the Web-based interface to create a new database, and then start building your application. As your scalability requirements increase, SQL Azure can grow with you to meet your specific needs.By using SQL Azure Database, you eliminate the need to manage your own data center servers. Maintenance is automated, reducing your administrative overhead.BackgroundThe initial release of SQL Azure was announced at the PDC in 2008. It consisted of a cloud-based data store that provided an HTTP/REST and SOAP based data access interface and a data object model based on authorities, containers, and entities. While this release provided a great way for developers to build rich applications that access data in the cloud, it lacked some of the key capabilities of a traditional, on-premise SQL Server-based database solution.The REST-based interface and ACE data model has been replaced with a TDS interface and a relational, Transact-SQL-based programming model– just like an on-premise SQL Server instance. This means that developers can create client applications for SQL Azure that use the same data access libraries as traditional, on-premise SQL Server solutions. For scenarios where a REST-based interface is desired, developers can use ADO.NET Services (formerly known as Astoria) and the ADO.NET Entity Framework in the Windows Azure platform to expose SQL Azure through a REST-based data access interface.
The SQL Azure storage platform was designed for extreme scale and low cost. To achieve this, it uses a partitioned data architecture where data is physically distributed across multiple servers in order to provide the high scalability and query performance associated with a federated database solution. The partitions are replicated to provide redundancy and failover capabilities. All partitioning, failover, and load-balancing is automatic.Rather than take a “single image” approach in which each customer gets a dedicated database server, customer data is physically spread across multiple servers in order to maximize scalability and read/write performance for common data access patterns. Workflow is used to achieve transactional consistency across partitions.The end result of this architecture is a highly scalable data platform that requires little to no administrative effort on the part of the customer to provision or manage. Operations and maintenance are automated, with built-in intelligence to detect failures and trigger automatic failover.Goal: A storage platform built for extreme scale and low costCommodity hardware to lower CapExLights out operations and self healing to lower OpExOptimize I/O throughput for specific app patternsOptimized for a handful of hardware SKU’s for datacenter operationsAchieved by:Partitioning dataApps are partition aware to exploit data parallelism for HA, scaling and throughputPartitions are replicated to achieve reliabilitySystem is self healing - automatically partitions data, fails over, load-balances, and scales-upTrade off single system image for scale at very low cost and high throughput“Fan out” operations for large scale cross partition query workloadsDistributed transactions enabled through workflowSpecific IO optimizations to reduce random writes and readsOptimized code paths for high throughputEasy to deploy and manageNo DBA required to manage clusterUse automated provisioning, deployment / rollback and monitoringUse distributed fabric for reliable failure detection, primary election, failover and load balancingFramework for deploying and running scheduled and one off tasks
From the customer’s perspective, SQL Azure provides logical databases for application data storage. In reality, each customer’s data is actually stored in multiple SQL Server databases, which are distributed across multiple physical servers. Many customers may share the same physical database, but the data is presented to the customer through a logical database that abstracts the physical storage architecture and uses automatic load balancing and connection routing to access the distributed data. Security and isolation is managed automatically.The key impact of this model for the customer is a move from managing physical servers to focus on logical management of data storage through policies.
In terms of security, SQL Azure uses the same authentication and authorization model as SQL Server. Logins are created at the Server instance level, and mapped to user accounts and roles at the database level. Access to objects and data in the database is based on permissions granted or denied to database-level user accounts.One key difference from SQL Server is that SQL Azure Db supports only SQL Server authentication – integrated Windows authentication is not supported. Authentication is achieved through a username and password transmitted over a secure, encrypted connection. Future released of SQL Azure may support additional authentication models.When a client opens a connection to SQL Azure, the connection context is set to a specific database. If no database is specified in the connection information, the database context is the Master database. Once a connection is established, the client application cannot change the database context by using the USE Transact-SQL keyword or a fully-qualified database name.
Provisioning is handled by a utility service that is exposed through a Web-based portal and an API. The utility service can be used to enumerate the servers associated with a customer account, show server usage statistics, and other common administrative tasks. You can also use the utility service to manage logins and create new databases with the CREATE DATABASE Transact-SQL command.
What is the difference between SQL Azure and SQL Server?How do we think about compatibility on/off premises – as necessary to provide a broad platform for customersKey Differences – v1 TimeframeSQL Azure v1 will cover a vast majority of the “feature/function” surface area SQL Server (RDBMS). Exceptions:SQL CLRServer-scoped catalogue (shared environment)Few T-SQL constructs not appropriate in a shared environment (global temp tables, DTC)Longer term, will extend other parts of the data platform to cloudSQL BI platformDWCore RDBMS functionality with necessary restrictions due to:SecurityResource GovernanceDatabase independence
This slide describes four common customer scenarios that AQL Azure supportsDepartmental workgroup applicationsBuilt with SQL Express or AccessSmall in size, 5 GB or lessLess than 10,000 rowsSmall number of concurrent users (tens)Owned by a department, not central IT.Often grows out an excel spreadsheet or Access databaseTypically one of the following types:Tracking app (purchase orders changes)Simple reporting app (CSS tool for tracking issues)Commonly pulls reference data from other systems.Simple security needs (a set of people all get read access, with a small number of people with Admin access)Do not have a dedicated DBA (usually managed by a department level IT helper or a technically savvy IW)Developer often a technically savvy IW. Especially for the Access apps.Web applicationsTypically built by a small development team with no little or administrative capabilitiesNeed to start small, but then be able to scale-up quickly and easily as required.Secure data hubs enable you to consolidate existing data store investments and access them through a single cloud-based hub. The security features provided by the SQL Azure Database platform ensure movement of, and access to your data is secure at all times. This enables you to develop or modify applications to provide geo-dispersed data access and enables the complete mobility of your workforce. You can be certain that if your employees have access to the internet they have access to their data!ISVs and SaaS ProvidersGrowing trend towards cloud-based LOB application offerings.Need global reach and scalability with the ability to quickly provision multiple tenants and manage billing
Windows Azure Platform David Chou firstname.lastname@example.org blogs.msdn.com/dachou
Types of Clouds Private Infrastructure Platform (On-Premise) (as a Service) (as a Service) You manage Applications Applications Applications You manage Runtimes Runtimes Runtimes Security & Integration Security & Integration Security & Integration Managed by vendor Databases Databases Databases You manage Servers Servers Servers Managed by vendor Virtualization Virtualization Virtualization Server HW Server HW Server HW Storage Storage Storage Networking Networking Networking
Types of Clouds Private Infrastructure Platform (On-Premise) (as a Service) (as a Service)
A Hybrid World Consistency Share & Reuse Security & Privacy Customizability High Control Public Cloud Private Cloud Economy of Scale High (on-premise) Ease of Provisioning Global Reach Partitioning & Redundancy Scalability & Availability
The Microsoft Cloud~100 Globally Distributed Data Centers Quincy, WA Chicago, IL San Antonio, TX Dublin, Ireland Generation 4 DCs
The Microsoft CloudCategories of Services Application Services Software Services Platform Services Infrastructure Services
Windows Azure Platform Web and Clouds Developer Experience Use existing skills and tools. Web applications Third party Cloud On- Composite applications premises LOB Applications
Windows Azure Platform Internet-scale, highly available cloud fabric Globally distributed Microsoft data centers (ISO/IEC 27001:2005 and SAS 70 Type I and Type II certified) Consumption and usage-based pricing; enterprise-class SLA commitment Compute – auto- Data – massively scalable & Service Bus – connectivity provisioning 64-bit highly consistent distributed to on-premises applications; application containers in relational database; geo- secure, federated fire-wall Windows Server VMs; replication and geo-location friendly Web services supports a wide range of of data messaging intermediary; application models Processing – relational durable & discoverable Storage – highly available queries, search, reporting, an queues distributed alytics on structured, semi- Access Control – rules- table, blob, queue, & cache structured, and unstructured driven federated identity; storage services data AD federation; claims-based Languages – .NET 3.5 Integration – synchronization authorization (C#, VB.NET, etc.), IronRuby, I and replication with on- Workflows – declarative ronPython, PHP, Java, native premise databases, other service orchestrations via Win32 code data sources REST-based activities
Pricing Compute Web Edition (1GB) Service Bus • $0.12 / CPU hour • $9.99 / month • $0.15 / 100k messages Storage Business Edition (10GB) Access Control • $0.15 / GB / month • $99.99 / month • $0.15 / 100k tokens • $0.01 / 10k transactions / Bandwidth Bandwidth month • $0.10 in / GB • $0.10 in / GB Bandwidth • $0.15 out / GB • $0.15 out / GB • $0.10 in / GB • $0.15 out / GB Virtual Machine instances Blob Storage Ingress/Egress Host OS Windows Server 2008 x64 Table Storage (to/from internet only) Guest OS Windows Server 2008 Enterprise x64 Multiple replicas Hypervisor Hyper-V CPU 1.5 - 1.7 GHz x64 equivalent Memory 1.7GB Network 100MbpsTransient storage 250GB Load balancers, routers, etc. Automated service management - Fabric controller operations (deploy/upgrade/delete/scale) - Load balancer programming
Service Guarantee All running Your service Database is Storage .NET Service roles will be is connected connected service Bus endpoint continuously and to the will be will monitored reachable internet available/ have external via web gateway reachable connectivity If role is (connectivity) unhealthy, we Internet Availability Message will detect facing roles monitoring Your storage operation and initiate will have every 5- requests will requests will corrective external minute be processed be processed state connectivity interval successfully successfully Automated Systems >99.95% >99.9% >99.9% >99.9% Management
Benefits BUSINESS TECHOLOGY WINDOWS AZUZURE DEMANDS DEMANDS PLATFORM OFFERS • Cost-effective solution to manage IT resources • Less infrastructure to buy/configure and support Lower costs Efficiency • Lower TCO • Predictable cost • Focus on delivering compelling software not on managing infrastructure Stay Innovation • Monetize new offering quickly without Competitive investment in billing and other enablement technologies. • Speed of development Generate New • Interoperability • Leverage existing IP Revenue Quickly Agility • Simplified deployment • Scale up or down as business needs change • Go to market faster • Reliable service Reduced • SLAs Reliability • Security Risk • Global data centers
http://www.azure.comSign up at the WindowsAzure Platformdevelopers‟ portal Windows Azure access Developer tools White papers Sample applicationsPlan pilotapplications, proofs ofconcept, and architecturaldesign sessions withWindows Azure partners
Windows Azure Architecture BUSINESSES CONSUMERS INTERNET
Windows Azure Architecture Fabric Fabric controller Compute Storage The Fabric Controller communicates with every server within the Fabric. It manages Windows Azure, monitors every application, decides where new applications should run – optimizing hardware utilization.
Windows Azure Architecture The Fabric Controller automates load balancing and computes resource scaling Security and Control Features include storage encryption, access authentication, and over-the-wire encryption using HTTPS. Industry Computation provides Storage Services allow customers to certification is part of the Windows application scalability. scale to store large amounts of data – Azure roadmap. Developers can build a in any format – for any length of combination of web and worker time, only paying for what they use Geographically distributed, state-of- roles. Those roles can be or store. the-art data centers host your replicated as needed to scale the applications and data, internet- applications and computational accessible from everywhere you processing power. choose to allow.
Windows Azure ArchitectureFabric Controller Interacts with a “Fabric Agent” on each machine Monitors every VM, application and instance Performs load balancing, check pointing and recovery
Windows Azure ArchitectureCompute GOAL: SCALABILITY Two instance types: Web Role & Worker Role Windows Azure applications are built with Scale out by replicating worker instances web role instances, worker role instances, as needed. or a combination of both. Allow applications to scale user and compute processing independently. Each instance runs on its own VM (virtual machine), replicated as needed
Windows Azure ArchitectureStorage GOAL: SCALABLE, DURABLE STORAGE Tables: simply Queues: serially accessed structured Blobs: messages data, accessed using large, unstruct or requests, allowing web-Windows Azure storage is an ured data ADO.NET Data roles and worker-roles toapplication managed by the Services (audio, video, e interactFabric Controller tc)Windows Azure applications can usenative storage or SQL AzureApplication state is kept in storageservices, so worker roles can replicateas needed
Windows Azure ArchitectureServices ManagementGOAL:AUTOMATED APPLICATION MANAGEMENT AND CONTROL Fabric The Fabric Controller automates service management
Data Storage Options SQL Server • SQL Server on-premises • Resource governance @ Dedicated Hosted machine • Security @ SQL Server/OS RDBMS • Hosted SQL Server Roll-your-own HA/DR/scale • Resource governance @ VM • Security @ SQL Server/OS SQL Azure Database Resources Roll-your-own HA/DR/scale (RDBMS) • Virtual DB server • Logical user database (LUDB) • Resource governance @ LUDB • Security @LUDB Shared Low High “Friction”/Control Value Propositions: Value Propositions : Value Propositions : • Auto HA, Fault-Tolerance • XSPs, Server Ops • Full h/w control – size/scale • Friction-free scale • SQL CLR • 100% compatibility • Self-provisioning • 100% compatibility • High compatibility
SQL Azure ArchitectureFlexible access to data in the cloud Simple storage and hosted RDBMS • Create client applications that access ODBC, OLEDB, A data in the cloud via TDS – just like Browser Application Application DO.Net on-premise SQL Server Application REST Client SQL Client* PHP, Ruby, … • Create cloud-based Web applications in Azure that use standard SQLClient libraries with ADO.NET • Create cloud-based REST data Cloud interfaces in Azure with ADO.NET Data Services and the Entity HTTP+REST Framework HTTP TDSLow friction data storage provisioning Windows Azure Data Center Web App REST(Astoria) • Web interface for simple, database SQL Client* ADO.Net +EF provisioning • Scale seamlessly as needed TDS + TSQL ModelSelf-managing data center • Automated maintenance SQL Azure • Built in high-availability and data recoverability * Client access enabled using TDS for ODBC, ADO.Net, OLEDB, PHP-SQL, Ruby, …
Data Platform Design Account • Goal: A storage platform Azure wide built for extreme scale and Billing instrument low cost • Architecture: Has one or more – An Azure account provides Server access to SQL Azure Database metadata – Each account can have one or Unit of authorization more logical server Unit of geo-location • Implemented as multiple physical servers within a given geo-location Has one or more – Each logical server can contain one or more logical database Database • Implemented as replicated partitioned Unit of consistency data across multiple physical databases Contains Users, Tables, Views, etc…
Logical User Databases• Uses shared infrastructure at SQL database and below – Each user database is replicated to one or more servers (configurable based on SLA) – Client requests are routed to current “primary server” for read and write operations (based on SQL session) – Security, lockdown and isolation enforced in SQL tier• Highly scalable and state-of-the-art HA technology – Automatic failure detection; client request re-routed to new primary on failure – High SLA guarantee using logical replication (hot standby replicas) – Automatic management, self-healing and load balancing across shared resource pool• SQL Azure Database provides provisioning, metering and billing infrastructure SQL Azure Database Provisioning (databases, accounts, roles, …, Metering, and Billing Machine 4 Machine 5 Machine 6 SQL Instance SQL Instance SQL Instance SQL DB SQL DB SQL DB User User User User User User User User User User User User DB1 DB2 DB3 DB4 DB1 DB2 DB3 DB4 DB1 DB2 DB3 DB4 Scalability and Availability: Fabric, Failover, Replication, and Load balancing DBA role will change to focus on policy/logical management
Security and Connection ModelsSecurity • Uses regular SQL security model – Authenticate logins, map to users and roles – Authorize users and roles to SQL objects • Supports standard SQL logins – Logins are username + password strings – Service enforces use of SSL to secure credentials – Future support for AD Federation, WLID, etc as alternate authentication protocolsConnections • Connect using common client libraries – ADO.NET, OLE DB, ODBC, etc. • Clients connect to a database directly • Cannot hop across DBs • Large surface of SQL supported within the database boundary – Future work will relax many of these constraints
Provisioning Model• Account and server provisioning – Portal and API based access – Ex: enumerate my servers, show server usage metrics, etc• Each account has one or more servers – Ex: srv123.data.database.windows.net * *• Each server has a virtual master database – Has subset of SQL Server master DB interface• Each server has one or more SQL logins – System creates sysadmin login on “server creation”• Databases created using “CREATE DATABASE” – Can be called by sysadmin or anyone with create DB permission
SQL Server Compatibility• SQL Server has many patterns for accomplishing tasks – SQL Azure Database supports a subset of full SQL Server patterns – Focus on logical and policy based administration – Patterns work in both SQL Azure Database and SQL Server • Enables migration of on-premise application to/from SQL Azure• SQL Azure Database is a multi-tenant service – Throttling and load balancing policies – Examples: limit on DB size, duration of transaction, …In Scope for v1 Out of Scope for v1 • Create/Alter/Drop on Database/Index/View • CLR • Stored Procedures (Transact-SQL) • Service Broker • Triggers • Distributed Transactions • Constraints • Distributed Query • Table variables, session temp tables (#t) • Spatial • + lots of others • All server level DDL • All physical DDL and physical catalog views
Application Scenarios Departmental Applications Web Applications Data Hubs ISV/SaaS Offerings
Common patterns and problems• How can you use cloud services to connect apps and services across deployment locations? – Bridge cloud, on-premises, and hosted assets – Navigate network and security boundaries, securely and simply – Handle identity and access across organizations and ID providers – Interoperate across languages, platforms, standards – Perform protocol mediation and schema mapping• Customers need a way to: Connect endpoints Control & secure access Service Bus Access Control
.NET Services provides solutionsfor developers facing those problems Connect Endpoints Service Bus Service Bus Access Control Service• Expose RESTful or SOAP services over the • Authorization management and federation internet through firewall and NAT infrastructure firewall firewall boundaries • Provides internet-scope federated identity NAT integration for distributed applications• Communicate bi-directionally between apps and services in an interoperable • Use it to manner • Secure Service Bus communications • Manage user-level access to apps across• Choose relays, queues, routers, and other organizations and ID providers message patterns and types• Scale out naturally and reliably as apps and services grow Your app Customer/partner app
.NET Services provides solutionsfor developers facing those problems Control Access Access Control Service 1. Define access Service Bus 3. Map input claims Access Control Service control rules for a to output claims• Network abstraction and virtualization customer • Integrate authorization into apps to control infrastructure “what users are allowed to do”• Enables many common shapes of • Federate with multiple identity systems communication in an efficient and across organizations and ID providers interoperable manner 6. Check claims • Easily apply fine-grained access control• Use it to rules • Connect applications across any network topology, including firewalls and NAT • Secure Service Bus communications boundaries • Scale out naturally and reliably as apps and • Exchange data between loosely coupled 5. Msg w/token services grow applicationsYour app Customer/partner users & apps
Service Bus: Core Capabilities• Internet-scoped overlay-network bridging across IP NATs and Firewalls with federated access control – Network Listen/Send from any Internet-Connected Device – Internet-scoped, per-endpoint Naming and Discovery – NAT/FW Traversal via TCP, TCP/Direct, and HTTP Web Streams Private Network Space B ACS ACS Internet A ACS D Space ACS ACS C
Service Bus: Core Capabilities• Transfer raw and structured data allowing for any common shape of communication – Raw Data, Text, XML, JSON, … – Datagrams, Sessions, Correlated Messages – Unicast, Multicast A B Octet-Streams Text XML A B SOAP … JSON XML- … RPC … A B
Service Bus: Core Capabilities• Built-In messaging primitives for temporally decoupled communication, routing, and message processing – Push/Pull translation for occasionally connected receivers – Publish/subscribe and message processing (after V1) Push Pull A B Push B Push C A D E
Pattern: REST Resource Management(Request/Response HTTP/HTTPS w/ arbitrary payloads) Windows Azure, Datacenter, Hosting, Amazon EC2, Google App Engine Storage Storage Storage App App App Instance Instance Instance ACS ACS POST, PUT, DELETE POST, PUT, DELETE POST ACS PUT POST, PUT, DELETE DELETE ACS ACS GET On-Demand „Pull‟ Sync Cache Continuous „Push‟ Sync On-Premise App(s)
Pattern: Document Exchange(session-bound, app-level ack‟d document transfers + notifications) Hosted In-House Outsourced ACS Storage Storage Storage E-Commerce Ordering Inventory / Shipping Front System System Ready PO ACS SO ACS Shipped Delivered ACS ACK ACK ACS Order Accepted Order Processed Web Client Hi-Fi Client Experience Experience
Pattern: External DMZ(any communication style, secure NAT traversal for TCP & HTTP/S) Home Internal Datacenter Storage Storage Storage Devices Enterprise Enterprise App Enterprise App Home Automation Instance App Instance Instance or Home Media Server Balance / Filter Reverse Proxy ACS ACS ACS http(s) / net.tcp net.tcp/direct Web or Hi-Fi Client Web or Hi-Fi Client Experience Experience
Pattern: Integrate “Anything”(session-bound, raw-binary transport tunneling) Windows Azure, Datacenter, Hosting, Amazon EC2 (Windows) Socket Agent NP Agent App ASP.NET J2EE, JDBC, Instance ADO.NET JMS Socket HTTP/HTTPS TDS Passthrough Passthrough Passthrough ACS ACS w/ URI Rewriting Socket Bridge HTTP Bridge NP Bridge Exchange/Mail (SMTP/IMAP) Active Directory (LDAP) ERP, CRM, Custom Apps System Center (SNMP) .NET, J2EE, ROR, PHP SQL … … Server On-Premise Infra Apps & Services On-Premise Data
Application PatternsCloud Web Application Web Mobile Silverlight WPF Enterprise Browser Browser Application Application Application User Enterprise Web Svc Enterprise Data Jobs ASP.NET Web Svc ASP.NET ASP.NET ASP.NET (Worker (Web Role) ASP.NET (Web Role) ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET Role) (Web Role) ASP.NET Private Cloud (On- (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) (Web Role) Premise) (Web Role) (Web Role) (Web Role) Table Blob Storage Cache Queue Application Storage Service Service Service Service Service Storage Service Application Application Reference Conn. Identities & Service Data Data Data Bindings Roles Orch. Identity Access Service SQL Data BI Workflow Service Bus Control Services Services Service Service Public Services
Application PatternsComposite Services Application Web Mobile Silverlight WPF Enterprise Browser Browser Application Application Application User Enterprise Web Svc Enterprise Data Jobs ASP.NET Web Svc ASP.NET ASP.NET ASP.NET (Worker (Web Role) ASP.NET (Web Role) ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET Role) (Web Role) ASP.NET Private Cloud (On- (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) (Web Role) Premise) (Web Role) (Web Role) (Web Role) Table Blob Storage Cache Queue Application Storage Service Service Service Service Service Storage Service Application Application Reference Conn. Identities & Service Data Data Data Bindings Roles Orch. Identity Access Service SQL Data BI Workflow Service Bus Control Services Services Service Service Public Services
Application PatternsCloud Agent Application Web Mobile Silverlight WPF Enterprise Browser Browser Application Application Application User Enterprise Web Svc Enterprise Data Jobs ASP.NET Web Svc ASP.NET ASP.NET ASP.NET (Worker (Web Role) ASP.NET (Web Role) ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET Role) (Web Role) ASP.NET Private Cloud (On- (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) (Web Role) Premise) (Web Role) (Web Role) (Web Role) Table Blob Storage Cache Queue Application Storage Service Service Service Service Service Storage Service Application Application Reference Conn. Identities & Service Data Data Data Bindings Roles Orch. Identity Access Service SQL Data BI Workflow Service Bus Control Services Services Service Service Public Services
Application PatternsB2B Integration Application Web Mobile Silverlight WPF Enterprise Browser Browser Application Application Application User Enterprise Web Svc Enterprise Data Jobs ASP.NET Web Svc ASP.NET ASP.NET ASP.NET (Worker (Web Role) ASP.NET (Web Role) ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET Role) (Web Role) ASP.NET Private Cloud (On- (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) (Web Role) Premise) (Web Role) (Web Role) (Web Role) Table Blob Storage Cache Queue Application Storage Service Service Service Service Service Storage Service Application Application Reference Conn. Identities & Service Data Data Data Bindings Roles Orch. Identity Access Service SQL Data BI Workflow Service Bus Control Services Services Service Service Public Services
Application PatternsGrid / Parallel Computing Application Web Mobile Silverlight WPF Enterprise Browser Browser Application Application Application User Enterprise Web Svc Enterprise Data Jobs ASP.NET Web Svc ASP.NET ASP.NET ASP.NET (Worker (Web Role) ASP.NET (Web Role) ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET Role) (Web Role) ASP.NET Private Cloud (On- (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) (Web Role) Premise) (Web Role) (Web Role) (Web Role) Table Blob Storage Cache Queue Application Storage Service Service Service Service Service Storage Service Application Application Reference Conn. Identities & Service Data Data Data Bindings Roles Orch. Identity Access Service SQL Data BI Workflow Service Bus Control Services Services Service Service Public Services
Application PatternsHybrid Enterprise Application Web Mobile Silverlight WPF Enterprise Browser Browser Application Application Application User Enterprise Web Svc Enterprise Data Jobs ASP.NET Web Svc ASP.NET ASP.NET ASP.NET (Worker (Web Role) ASP.NET (Web Role) ASP.NET ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET Role) (Web Role) ASP.NET Private Cloud (On- (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) ASP.NET (Web Role) (Web Role) (Web Role) Premise) (Web Role) (Web Role) (Web Role) Table Blob Storage Cache Queue Application Storage Service Service Service Service Service Storage Service Application Application Reference Conn. Identities & Service Data Data Data Bindings Roles Orch. Identity Access Service SQL Data BI Workflow Service Bus Control Services Services Service Service Public Services