Thesisverdediging “Ontwerp van enterprise applicaties op het .NET platform” Bart De Smet Academiejaar 2004-2005 Promotor: Prof. A. De Clercq Begeleider: Dhr. N. Sabbe Agenda Introductie Enterprise applicaties Het .NET platform Doelstelling Databasetoegang Communicatie tussen lagen Conclusie Vragen Vrijdag 10 juni 2005 Bart De Smet 2 Enterprise applicaties Kenmerken (M. Fowler): Persistente data Hoge datavolumes Complexe business-logica Vlotte gebruikersinterface Integratie met andere applicaties (EAI) Geen “information silo” Leidt tot verhoogde eisen! Resultaat: Gelaagd model Vrijdag 10 juni 2005 Bart De Smet 3 Enterprise applicaties Presentation Layer Business Logic Layer Co mm Thin client users (browser) un i ca Data Layer Business objects Business rules Persistence layer tio n Web application Communication Co mm ic un ati on Application Server(s) Database Server(s) Rich client users (WinForm) GUI application Vrijdag 10 juni 2005 Bart De Smet 4 Het .NET platform Visie: “Microsoft versie 3.0” Technologie: Ontwikkelingsframework: .NET Framework Ontwikkelingstools: Visual Studio “Windows Server System”: IIS, MSMQ, ... Database: SQL Server Gebruik van beta-technologie Performantietests onder voorbehoud Niet steeds foutloos Vrijdag 10 juni 2005 Bart De Smet 5 Doelstelling Concreet antwoord op volgende vragen: Mate van gelaagdheid? Welke technologie te kiezen? Rijpheid van Service-Oriented Architecture? Aandachtspunten en testcriteria: Gelaagheid en encapsulatie Goede applicatiestructuur voor betere maintainability Performantie Stijgende nood door EAI-scenario’s Productiviteit bij ontwikkeling “Aspecten” van beveiliging, manageability Vrijdag 10 juni 2005 Bart De Smet 6 Agenda Introductie Databasetoegang ADO.NET 1.x en 2.0 SQLXML SQL 2005 Web Services SOAP Data Provider Communicatie tussen lagen Conclusie Vragen Vrijdag 10 juni 2005 Bart De Smet 7 ADO.NET Vrijdag 10 juni 2005 Bart De Smet 8 ADO.NET DataSet Off-line weerspiegeling van de database Houdt wijzigingen bij Mogelijk probleem van “data aging” XML-gebaseerde datacarrier (o.a. voor webservices) Databinding mogelijk (Windows Forms, ASP.NET) DataAdapter Synchronisatie van off-line data met persistentie Gebruikt achterliggende DML-commando’s Waar past business logica? O/R-mapping? Strongly typed DataSets? Vrijdag 10 juni 2005 Bart De Smet 9 ADO.NET 2.0 Er verandert weinig aan de concepten Features Enkel voor SQL Server 2005: User Defined Types Query Notifications Multiple Active Result Sets Batched Updates Algemeen: Asynchrone databaseinvocatie DataSet verbeteringen Nieuwe datacontrols (Windows Forms) Toekomst: ObjectSpaces, WinFS, Comega Vrijdag 10 juni 2005 Bart De Smet 10 ADO.NET 2.0 User Defined Types1 Verhoogde proximity Risico op foutief gebruik Controleer relevantie voor types m.b.v. diverse regels Query Notifications1 Oplossing voor aging Netwerkbelasting Gebruik voor read-mostly data; combineer met caching Multiple Active Result Sets (MARS)1 Handig en inituïtief Slordig connectiebeheer Overweeg hogere proximity; besteed zorg aan connecties Batched Updates2 Eenvoudig, krachtig Batchgrootte-gevoelig Batchgrootte altijd zorgvuldig testen, geen nattevingerwerk Asynchrone databaseinvocatie Standaard patroon Eenvoudig bruikbaar Gebruik voor operaties met lage onderlinge beïnvloeding DataSet “verbeteringen” Welkome verbeteringen Binaire serializatie Voor compressie, gebruik GZip i.p.v. binaire serializatie 1 2 Enkel voor SQL Server 2005 Voorlopig enkel voor SQL Server 2005 Vrijdag 10 juni 2005 Bart De Smet 11 SQLXML Vrijdag 10 juni 2005 Bart De Smet 12 SQLXML Templates Voldoende encapsulatie Parameterisatie mogelijk Zeer flexibel en krachtig Modificatie van stored procedures is vereist Lage performantie1 Updategrams Intuïtief principe Parameterisatie mogelijk Geen encapsulatie Moeilijke code bij gebruik over HTTP Vaak “plumbing” nodig2 Lage performantie1 Diffgrams Integratie met DataSets Eenvoudig via API Geen encapsulatie Relatief lage performantie1 SOAP Web Services Voldoende encapsulatie Gebruik van standaarden Flexibiliteit en eenvoud Geen WS-* ondersteuning Niet compatibel met sommige infrastructuren Zeer lage performantie1 1 2 3 vergelijking met TDS vreemde tekens in kolomnamen niet toegestaan installatie op Active Directory domaincontroller Vrijdag 10 juni 2005 Bart De Smet 13 SQLXML XML? XML is niet compact (TDS wél) Lage performantie XML en SOAP zijn standaarden (TDS niet) Inzetbaar voor EAI-doeleinden Aandachtspunten Algemene opmerkingen Vals gevoel van gelaagdheid Encapsulatie is soms een illusie Hoge leercurve, niet bugvrij Scenario’s Weinig interessant binnen een enterprise applicatie Geschikt voor gebruik voor EAI-doeleinden Vrijdag 10 juni 2005 Bart De Smet 14 SQL Server 2005 Web Services Analoog aan SQLXML Web Services Nu via http.sys kernel listener Voordelen: Geen IIS-installatie vereist Geïntegreerd in de database zelf (Theoretisch) hogere performantie Toekomstige ondersteuning voor WS-* Nadelen: Werkt enkel op dezelfde machine als SQL Server Lage performantie in vergelijking met TDS Gebruik: Vooral interessant voor EAI-doeleinden Vrijdag 10 juni 2005 Bart De Smet 15 SOAP Data Adapter Eigen ontwikkeling Doelstelling: Gebruik van DataAdapter bij webservices Automatische generatie van instantiatie-code Werking: SoapConnection gebruikt proxyklasse SoapCommand roept webmethoden aan SoapDataAdapter synchroniseert off-line wijzigingen SelectCommand SoapDataAdapter DataSet -SelectCommand -InsertCommand -DeleteCommand -UpdateCommand InsertCommand DeleteCommand Proxy class +GetProducts() +InsertProduct() +DeleteProduct() +UpdateProduct() Web service HTTP SOAP +GetProducts() +InsertProduct() +DeleteProduct() +UpdateProduct() Database UpdateCommand Vrijdag 10 juni 2005 Bart De Smet 16 Agenda Introductie Databasetoegang Communicatie tussen lagen XML Web Services .NET Remoting SOA MSMQ Conclusie Vragen Vrijdag 10 juni 2005 Bart De Smet 17 XML Web Services Voordelen: Gebaseerd op standaarden: XML, SOAP, WSDL, UDDI WS-Specifications Eenvoudig en intuïtief principe (façade – proxy) “Explicitness of boundaries” Nadelen: XML-serializatie van data is vereist; weinig compact Lagere performantie dan binaire protocols Algemene aanbevelingen: Gebruik output caching Hou webservices statusloos Gebruik voor “chunky communication” (= relatief) Vrijdag 10 juni 2005 Bart De Smet 18 .NET Remoting Voordelen: Enorm hoge graad van transparantie Sterk aanpasbaar en uitbreidbaar Hoge performantie Nadelen: Té groot risico op “chatty communication” Geen standaardisatie: enkel .NET-naar-.NET Beperkte “roadmap” voor .NET Remoting (Indigo) Gebruiken of niet? Enkel voor inter-application domain (Microsoft) Lees: IPC op dezelfde machine Niet inzetbaar voor EAI Geen standaardisatie Vrijdag 10 juni 2005 Bart De Smet 19 SOA Service-oriented Webservices als entrypoints Achterliggende componenten worden verborgen “Loosely coupled” Contract = berichtgebaseerd Voorzien op fouten Vermijden van cascade-effect (belang bij EAI) Ondersteuning voor “aspecten” Beveiliging, integriteit, betrouwbaarheid Gedistribueerde transacties Beleidsregels Absolute must voor hedendaagse EAI Vrijdag 10 juni 2005 Bart De Smet 20 SOA Principes: Standaarden Set van WS-Specifications Implementatie in .NET via WSE Werkwijze: Definieer berichten via XSD Implementeer business components Eventueel gebruik van service agents Bouw een façade vóór de business components Gebruik WSE voor implementatie van de “aspecten” Rol van service als “gateway” Genereer proxies Piece of cake in Visual Studio Vrijdag 10 juni 2005 Bart De Smet 21 SOA Voordelen: Gestandaardiseerd; lange “roadmap” Tools en technologieën (voorbeeld BizTalk) Nadelen: Op heden onvolledig Reliable messaging (MSMQ) Distributed transactions (DTS) Jonge technologie (vb. mate van loosely coupling?) Gebruik: Voorzie façade layers vandaag, met WSE Gebruik deze ook binnen de applicatie Voor reliable messaging, gebruik MSMQ Toekomst = Indigo Vrijdag 10 juni 2005 Bart De Smet 22 MSMQ Wat is het? Bericht-gebaseerde communicatie via wachtrijen Relatief oude technologie in Windows Doch bruikbaar in .NET Biedt ondersteuning voor: Reliable messaging Transactionele messaging Combinatie met SOA “One-way communication” Betrouwbare bezorging is vereist “Fire and forget”-communicatie vereist bevestiging Voorbeeld: Plaatsen van een order Vrijdag 10 juni 2005 Bart De Smet 23 MSMQ Service Provider Eigen ontwikkeling Doelstelling: Gebruik van MSMQ vereenvoudigen Eenvoudige definitie van een “MSMQ Service” Bidirectionele communicatie Gebruik: MSMQ Service Application Server Host Application MQDL /export Client Application MICROSOFT CORPORATION Proxy class Declaratief (attributen) Tool MQDL.exe Bruikbaar bij SOA Vrijdag 10 juni 2005 Server Client Bart De Smet MQDL /proxy MQDL /svcman Service manager MQDL contract MSMQ Channel 24 Agenda Introductie Databasetoegang Communicatie tussen lagen Conclusie Vragen Vrijdag 10 juni 2005 Bart De Smet 25 Conclusie Datatoegang “Intra-enterprise application” gebruik TDS Voor integratiedoeleinden gebruik XML EAI is vroeg of laat nodig Liefst voor de business logic layer Plaatsen van een façade via SOA Ook mogelijk op de databaselaag SQLXML of SQL Server 2005 Web Services SOA = “Be prepared for EAI” Klassieke ontwikkeling blijft; façade is “gateway” Jonge technologie in evolutie (onvoltooid) Indigo = veelbelovende toekomst Vrijdag 10 juni 2005 Bart De Smet 26 Agenda Introductie Databasetoegang Communicatie tussen lagen Conclusie Vragen Vrijdag 10 juni 2005 Bart De Smet 27 Vragen Vrijdag 10 juni 2005 Bart De Smet 28