SYNTACTIC SUGAR MS SQL 2005 – SOA Petr Krejzl
Obsah Service Oriented Architecture Web Services v MS SQL 2005 Service Broker
Service Oriented Architecture Co tomu předcházelo? XML Webové služby Hromadné nasazení platformě nezávislých web. služeb a XML pro výměnu dat v heterogenním prostředí SOA – architektura informačních systémů orientovaná na služby
Service Oriented Architecture Systém volně vázaných (loosely coupled) asynchronních webových služeb Nemusí být přímé vazby mezi aplikacemi Databázové servery, aplikační servery, messaging Modularita Reusability (ne na úrovni tříd) Zkracuje se doba vývoje
Web Services WS = aplikace identifikovaná pomocí URI WS nabízí aplikační logiku dostupnou přes Internet WS komunikují pomocí protokolu SOAP (Simple Object Access Protocol) – XML WSDL (Web Services Description Language) – popis služeb
Web Services – HTTP Endpoints Jak to funguje v MS SQL 2005? Nepotřebuje IIS Potřebuje ale serverový OS (Win Server 2003) - zajišťuje HTTP.sys
Web Services – HTTP Endpoints Kdy je to vhodné? Databázově orientovaná aplikace Žádná další logika – chceme vystavit výsledky uložené procedury
Web Services - HTTP Endpoints CREATE ENDPOINT PocetEndpoint STATE = STARTED AS HTTP ( PATH='/sql', AUTHENTICATION = (INTEGRATED), PORTS = (CLEAR) ) FOR SOAP ( WEBMETHOD 'Sluzba1' (NAME = 'DB.dbo.SP1'), WEBMETHOD 'Sluzba2' (NAME = 'DB.dbo.SP2'), WSDL = DEFAULT, DATABASE = 'JmenoDB', NAMESPACE = DEFAULT )
Web Services – HTTP Endpoints Využití v kódu (C#) Přidáme Web Reference Vytvoříme instanci Zavoláme localhost.Endpoint ws = new localhost.Endpoint(); ws.Credentials = CredentialCache.DefaultCredentials; int vysledek = ws.VratNeco();
Web Services – HTTP Endpoints DEMO
Service Broker Message-based komunikační platforma Umožňuje budovat asynchronní, volně vázané aplikace Aplikace si vyměňují zprávy nutné k dokončení úlohy
Service Broker Aplikační vrstva 2 aplikace, příp. aplikace a procedura Jedna z nich iniciuje komunikaci – pošle zprávu Logická vrstva Komunikace mezi službami (kontrakt) Kontrakt definuje způsob komunikace – zákazník pošle objednávku, potvrdíme mu převzetí Definuje se také typ zpráv Fyzická vrstva TCP/IP Fronty zpráv (bezpečné doručení)
Service Broker - složení Message – zpráva, která se posílá Contract – definuje jaké zprávy mohou být přijaty/poslány v rámci úlohy Úloha – např. poslání objednávky do skladu Fronta – jsou v ní zprávy Service – bod, kde se napojí fronta na kontrakt Dialog – výměna zpráv mezi službami
Service Broker - komunikace
Service Broker - Message Definuje „šablonu“ posílaných zpráv CREATE MESSAGE TYPE message_type_name [ AUTHORIZATION owner_name ] [ VALIDATION = { NONE | EMPTY | WELL_FORMED_XML | VALID_XML WITH SCHEMA COLLECTION schema_collection_name } ] CREATE MESSAGE TYPE [//SyntacticSugar/SendOrder] VALIDATION = WELL_FORMED_XML
Service Broker - Contract Definuje, které zprávy mohou být přijaty/poslány v rámci úlohy CREATE CONTRACT [//SyntacticSugar/OrderContract] ( [//SyntacticSugar/SendOrder] SENT BY INITIATOR, [//SyntacticSugar/OrderReceived] SENT BY TARGET )
Service Broker - Queue Obsahuje zprávy Přístup: SELECT nebo RECEIVE Může být spojena s uloženou procedurou CREATE QUEUE StoreQueue WITH STATUS=ON STATUS: ON/OFF MAX_QUEUE_READERS Jméno procedury
Service Broker - Service Bod, kde se spojuje fronta s kontraktem CREATE SERVICE [//SyntacticSugar/OrderService] ON QUEUE dbo.StoreQueue ([//SyntacticSugar/BookOrderContract])
Service Broker - Dialog Vlastní výměna zpráv mezi službami Každý dialog má unikátní ID uniqueidentifier BEGIN DIALOG FROM SERVICE [//SyntacticSugar/OrderService] TO SERVICE '//SyntacticSugar/DistributionService' ON CONTRACT [//SyntacticSugar/OrderContract]; SEND ON MESSAGE TYPE [//SyntacticSugar/SendOrder] ('XML');
Service Broker – Message Receiving Výběr zprávy SELECT CAST(message_body AS XML) FROM dbo.Queue RECEIVE TOP (1) message_body FROM dbo.Queue <LineItem ItemNumber="1" ISBN=" " Quantity="1" /> Výsledek
Service Broker Konverzace sestává z posílání a přijímaní zpráv Délka je libovolná Kterákoliv strana ji může ukončit END
Service Broker - Dodatky Při komunikaci mezi různými instancemi DB ROUTE Šifrování, certifikáty
Service Broker - Event Notification Umožňuje asynchronně zachytávat události Přihlášení uživatelů, DDL atd. Je potřeba pouze fronta a služba, zbytek udělá systém sám
Service Broker – Event Notification DEMO
Shrnutí MS SQL 2005 nabízí webové služby Service Broker – komunikační platforma pro zasílání zpráv Notifications SqlDependency
SYNTACTIC SUGAR Děkuji za pozornost
Syntactic Sugar s.r.o. Specializujeme se na vývoj software na zakázku na platformě Microsoft Windows s použitím technologií.NET (C#, ASP.NET, Web Services, MS SQL Server…) Pracujeme na projektech pro klienty z USA, ČR a Rakouska Spolupracujeme s mnoha studenty ze ZČU Nabízíme studentům získání praxe, vydělání peněz i pracovní pobyty v USA Hledáme nové kolegy!