200 likes | 394 Views
Service Oriented Architecture (SOA). Richard Godfrey CEng MBCS CITP Architect Developer & Platform Group Microsoft rgodfrey@microsoft.com. Agenda. Microsoft & SOA SOA technology & frameworks (.Net) Implementation. Business Architecture. Information Requirements. Functional
E N D
Service Oriented Architecture (SOA) Richard Godfrey CEng MBCS CITP Architect Developer & Platform Group Microsoft rgodfrey@microsoft.com
Agenda • Microsoft & SOA • SOA technology & frameworks (.Net) • Implementation
Business Architecture Information Requirements Functional Requirements Operational Requirements Information Architecture Application Portfolio Technology Architecture Aligning Business and IT Business Top Down BottomUp IT
Moving to SOA: The Top-Down Approach • How it works: • Define a business architecture • Using, for example, Microsoft’s Motion methodology • Discover what services are required • Create service-oriented apps based on this • Pros: • It’s elegant, clean, and sensible • Cons: • It’s very difficult in most organizations • Getting the up-front funding and business buy-in is tough • Keeping up with business change is also tough
Moving to SOA: The Bottom-Up Approach • How it works: • Build a service-oriented app • Then build another one • Next, work on central SOA issues, e.g., security and management • Then build another service-oriented app . . . • Pros: • It’s the only approach that has worked in most organizations • Cons: • It’s an inelegant, piecemeal way to address the problem
SOA in One Slide – The “Message” Service Oriented Architecture Example of a tightly coupled solution Your Partner You Programming Language Programming Language Database Database Agreements Object Model Object Model Operating System Schema Operating System Application Server Application Server
Development Evolution and .NET Application Scope Objects Visibility Reuse Instances Statics Components Some self definition eg Type Libraries Roles and events Web ServicesSelf describing WSDL, Request Response Local, w/in firewall, Machine to machine Ubiquitous WSA Shared Memory Procedural Parameters, returning values Global M to M IPC Tightly coupled Decoupled & Self Describing
Process oriented Build to change Incrementally built and deployed Shift To A Service-Oriented Architecture From To • Function oriented • Build to last • Prolonged development cycles • Application silos • Tightly coupled • Object oriented • Known implementation • Orchestrated solutions • Loosely coupled • Message oriented • Abstraction
Systems Operational Requirements composed of enforce Policies governed by exchange bound by have Message Exchange Pattern Messages Contracts describe is a set of Schemas define structure of contain Service OrientationKey Concepts Services
Management Services The Anatomy of a “Service” SOAP Message Service Logic State Policy
The Four Tenets of Service-Orientation Boundaries are Explicit Developers opt-in to consuming, exposing, and defining public-facing service façade. Services and consumers are independently versioned, deployed, operated, and secured. Services are autonomous Data never includes behavior; Objects with data and behavior are a local phenomenon. Share schema & contract, not class Compatibility based on policy Capabilities and requirements represented by a unique public name; Used to establish service suitability.
Web Services Architecture“Secure, Reliable, Transacted services” BPEL4WS Business Processes ReliableMessaging Security Transactions Quality of Service Coordination WSDL, UDDI, Inspection Description SOAP (Logical Messaging) Other protocols Other services Messaging XML, Encoding Transport Transports
Service Process Service DocumentA DocumentC-1 DocumentC-2 Contracts EitherC-1 or C-2 DocumentB Process SOA Design Issues • Schema definition • Message definition • Contract definition • Message handling • Process management • Transaction model • Operational compliance • Exception handling • Message to Object mapping • Refinement of Analysis • …
Service Log Sign Message Processing Infrastructure Service Serialize Reliable messaging Encrypt Authorize Audit Message Processing Infrastructure Deserialize Authenticate Service Operations Issues • Security • Access control • Monitoring • Management • QoS and SLA enforcement • Versioning • Scalability • Dealing with unreliability • Exception routing • Caching
Visual Studio .NET Health and Activity Tracking (HAT) Orchestration Designer Human Workflow Services Business Activity Monitoring (BAM) Business Rules Engine More BizTalk Server 2004 Engine BizTalk Server 2004 Orchestrations .NET Framework Windows
“Indigo” Design Goals Unifies today’s distributed technology stacks Composable functionality Appropriate for use on-machine, cross machine, and cross Internet Unification “The unified programming model for rapidly building service-oriented applications on the Windows platform” WS-* interoperability with applications running on other platforms Interoperability with today’s distributed stacks Interoperability & Integration Productive Service-Oriented Programming Service-oriented programming model Supports 4 tenets of service-orientation Maximized developer productivity
Productive DevelopmentSecure, Reliable, Transacted Application Development …Using Visual Studio .NET 2003 20,379 lines security • class HelloService { • [WebMethod] • public String Hello(String Greeting) { • X509CertificateCollection collection = new X509CertificateCollection(); • IntPtr blob = Marshal.AllocHGlobal(Marshal.SizeOf( typeof(CRYPTOAPI_BLOB))); • IntPtr data = (IntPtr)((int)blob + • Marshal.SizeOf(typeof(CRYPTOAPI_BLOB))); • … • SeqAckRange range = new SeqAcknRange(id, low, high ); • SeqAckRange[] ranges = { range }; • ReliableQueue.ProcessAcks( ranges ); • … • hr = pITxDispenser->BeginTransaction (NULL, • ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, • &pITransaction); • … • return Greeting; • } • } 5,988 lines reliable messaging 25,507 lines transactions 4,442 lines infrastructure Total lines 56,296
Productive DevelopmentSecure, Reliable, Transacted Application Development …Using Visual Studio .NET 2003 and WSE 10 lines security class HelloService { [WebMethod] public String Hello(String Greeting) { foreach ( SecurityToken tok in requestContext.Security.Tokens { X509SecurityToken token = tok as X509SecurityToken } … SeqAckRange range = new SeqAcknRange(id, low, high ); SeqAckRange[] ranges = { range }; ReliableQueue.ProcessAcks( ranges ); … hr = pITxDispenser->BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction); … return Greeting; } } 1,804 lines reliable messaging 25,507 lines transactions Total lines 27,321
Productive DevelopmentSecure, Reliable, Transacted Application Development …Using Visual Studio 2005 and Indigo 1 line security [ServiceContract(SecureChannel, SecurityMode =“Windows")] [Reliability(Guarantees.ExactlyOnce | Guarantees.InOrder)] [ServiceContract] class HelloService { [ServiceOperation(TransactionFlowAllowed = true)] String Hello(String Greeting) { return Greeting; } } 1 line reliable messaging 1 line transactions Total lines 3