syntactic sugar

27
SYNTACTIC SUGAR MS SQL 2005 – SOA Petr Krejzl [email protected]

Upload: lois-gaines

Post on 01-Jan-2016

44 views

Category:

Documents


0 download

DESCRIPTION

SYNTACTIC SUGAR. MS SQL 2005 – SOA. Petr Krejzl p [email protected]. Obsah. Service Oriented Architecture Web Services v MS SQL 2005 Service Broker. Service Oriented Architecture. Co tomu předcházelo? XML Webové služby - PowerPoint PPT Presentation

TRANSCRIPT

SYNTACTIC SUGARMS SQL 2005 – SOA

Petr Krejzl [email protected]

Obsah

Service Oriented Architecture

Web Services v MS SQL 2005

Service Broker

Service Oriented Architecture

Co tomu předcházelo?XMLWebové 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, messagingModularitaReusability (ne na úrovni tříd)

Zkracuje se doba vývoje

Web Services

WS = aplikace identifikovaná pomocí URIWS nabízí aplikační logiku dostupnou přes InternetWS komunikují pomocí protokolu SOAP (Simple Object Access Protocol) – XMLWSDL (Web Services Description Language) – popis služeb

Web Services – HTTP Endpoints

Jak to funguje v MS SQL 2005?Nepotřebuje IISPotř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 PocetEndpointSTATE = STARTEDAS 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 ReferenceVytvoříme instanciZavolá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 BrokerAplikační vrstva

2 aplikace, příp. aplikace a proceduraJedna z nich iniciuje komunikaci – pošle zprávu

Logická vrstvaKomunikace 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á vrstvaTCP/IPFronty 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 skladuFronta – jsou v ní zprávyService – bod, kde se napojí fronta na kontraktDialog – 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ávyPřístup: SELECT nebo RECEIVEMůže být spojena s uloženou procedurou

CREATE QUEUE StoreQueueWITH STATUS=ON

STATUS: ON/OFFMAX_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 - DialogVlastní výměna zpráv mezi službamiKaždý dialog má unikátní ID

DECLARE @Conv_Handler uniqueidentifier

BEGIN DIALOG CONVERSATION @Conv_HandlerFROM SERVICE [//SyntacticSugar/OrderService]TO SERVICE '//SyntacticSugar/DistributionService'ON CONTRACT [//SyntacticSugar/OrderContract];

SEND ON CONVERSATION @Conv_HandlerMESSAGE 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

<order id="3439" customer="22" orderdate="7/15/2005"><LineItem ItemNumber="1" ISBN="1-59059-592-0" Quantity="1" />

</order>

Výsledek

Service Broker

Konverzace sestává z posílání a přijímaní zprávDé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álostiPř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 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 a Rakouska

Spolupracujeme s mnohastudenty ze ZČUNabízíme studentům získánípraxe, vydělání peněz ipracovní pobyty v USA

Hledáme nové [email protected]