Patterns & Practices for Composing Cloud ServicesHaishi BaiTechnical Evangelist, Windows Azure3-526
The Starting PointSprint 1: RelaySprint 2: Claim-based IdentitySprint 3: Loose-couplingSprint 4: IntegrationLooking ahead
Agenda
• Local SQL Server Database (mocked)
• WCF Server• WPF Client• Windows Authentication• MVVM
The Starting PointClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntitiesTCP
Sprint 1 ChallengesClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
PublicEntities?
TCP
Integration Strategies• Data
• Shared data source• Import/export• Data sync
• Connectivity• Expose public endpoints• Windows Azure Virtual Network• Windows Azure Service Bus Relay
• Brokered• Middleware• Message-based Integration
Service Bus Relay• Securely expose on-premises WCF services to
public• No firewall or network infrastructure changes
DEMO: Service Bus Relay
Sprint 1 ArchitectureClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
PublicEntities
TCPRelay
Relay Endpoint
PublicEntities
Sprint 2 ChallengesClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
?
TCP
PublicEntities
Relay
Relay Endpoint
PublicEntities
Windows Azure Active Directory• Provide access control for your applications• Single sign-on across your applications• Social connections across the enterprise• Integrate with you on-premises AD
1
WAADTenant
ApplicationWIF
App
Login Page
2 3
4
ADApplicationWIF
App
DEMO: Windows Azure Active Directory
Sprint 2 ArchitectureClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
PublicEntities
TCPRelay
Relay Endpoint
PublicEntities
WAAD
Directory Sync
Sprint 3 ChallengeClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
PublicEntities
TCP
WAAD
Relay
Relay Endpoint
PublicEntities
Directory Sync
Loose Coupling Pattern with Service Bus• Brokered message communication• Loose-coupling among systems• Asynchronous pattern• Workload leveling
DEMO: Service Bus Queue
Sprint 3 ArchitectureClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
PublicEntities
TCP
WAAD
Relay
Relay Endpoint
PublicEntities
Directory Sync
Order Taker
Order Queue
Sprint 4 ChallengeClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
PublicEntities
TCP
WAAD
Relay
Relay Endpoint
PublicEntities
Directory Sync
Order Taker
Order Queue
DEMO: AMQP
Sprint 4 ArchitectureClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
PublicEntities
TCP
WAAD
Relay
Relay Endpoint
PublicEntities
Directory Sync
Order Taker
Order Queue
AMQP
Message-based Integration PatternsPipes and filtersMessage routerMessage translatorMessage endpointPoint-to-point channelPublish-subscribe channelData type channelInvalid message channelDead letter channelGuaranteed deliveryChannel adapterMessaging bridgeMessage busCommand messageDocument messageEvent message
Request-replyReturn addressCorrelationSequenceExpirationFormat indicatorContent based routerMessage filterDynamic routerRecipient listSplitterAggregatorSequencerComposed message processorScatter-gather
Routing slipProcess managerMessage brokerEnvelop wrapperContent enricherContent filterClaim checkNormalizerCanonical data modelMessage gatewayMessaging mapperTransactional clientPolling consumerEvent-driven consumerCompeting consumersMessage dispatcher
Selective consumerDurable subscriberIdempotent receiverService ActivatorControl busDetourWire tapMessage historyMessage storeSmart proxyTest messageChannel purger
Sprint 5 ArchitectureClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
PublicEntities
TCP
WAAD
Relay
Relay Endpoint
PublicEntities
Cache
Directory Sync
BLOB
CDN
Order Taker
Order Queue
Sprint 6 ArchitectureClient
Views
Proxy
Server
Service
Repositories Public
EntitiesPrivateEntities
DataRecords View
Model
PublicEntities
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
PublicEntities
TCP
WAAD
Relay
Relay Endpoint
PublicEntities
Cache
Directory Sync
BLOB
CDN
Order Taker
Order Queue
Server
Service
Repositories
Order Taker
Data Sync
ServerSprint 7 ArchitectureClient
Views
Proxy
PublicEntities
View Model
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
WAAD
Cache
BLOB
CDN
Order Queue
Server
Service
Repositories
Order Taker
TCP
LB
Mobile
Mobile
Web Client ServerSprint 8 ArchitectureClient
Views
Proxy
PublicEntities
View Model
Web Client
API
Proxy
HTML ViewsView Model
PublicEntities
PublicEntities
WAAD
Cache
BLOB
CDN
Order Queue
Server
Service
Repositories
Order Taker
TCP
LB
Mobile
Mobile
Accounting BizTalk
Office
Epilogue: Recipe-VVM• R – Repository• E – Entity• C – Claim-based architecture• I – Action API and Query API• PE – Public Entity• V – View• VM – View Model
Resourceswww.bing.comwww.windowsazure.commsdn.microsoft.com
@HaishiBai2010
@trontron
blog.haishibai.com
Evaluate this session
Scan this QR code to evaluate this session and be automatically entered in a drawing to win a prize!
© 2013 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.