1 / 44

.NET baserede arkitekturer

.NET baserede arkitekturer. Henrik Lykke Nielsen Softwarearkitekt Microsoft Regional Director for Danmark lykke@captator.dk www.captator.dk 8748 0202 2237 3311. Agenda. Hvad er det egentlig vi vil? Objektorienteret  serviceorienteret If OO Then HowTo Logiske flerlagsmodeller del 1

Download Presentation

.NET baserede arkitekturer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. .NET baserede arkitekturer Henrik Lykke Nielsen Softwarearkitekt Microsoft Regional Director for Danmark lykke@captator.dk www.captator.dk 8748 02022237 3311 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  2. Agenda • 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

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

  4. 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. .NET baserede arkitekturer ved Henrik Lykke Nielsen

  5. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

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

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

  8. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

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

  10. Logiske flerlagsmodeller User Business Data MSSQL XXDB .NET baserede arkitekturer ved Henrik Lykke Nielsen

  11. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

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

  13. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  14. 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) Visse vasse!! What is a "Service" ?A reusable Business Process that can be accessed through the web .NET baserede arkitekturer ved Henrik Lykke Nielsen

  15. 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) .NET baserede arkitekturer ved Henrik Lykke Nielsen

  16. XML web services som services • 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 <WebMethod(...)>Sub Metoden() <WebMethod(...)>Sub Facaden() Sub Metoden() .NET baserede arkitekturer ved Henrik Lykke Nielsen

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

  18. 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] .NET baserede arkitekturer ved Henrik Lykke Nielsen

  19. 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] .NET baserede arkitekturer ved Henrik Lykke Nielsen

  20. Komponent frameworks giver... • 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  21. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  22. Web/Win Form Controls VS.NET Class Generator XML Parser Kode Cust OLEDB SQL … ADO.NET arkitekturen VS.NET Designers DataSet .NET Data Provider DataAdapter DataReader Item Command Order Connection <xml>…</xml> .NET baserede arkitekturer ved Henrik Lykke Nielsen

  23. Data Provider System.Data • Managed Providers • System.Data.SqlClientMS 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 Data store .NET baserede arkitekturer ved Henrik Lykke Nielsen

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

  25. Overvejelser • Løse bindinger kræver adskillelse af provider og consumer – implementation skjult for klienterne • System.Data.Ups • Providers er specifikke og forskelligeBå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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  26. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

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

  28. 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.CreateConnectionStringKalder virtuel metode på DataStrategy .NET baserede arkitekturer ved Henrik Lykke Nielsen

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

  30. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  31. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  32. 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 1 2 Y 2.1 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  33. * Eifos.Logging - et generisk logging framework LogManager AbstractLogger * FailOver SqlLogger EventLogger VisualLogger MessageQueueLogger TextFileLogger XmlFileLogger .NET baserede arkitekturer ved Henrik Lykke Nielsen

  34. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  35. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  36. Flerlagsmodellen – logisk model Overfladisk! User Business Data MSSQL XXDB .NET baserede arkitekturer ved Henrik Lykke Nielsen

  37. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  38. 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.) .NET baserede arkitekturer ved Henrik Lykke Nielsen

  39. VisualLogger Logging Loggers.* Data ADO LibraDAL DocumentWebUIBL LibraBL DocumentValueDAL Udsnit af logisk arkitekturmodel Formatters Ext. Fil IOMSMQEventLog... Eifos.Data – generisk data lag Stateless funk. &Entiteter Stateless funktioner Statelessfunk. &Entiteter Stateless funktioner .NET baserede arkitekturer ved Henrik Lykke Nielsen

  40. 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) .NET baserede arkitekturer ved Henrik Lykke Nielsen

  41. 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 .NET baserede arkitekturer ved Henrik Lykke Nielsen

  42. 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: Calculus Anden parser EifosFoundation Lex StringUtil .NET baserede arkitekturer ved Henrik Lykke Nielsen

  43. Eksekveringsmodeller Web-applikation Windows-applikation WinForms .NET-applikation .NET baserede arkitekturer ved Henrik Lykke Nielsen

  44. Spørgsmål www.captator.dknyheder, artikler, information, ... .NET baserede arkitekturer ved Henrik Lykke Nielsen

More Related