Upload
samson-shields
View
228
Download
0
Tags:
Embed Size (px)
Citation preview
Real-World SOA with Microsoft .NET and Windows Azure
John deVadoss, Microsoft, Director, Patterns & Practices
Brian Loesgen, MicrosoftPrincipal SOA Architect
Christoph Schittko, MicrosoftGlobal Application Strategist
SESSION CODE: ASI202
Who is this session for?Roles
Solutions ArchitectsDevelopers
SOA experience“tried and failed*”“do I still care? I thought it was over”“finally, beginning to really start implementing”
Session GoalsWhat you will see and learn:
The current state of SOA, where have we been, where are we nowThe cloud makes SOA more important than everFocus on three key hotspots (customer challenges) and their solutions on the Microsoft platform
What you WILL NOT see:End-to-end coverage of the Microsoft platformCode. This level 200 session is about design patterns and architecture, and how they can be applied to create business valueA “silver bullet” solution
Where we were
The SOA ROI Crisis…
24% say projects fell short of expectations55% say project introduced more complexity41% say project cost more than expected but failed to generate promised returnOnly 7% say results exceeded expectations
“The Dark Side of SOA”InformationWeek, September 4, 2006
“The Truth About SOA”CIO Magazine, June 15, 2006
“Services built in isolation, without taking into account the architectural and business goals of the company… may fail outright. Grand architectural planning exercises may drag on endlessly, without providing any real business benefit.”
Why do you still care
“Prepare for the cloud by developing SOA skills.”“Cloud Computing will cement the mainstream
role of SOA”Gartner, 2009
Real World Patterns that Address the Challenges….
LooseCoupling
Re-use
Scale
Challenge Details
Loose coupling • Messaging• Autonomy• Interoperability• Service virtualization
Scale • Horizontal• Elastic • State management• Long running processes
Re-use • Composition / Mash-ups• Economics• Integration
Distributed Computing Challenges we always struggle with…
Challenge DetailsLoose coupling • Messaging
• Autonomy• Interoperability• Service virtualization
Scale • Horizontal• Elastic • State management• Long running processes
Re-use • Composition / Mash-ups• Economics• Integration
The cloud helps with some of our challenges
Challenge DetailsLoose coupling
Scale • Global Distribution And Deployment• AuthN / AuthZ Across Boundaries
Re-use • Bridging On-Premise and Cloud• Robust Connections Across NAT,
Protocol and Fireball Boundaries
Cloud Architectures Amplify Other Challenges
Real World Patterns that Address the Challenges….
LooseCoupling
Re-use
Scale
Real World Patterns that Address the Challenges….
LooseCoupling
Re-use
Scale
From Stateful to StatelessStateful
Stateless Service
Stateful Service
State Repository
State Repository + State
Messaging
AppFabricWave 1 Windows Sever AppFabric (formerly “Dublin” & “Velocity”)
Manage services and workflowsInfrastructure for enhanced workflow and service hosting, configuration, and controlIntegration with IIS Manager and PowerShell to manage and monitor workflows and services
Monitor services and workflowsInfrastructure for storing workflow and service monitoring informationDashboard for service and workflow instance health
Distributed in-memory application cacheCaches any serializable CLR object and provides access through simple cache APIsSupports enterprise scale: tens to hundreds of computersProvides seamless integration with ASP.NET
Server/Service SymmetrySymmetric service developmentEarly adopter of common scale-out and availability fabric
Server Services
Applications
Programming Model and Tools
AppFabric
Windows Azure AppFabric (formerly .NET Services)
Server/Service ConnectivityServiceBus for connectivityClaims based access control
AppFabric Cache
… Services Tier(ASP.Net /
WCF)
Users
Database Cloud Data Tier
Application Application ApplicationCaching Access
LayerCaching Access
LayerCaching Access
Layer
Cach
ing
Serv
ice
Cach
ing
Serv
ice
Cach
ing
Serv
ice
Cache Tier
Challenge: Elastic Scale
Windows AzureService Instances
Challenge:
LooseCoupling
Re-use
Scale
Challenge: Loose Coupling
Patterns:Async MessagingInteroperable Message Format and ProtocolsService BusResource Autonomy
StorageInfrastructure (Processing, Storage, …)
RequiresQueues (Azure Queues, ServiceBus Buffers)WCF: SOAP, REST, JSONAzure Service Applications and Storage Instances
Web Role Worker Role
Loose Coupling With Windows Azure
Autonomous Instances
Azure Queues or Service Bus(REST / HTTP Interface)
Interoperable Service Protocols: SOAP, REST,
JSON
Division of Roles into Loosely Coupled Roles
3rd Party Consumer
Infrastructure Approaches to loose coupling
We have new choices today:Pure CloudOn PremiseHybridDistributed
Question everything. Don’t default to the same architectures just done in the cloud, consider the optionsOn-premise or in the cloud: we offer you choice
AppFabric Service Bus Connectivity
Application #1 Application #2Direct Connection facilitated by Service Bus if that is best
connection mechanism.
TextXMLGraphicsBinary DataStreaming
Firewall
Send
Receive
Exchange messages between loosely coupled, composite
applications.
Send
Receive
Europe Region
Global Collection Pattern #1
Asia Pacific Region North America Region
• Multiple distributed endpoints publish a message up to their closest Azure DC• Messages are collected and relayed to a central collection Azure DC• Messages are used at the central DC, or relayed down to on-premises
Messages are received by an on-premise application
Messages from remote endpoints “call home” to a single Windows Azure
collection point
South East Asia Sub-region
Europe Region
Global Collection Pattern #2
Asia Pacific Region North America Region
North Europe Sub-region
US South Central Sub-region
US North Central Sub-region
• Multiple distributed endpoints publish a message up to a single Azure region• Messages are used at the central DC, or relayed down to on-premises
Messages from the other Azure data centers “roll up” to a central collection
point data center
Messages are received by an on-premise application
Multiple distributed end-point applications “report up” to the single Azure data center
Messaging & Integration
E-COMMERCE
CRM
HR
ERP
Traditional Point-to-point
Point-to-point with cloud
E-COMMERCE
CRM
HR
ERP
CLOUD SERVICES
HR ERP
CRM
BUSINESS PARTNER
E-COMMERCE
CLOUD SERVICES
On-Premise ESB with cloud
Enterprise Service Bus (ESB)
An ESB is the on-premise loosely-coupled messaging backbone for your business solutionsAn ESB can serve as an operating environment for servicesESBs bring manageability and structure to point-to-point spaghetti integrationsAn on-premise ESB is an ideal bridge to your off-premise services and messaging exchanges
Applied Solution(Video walkthrough at BrianLoesgen.com)
Challenge:
LooseCoupling
Re-use
Scale
Challenge: Re-use
Patterns:OrchestrationComposite UI
Requires:Composition Runtime
Message Brokers (Routing / Transformation)Support for Compensation (WF/Biztalk)
Development Tools (Visual Studio)Ownership Model
Order Svc Mfg
Svc
Billing Svc
Inventory Svc
Accting Svc
Service Composition Tools
Challenge: Re-use, Composites
Design Patterns
Common UI PatternsSupervising PresenterPresentation Model (“Model-View-ViewModel”)
Views:Encapsulate UI & UI LogicMinimal Code BehindUI Designer Friendly
Presenters:Presentation Logic& StateUnit TestableView Independent
Separated Presentation
SupervisingPresenter
Model
View
PresentationModel ModelView
Modules
Unit Of Application AssemblyCollection of Related ComponentsFeature, Services, Views, Data AccessSlice & Dice: Mandatory, Optional, Role Specific
Unit Of DevelopmentIndependent DevelopmentIndependent Testing
Unit Of DeploymentUp-Front, Background or On-Demand
Finding & Loading ModulesModule Discovery
Pluggable Module CatalogsModule Loading
Background or On-Demand
Module Loader
Building the ExperienceShell – Application Host WindowRegions – Named Areas For View PlacementViews – Module UI & Presentation LogicUsing Code to Show Views:
Region
Region
Region
<ContentControl RegionManager.RegionName= “BuySellRegion” />
MyView view = …;
IRegion buySellRegion = regionManager.Regions[ “BuySellRegion" ];
buySellRegion.Add( view );
<ItemsControl RegionManager.RegionName= “DataRegion">
Building the ExperienceAutomatically Showing Views:
Less ComplexBlack Box ‘App Assembly’ CompositionSelect Views & Pull into Region
Region
Region
Region
<ContentControl RegionManager.RegionName= “BuySellRegion” />
regionManager.RegisterViewType( “BuySellRegion", typeof( BuySellView ) );
Summary: Mapping Challenges to Products…
On-Premise Cloud
Loose coupling Windows Server AppFabricBizTalk
Windows Azure PlatformWindows Azure AppFabric
Re-use BizTalk, BizTalk ESB, Mash-ups (Prism, Silverlight, WPF, SharePoint)
Windows Azure PlatformAppFabric Service Bus
Scale Windows Server AppFabricBizTalk
Windows Azure Platform
Where do I start?
Real-world business driversMiddle-outPartition your business capabilitiesDemonstrate value in rapid iterations – not waterfallSuccessful customers ‘snowball’
Related Content
Breakout Sessions (session codes and titles)
Interactive Sessions (session codes and titles)
Hands-on Labs (session codes and titles)
Product Demo Stations (demo station title and location)
Complete an evaluation on CommNet and enter to win!
© 2010 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.
JUNE 7-10, 2010 | NEW ORLEANS, LA