270 likes | 377 Views
SYNTACTIC SUGAR. MS SQL 2005 – SOA. Petr Krejzl p etr.krejzl@syntacticsugar.com. Obsah. Service Oriented Architecture Web Services v MS SQL 2005 Service Broker. Service Oriented Architecture. Co tomu předcházelo? XML Webové služby
E N D
SYNTACTICSUGAR MS SQL 2005 – SOA Petr Krejzl petr.krejzl@syntacticsugar.com
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();
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 - 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 COLLECTIONschema_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 DECLARE @Conv_Handler uniqueidentifier BEGIN DIALOG CONVERSATION @Conv_Handler FROM SERVICE [//SyntacticSugar/OrderService] TO SERVICE '//SyntacticSugar/DistributionService' ON CONTRACT [//SyntacticSugar/OrderContract]; SEND ON CONVERSATION @Conv_Handler 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 • Výsledek <order id="3439" customer="22" orderdate="7/15/2005"> <LineItem ItemNumber="1" ISBN="1-59059-592-0" Quantity="1" /> </order>
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 CONVERSATION @Conv_Handler;
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
Shrnutí • MS SQL 2005 nabízí webové služby • Service Broker – komunikační platforma pro zasílání zpráv • Notifications • SqlDependency
SYNTACTICSUGAR Děkuji za pozornost
Syntactic Sugar s.r.o. • Specializujeme se navývoj softwarena zakázku na platformě Microsoft Windowss použitím technologií .NET (C#, ASP.NET,Web Services, MS SQL Server…) • Pracujeme na projektech pro klienty z USA,ČR aRakouska • Spolupracujeme s mnohastudenty ze ZČU • Nabízíme studentům získánípraxe, vydělání peněz ipracovní pobytyv USA • Hledáme nové kolegy! • jobs@syntacticsugar.com