470 likes | 622 Views
SQL Server 2005 als Applikationsserver. Die Client-Server-Renaissance?. DD3, D1. Marcel Gnoth (Avanade), Jörg Neumann (Resco). Agenda. Übersicht – SOA und SQL CLR Integration Web Services Service Broker Diskussion. Jörg Neumann. Consultant, Autor, Speaker
E N D
SQL Server 2005 als Applikationsserver Die Client-Server-Renaissance? DD3, D1 Marcel Gnoth (Avanade), Jörg Neumann (Resco)
Agenda • Übersicht – SOA und SQL • CLR Integration • Web Services • Service Broker • Diskussion
Jörg Neumann • Consultant, Autor, Speaker • Schulungen, Coachings, Entwicklung • Schwerpunkte: • Client-Technologien • Datenbanken • Links zu weiterführenden Artikeln finden Sie am Ende der Slides. • Mail: Joerg.Neumann@Resco.de • Blog: WWW.HeadWriteLine.BlogSpot.com
Das Programmierhandbuch SQL Server 2005 Jörg Neumann, u.a.
Marcel Gnoth • Dipl. Inf. Marcel Gnoth, MCSD • Senior Consultant, Avanade Deutschland GmbH • Office Business Application Group & Business Intelligence • marcel@gnoth.net , www.gnoth.net (Code+Folien) • Autor • dotnetpro, dotnet-magazin, Developerworld, MSDN • Sprecher • BASTA!, TechTalk, SQL Server Days, NRW06 • Themen • Verteilte nachrichtenbasierte Informationssysteme • MS Message Queueing, SQL Server Service Broker • Office System 2003 / 2007 Integration • BI, ETL, Reporting • VB6, COM, SQL Server, .Net
Übersicht SOA und SQL Server
CLR – Integration Komponenten für den Server
Warum CLR-Integration? • SQLCLR • Einheitliches Programmiermodell • Sprach- und Funktionsvielfalt von .NET • Mit T-SQL kombinierbar
SQL Server vs. CLR • Speichermanagement • Thread-Management • Typsystem • Sicherheit • Verfügbarkeit • CLR-Integration muss explizit aktiviert werden
CLR-Erweiterungen in .NET 2.0 • Runtime Hosting API • Assembly Loading • AppDomain Management • Thread-Management/Synchronisation • Deadlock-Erkennung • Security Management • Speicherverwaltung
CLR-Datenbankobjekte erstellen • CLR-Methoden werden mit Attributen gekennzeichnet • SqlProcedure • SqlFunction • SqlUserDefinedAggregate • SqlUserDefinedType • SqlTrigger • Enthalten zum Teil auch Laufzeitinformationen • Für jede CLR-Methode wird ein Datenbankobjekt erstellt
Zugriff auf die aktive Session Zugriff auf den Ausgabestrom Zugriff auf Trigger-Daten Definition einer Datenzeile Serverseitiges ADO.NET • Namespace Microsoft.SqlServer.Server • Programmiermodell wie auf dem Client • SqlConnection • SqlDataAdapter • SqlCommand • Zusätzliche Serverklassen • SqlContext • SqlPipe • TriggerContext • DataRecord
Demo CLR-Prozedur erstellen
T-SQL vs. SQLCLR • T-SQL • Bei mengenorientierten Operationen • High-Performance-Zugriffe • SQLCLR • Bei zeilenorientierten Operationen • Komplexen Berechnungen • Regular Expressions • Verschlüsselung • Stringmanipulation • Externe Zugriffe
Wofür SQLCLR nicht ist • Ersatz für T-SQL • Serverseitige Datenzugriffsschicht • O/R-Mapping mit UDTs • Word/Excel/PDF-Generierung • Image Processing
Ressourcen – CLR Bücher • A First Look at SQL Server 2005 for Developers Bob Beauchemin u.a., Addison-Wesley, ISBN: 0321180593 Artikel • Using CLR Integration in SQL Server 2005http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sqlclrguidance.asp Links • SQL Server 2005 Developer Centerhttp://www.msdn.microsoft.com/SQL/2005/ • Virtual Lab: SQL Server 2005 SQL CLR Integrationhttp://msdn.microsoft.com/virtuallabs/sql/default.aspx/
Warum Web Services? • Interoperabilität • Vermeidung binärer Datenformate • Vermeidung von plattformspezifischer Zugriffs-APIs • Integration • Business to Business • Business to Customer • Application to Application • Processing • Abbildung hierarchischer Daten • Speicherung von „intelligenten“ Dokumenten • Validierung und Transformation von Strukturen
Web Services mit SQL2005 • Zugriff über HTTP / HTTPS • Veröffentlichung von • Stored Procedures • User Defined Functions • SQL-Abfragen • Einsatzfälle • Anbindung von DBs über Intra-/Internet • Service Orientierte Architekturen • Integration mit BizTalk, SharePoint, InfoPath
Features • Dynamische WSDL-Generierung • Session-Support • Batch-Abfragen • Umfangreiches Security-Modell
Standards • Basiert auf offenen Standards • HTTP • SOAP 1.1 und 1.2 • WSDL 1.1 • XSD Schemas
Kompatibilität • Visual Studio 2002, 2003 und 2005 • MS SOAP Toolkit 3.0 • JBuilder 9 • Perl • Axis 1.1 • WASP • Glue • WSI-BP
HTTP Endpoints • Definiert Schnittstelle für die Kommunikation • Vergleichbar mit einem virt. Verzeichnis im IIS • Verwendet intern HTTP.SYS Kernel Mode Treiber • Läuft unter Windows Server 2003 / WinXP (SP2) • HTTP und HTTPS möglich
Authentifizierung • Anonym • Basic • Digest • Integrated (NTLM, Kerberos) • WS-Security
WSDL-Generierung • Dynamische Generierung • Complex • Komplexe Typbeschreibung • Ideal für die Verwendung von DataSets • Simple • Minimale Beschreibung • Hohe Interoperabilität • Benutzerdefinierte Generierung • Eigene Stored Procedure erstellt WSDL
Batch Abfragen • In XML verpackte SQL-Abfragen • Basiert auf SOAP • Muss für einen Endpoint explizit freigegeben werden • Kann über Web Service-Proxy ausgeführt werden
Demo Web Services
Ressourcen - Webservices Artikel • What‘s New in FOR XML in SQL Server 2005http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/forxml2k5.asp • Usage Scenarios for SQL Server 2005 Native Web Serviceshttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/soapscenarios.asp
Service Broker • Neu in SQL2005 • Ermöglicht asynchrones Messaging zwischenSQL-Servern • Warteschlangen sindversteckte Tabellen • Können mit SQL verwendet werden • Stored Procedures übernehmen Verarbeitung
Einsatzszenarien • Entkoppeln von Transaktionen • Verteilen der Arbeit auf mehrere SQL Server • Garantierte Nachrichtenzustellung • Entlastung bei Spitzenlast • Batch-Verarbeitung
Die Kommunikation • Nicht zwischen zwei Queues, Datenbanken oder Servern • Zwischen Diensten (Services) • Abstrahieren Infrastruktur • Änderungen an der Infrastruktur können vorgenommen werden, ohne Systeme zu beeinträchtigen • SOA
Nachrichten Infrastruktur • Message, MessageType • Nachrichten haben definierten Typ • Contract • Wer darf wem, welche Nachrichtentypen senden • Queue • Aktiv / Inaktiv
Service anlegen • Ordnet Contract einer Queue zu • Dialoge verwenden Serivces als Endpunkte • Beim Deployment können den Services physische Queues zugeordnet werden
Conversations • Kommunikation zwischen zwei Services erfolgt in Conversations • Beliebig viele Nachrichten können zu einer Conversation gehören • Feste Reihenfolge • Aktuell nur ein Typ: Dialog • Begin Conversation • FromService muss lokal existieren • ToService wird als Text übergeben • Wird über eine Route lokalisiert
Senden • Conversation Handle, Nachrichtentyp, Nachricht • Nachrichten landen erst in Transmission Queue • Interne Ack-Messages send on conversation @hmessage type [mtAskKyoto](@msg) select * from sys.transmission_queue
Empfangen • Select • Receive • Body ist varbinary -> casten select cast(message_body as XML), * From quKyoto Receive cast(message_body as nvarchar(MAX)),* From quKyoto
Queue Aktivierung • Beim Eintreffen einer Nachricht kann eine Aktion ausgelöst werden • Stored Proc (Internal Activation) ALTER QUEUE quKyoto WITH ACTIVATION( STATUS = On,PROCEDURE_NAME = [QueueActivation], MAX_QUEUE_READERS = 1, EXECUTE AS SELF) ALTER QUEUE quKyoto WITH ACTIVATION( STATUS = Off)
Queue Aktivierung - SP • Normale Stored Procedure • Mehrere Instanzen möglich CREATE PROCEDURE [dbo].[QueueActivation]WITH EXECUTE AS CALLER AS DECLARE @dh uniqueidentifierDECLARE @msg XML WAITFOR(RECEIVE TOP(1) @dh = conversation_handle, @msg = message_body FROM [quKyoto] ), TIMEOUT 15000 INSERT INTO XML_MESSAGES (Nachricht) VALUES (cast(@msg as XML))
Demo Nachrichten senden und empfangen
Ressourcen SSB • Blogs • Rushi Desai: http://blogs.msdn.com/rushidesai/ • Niels: http://www.sqljunkies.com/WebLog/nielsb/ • Newsgroup • SQL Server 2005 Beta News Groups: http://msdn.microsoft.com/SQL/2005/ • SSB Devolopers Spot • www.sqlservicebroker.com • dotnetpro Marcel Gnoth, 6+7 2005 • www.gnoth.net
Uff... Alles wird gut