Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen1.NET baserede arkitekturer Henrik Lykke Nielsen Softwarearkitekt Microsoft Regional Director.

Lignende præsentationer


Præsentationer af emnet: "Maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen1.NET baserede arkitekturer Henrik Lykke Nielsen Softwarearkitekt Microsoft Regional Director."— Præsentationens transcript:

1 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen1.NET baserede arkitekturer Henrik Lykke Nielsen Softwarearkitekt Microsoft Regional Director for Danmark lykke@captator.dk www.captator.dk 8748 0202 2237 3311

2 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen2 Hvad er det egentlig vi vil? Objektorienteret  serviceorienteret If OO Then HowTo Logiske flerlagsmodeller del 1 Service orienterede arkitekturer Framework udvikling Eksempler på fleksible, generiske arkitekturer ADO.NET Logning Logiske flerlagsmodeller del 2 Distribution – pragmatisk fanatisme Lav den rigtige applikation Agenda

3 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen3 Sammenhæng Pålidelig Simpel administration, udrulning og anvendelse Effektivisere brugeres arbejde – rigtig information Robust og understøttende implementation (for brugere) Performance Stabilitet, tilgængelighed og skalerbarhed Sikkerhed Integration mellem applikationer Brug af standarder Brug af tilgængelige resourcer og funktionalitet Produktivitet Samlet omkostning - Total Cost of Ownership Udbytte - Return on Investment Små projekter – hurtig leverance – lille risiko Økonomi Målsætning med IT-infrastrukturen

4 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen4 Gartner konklusioner Application integration will be, arguably, the most important IS deliverable during the next five years. The most common mistake in application integration is treating it as the responsibility of individual development teams - it is an enterprise-wide issue. The two keys to implementing great business processes are “zero- latency enterprise” and “straight-through processing” strategies. The most successful businesses will deploy a real-time, middleware-based “enterprise nervous system” for integrating applications. Create an integration competency center, maintain an evolving integration architecture (e.g., city plan) and implement a shared technical infrastructure for integration. All of the business units, application systems, people and automated devices throughout a virtual enterprise should be viewed as participants in one holistic system.

5 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen5 Agility – evnen til forandring “As we see it, enterprise technologies need to do far more than serve up the essential ‘abilities’ – availability, reliability, scalability, and manageability; they also need to provide businesses with the agility to understand, anticipate, and respond to changing customer needs.” – Steve Ballmer

6 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen6 Lav gode afvejninger Performance Skalerbarhed Korrekthed Stabilitet Sikkerhed Hurtig udvikling Kodegenbrug Let vedligehold Lille kodemængde Letforståelig kode Fleksibilitet Centralisering af implementation

7 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen7 Traditionel statefull OO: Serviceorienteret stateless model: Objekt orientering  serviceorienteret Property1 Property2 Property3 Method( ) Method(p1, p2, p3) Session- state { Statefull og chatty Stateless Stateless og chunky

8 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen8 Objekt orientering Klassisk syn ofte: Klasser håndterer selv persistens Indeholder CRUD metoder Ikke lagdelt – ikke løse koblinger Nedarvning handler om typer ikke funktionalitet To OO or not to OO? What is the question? OO er ikke et mål men et middel Brug OO på de rigtige tidspunkter Ikke alt er OO Design patterns kan give god OO Men ikke altid

9 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen9 OO er død! R.I.P. Brugen af OO OO er mere end nogensinde før af stor vigtighed Men anbefalingerne om brugen har ændret sig Længe leve OO!

10 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen10 Logiske flerlagsmodeller UserDataBusiness MS SQL XX DB

11 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen11 Logiske flerlagsmodeller Hvorfor lagdele? Skabe uafhængighed af forandring Skabe overblik og struktur Datalaget er ikke bare databaser Præsentationslaget er meget volatilt Forretningslogik er den kode der (stadig) gælder...uanset valgt præsentationslag...uanset valgt datakilde

12 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen12 Logiske flerlagsmodeller Lagdeling kan være en rekursiv process Komponenter, services, assemblies,... er logiske enheder, der kan bestå af flere fysiske

13 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen13 Hvad gør et system agilt? Fleksibel, servicebaseret arkitektur Løse koblinger Beskedbaseret (message-driven) Udveksling af bløde ”dokumenter” i stedet for hårde kald Kan være en implementationsmæssig detalje Standardbaseret kommunikation og datarepræsentation Klar adskillelse mellem generisk og specifik kode

14 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen14 Hvad er services? Citat Microsoft: Ikke kun forretningsprocesser Ikke kun via webben Services er Baserede på standarder Uafhængige af platform, sprog, teknologier Gode til distribuerede applikationer Gode til integration af heterogene systemer Ofte asynkrone og message baserede Gode for langvariage kald, skalerbarhed, sikre systemer Baseret på grovkornede kald Ofte fokuseret på genbrug af høj-niveau processer (f.eks. forretningsprocesser) What is a "Service" ? A reusable Business Process that can be accessed through the web Visse vasse!!

15 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen15 Services Finkornede contra grovkornede metoder Services er ofte grovkornede Alle data med i kaldet => ingen state på serveren Bør dog være komplette Stærke koblinger skyldes ofte mange ”små kald” Services gør stærke koblinger svage (løse)

16 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen16 Det er ikke kun XML web services, der er services! Direkte services WebMethod attribut direkte på metode Ingen (yderligere) abstraktion Facade services Ikke (nødvendigvis) en 1-til-1 sammenhæng mellem logik metoder og service metoder Undgår at logik metoden forurenes med service teknologi og service logik XML web services som services Sub Metoden() Sub Facaden() Sub Metoden()

17 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen17 Framework Class Libary System System.DataSystem.Xml System.Web Globalization Text Security Collections Resources Reflection Net IO Threading Diagnostics CodeDom Configuration OleDb ADO.NETSqlClient “XmlDocument” Xsl/XPath Runtime InteropServices Remoting Serialization Serialization ConfigurationSessionState CachingSecurity Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Text Printing System.Windows.Forms “Reader/Writers” Odbc “Control” Design “Form” ComponentModel

18 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen18 Hvad er et framework? A set of cooperating classes that makes up a reusable design for a specific class of software. A framework provides architectural guidance by partitioning the design into abstract classes and defining their responsibilities and collaborations. A developer customizes the framework to a particular application by subclassing and composing instances of framework classes. [Design Patterns, GOF, 1995]

19 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen19 Hvad er et framework? Et framework er en række konsistent sammenhængende softwareenheder, der implementerer en given arkitektur eller centrale dele deraf for en familie af applikationer. [.Henrik, 2002]

20 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen20 Kodegenbrug… Effektivitet i udviklingen: Billigere og hurtigere Effektivitet i vedligeholdelsen Lettere at rette fejl og ændre funktionalitet Færre fejl (efterhånden ;^) Indpakning letter optimering Bedre abstraktion Reducerer kompleksitet Mindre mængder konkret applikationskode Mere ensartet programmeringsstil Komponent frameworks giver...

21 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen21 Kriterier for gode frameworks Performance, skalerbarhed og stabilitet er givne (!) Skal give stor grad af genbrug Skal understøtte arkitekturen Har indbygget kompetence Er sammenhængende og konsistente Lette at forstå brugen af Giver god implicit kodestandard Er fleksible – understøtter agility Er ikke statiske over tid Skal designes til at kunne ændres og udvides Frameworks kan være tekniske såvel som forretningsspecifikke

22 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen22 XML Parser … Web/Win Form Controls VS.NET Designers.NET Data Provider DataAdapterDataReader Command Connection …SQL OLE DB VS.NET Class Generator DataSet Item Cust Order Kode ADO.NET arkitekturen

23 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen23 Managed Providers System.Data.SqlClient MS SQL Server 7 eller senere System.Data.OleDb System.Data.Odbc System.OracleClient Består af Connection, Command, DataReader, DataAdapter Specifikke for datasource Er ikke (helt) ens i struktur Lidt besynderlig opbygning System.Data Data store Data Provider

24 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen24 SqlClient SqlConnection IDbConnection SqlCommand IDbCommand SqlDataAdapter DbDataAdapter DataAdapter IDataAdapter IDbDataAdapter IDataAdapter SqlDataReader IDataReader IDataRecord System.Data OleDb OleDbConnection IDbConnection OleDbCommand IDbCommand OleDbDataAdapter DbDataAdapter DataAdapter IDataAdapter IDbDataAdapter IDataAdapter OleDbDataReader IDataReader IDataRecord

25 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen25 Overvejelser Løse bindinger kræver adskillelse af provider og consumer – implementation skjult for klienterne System.Data.Ups Providers er specifikke og forskellige Både på type og data niveau (f.eks. forskellig SQL-syntaks og semantik) Trade-off performance og specifik funktionalitet generalitet (uafhængighed af provider) Målsætning: Om muligt have det bedste af begge verdener Specifik opførsel søges specificeret deklarativt, afkoblet og som data ADO.NET er meget fleksibelt, meeen... Der skal en del kode til Lav derfor forsimplende abstraktioner

26 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen26 Generaliseret tilgang til provider Mange muligheder... Brug overloading På kaldsstedet tages konkret stilling Indpakning Bliver noget tungt Programmér mod basisklasser og interfaces Ikke al funktionalitet er tilgængelig Instansiering stadig et problem Lav instansieringerne via en factory Lav under alle omstændigheder et generelt datalag

27 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen27 Valgt løsning ConnectionInfo Abstrakt strategiklasse: DataStrategy Konkrete strategier: DataStrategySqlClient, DataStrategyOleDb,... DataStrategyFactory: GetStrategy(ConnectionInfo) RecordIdStrategy:...Identity,...Guid,...TableDefined,... TimeStampStrategy:...Auto,...Guid,...DateTime,... DataUtil DataStringBuilders

28 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen28 ConnectionInfo Captator.Eifos.Data.ConnectionInfo Dataklasse til ”connection”-informationer Specifikation af konkrete strategier New (dataStrategyNameSpace) Provider, Server, Database, User, Password RecordIdStrategy, TimeStampStrategy Mulighed for Connection objekt DataUtil.CreateConnectionString Kalder virtuel metode på DataStrategy

29 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen29 Eifos.Data SqlClientStrategy DataStrategy OleDbStrategy DataUtil ConnectionInfo StringBuilders DataStrategyFactory > 2.1 2 1 2.2 2.2.1 2.3 2.4

30 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen30 Opsummering - Data Data Abstrakt DataStrategy Konkrete strategier instansieres af DataStrategyFactory vha. reflektion Konkrete klasser – stateless aht. caching (singleton) Ortogonal db-funktionalitet som selvstændige strategier RecordIdStrategy, TimeStampStrategy ConnectionInfo samler trådene ”Stateless” utility funktioner som shared members

31 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen31 ADO.NET DataSet  DataReader Foretræk generelt DataSets DataReaders kun ved brug-og-smid-væk Brug ikke visuelle data-access designere Brug ikke typed DataSets som et alternativ til generalisering Pas på med Visual Studios typed Datasets Lav et ADO.NET baseret framework

32 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen32 Logning Brugseksempel: Logning af fejl Mål: Kunne logge til mange forskellige”medier” Selve logningen uafhængig af de specifikke medier Logge til en række af medier på én gang Logning kan i sig selv medføre fejl Der skal foretages en failover logning X Y 1 2 2.1

33 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen33 Eifos.Logging - et generisk logging framework MessageQueueLogger AbstractLogger SqlLogger LogManager * TextFileLogger VisualLoggerEventLogger XmlFileLogger * FailOver

34 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen34 Eifos.Logging LogManager _loggersCollection LogData metode Logger _failOverCollection LogData metode Specifikke konstruktører på konkrete loggere F.eks. ConnectionInfo på SqlLogger Abstrakt Formatter (ikke kun relevante ved logning!) New(ByVal formatterDefinition As String) Specifikke konstruktører på konkrete formattere F.eks. TableName på DataSourceDataFormatter

35 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen35 Eksempler fra vores framework (Eifos) Data Logning Konfigurationsinformationer Bruger-administration og -håndtering Libra dokumentmodel Website framework Automatiseret data og user interface integration Automatisk generering af user interface Calculus Håndtering af multiple sprog (internationalisering) Statehåndtering og Caching Generisk ObjectFactory... og meget, meget mere

36 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen36 Flerlagsmodellen – logisk model UserDataBusiness MS SQL XX DB Overfladisk!

37 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen37 Logisk arkitekturmodel Adskille forretningsregler og UI fra data tilgang Adskille data logik fra data tilgang Adskille generelle aspekter fra konkret kode Adskille konkret UI fra generel UI Resultat: Fleksibilitet og genbrug

38 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen38 Data håndtering og tilgang Business objekter med CRUD Typisk statefull, håndterer selv database tilgang, altid metoder Business Logic (BL) og Data Access Logic (DAL) Business objekter/entiteter Strongly typed, muligvis statefull, ofte metoder Visual Studios ”Strongly Typed DataSets” Strongly typed, ingen custom metoder Datasets Weakly typed ADO.NET objekter, ingen custom metoder XML Weakly typed XML dokument, ingen custom metoder DAL Stateless funktioner til database tilgang (CRUD, queries, m.m.)

39 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen39 Udsnit af logisk arkitekturmodel Data LoggingFormatters ADO Fil IO MSMQ EventLog... VisualLogger LibraDAL Loggers.* LibraBL Eifos.Data – generisk data lag Stateless funktioner Stateless funk. & Entiteter Ext. Document ValueDAL Document WebUIBL Stateless funktioner Stateless funk. & Entiteter

40 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen40 Aspekter Aspekter der er ortogonale i forhold til den primære kode (f.eks. forretningslogikken) skal (om muligt) isoleres mest muligt fra denne F.eks. sikkerhed, caching, overvågning, test,... Ofte søgt håndteret deklarativt og afkoblet fra koden (COM+, ASP.NET) Konfigurationsfiler er gode til demoer, men...... skal også kunne ske programmeringsmæssigt I.NET ofte via attributter (sikkerhed, WebMethod,...) Men pas på at det ikke bare bliver et ”nyt” programmeringssprog Kan ofte implementeres meget fleksibelt via interfaces (ikke via nedavning)

41 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen41 MSDN artikel ”Application Architecture for.NET: Designing Applications and Services” http://msdn.microsoft.com/library/default.asp?url=/library/ en-us/dnbda/html/distapp.asp Indeholder nogle ganske udmærkede og interessante arkitekturelle overvejelser 166 sider

42 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen42 Calculus Calculus beregner udtryk angivet som tekststreng Ingen datalag kun “businness” lag og evt. UI lag En selvstændig “stand-alone” komponent Kopieret den nødvendige kode ;^( For ikke at få for mange, for små, stærkt fragmenterede komponenter og en for kompleks arkitektur DLL-nightmare: CalculusAnden parser Lex EifosFoundation StringUtil

43 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen43 Web-applikation Windows- applikation WinForms.NET-applikation Eksekveringsmodeller

44 maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen44 Spørgsmål www.captator.dk www.captator.dk nyheder, artikler, information,...


Download ppt "Maj 2003.NET baserede arkitekturer ved Henrik Lykke Nielsen1.NET baserede arkitekturer Henrik Lykke Nielsen Softwarearkitekt Microsoft Regional Director."

Lignende præsentationer


Annoncer fra Google