Service Orienteret Arkitektur. - en teknisk betragtning. Ordrupvej Gentofte. tel fax

Relaterede dokumenter
Service Orienteret Arkitektur. - en kommerciel betragtning. Ordrupvej Gentofte. tel fax

2. Systemarkitektur... 2

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

DANSK IT ARKITEKTUR CERTIFICERING

Objects First with Java A Practical Introduction Using BlueJ

Object-Relational Mapping

Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling

SYSTEMDOKUMENTATION AF POC

Harmoni. Med SAP PI. Når tingene går op i en højere enhed. Kort & Godt. January 2012

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0

Serviceorienteret Arkitektur

Service Orienteret Arkitektur

Navision Stat (NS 9.2)

ADIS, WS og Meta Service

Procedurer for styring af softwarearkitektur og koordinering af udvikling

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Indholdsfortegnelse. Systembeskrivelse kapitel 3 Forretningslogik

Bilag 2 Kundens IT-miljø

Integrationer imellem AX2012 og Winformatik Økonomisystem vers. 3.0

Koncept for systemforvaltning af den fælles open source kode, herunder procedure for opfølgning på software-versioner af OpenTele

Den fælleskommunale Rammearkitektur. - en arkitektur for den kommunale digitalisering

Dokumentet/dokumenter der kommenteres på: Fælles retningslinjer for webservices. Organisationen der kommenterer: SKAT - Løsningsarkitektur og Test

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:

Introduktion. Jan Brown Maj, 2010

Bilag 12 - Fælles arkitekturramme for GD1-GD2-GD7. OIO Serviceprincipper

Objektorientering. Programkvalitet

KURSER INDENFOR SOA, WEB SERVICES OG SEMANTIC WEB

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade København Ø

EasyRun En løbers bedste ven

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Web services i brug. Anvendelse uden for biblioteksverdenen

UDFORDRINGER OG POTENTIALER VED SOA I SUNDHEDS-IT MED UDGANGSPUNKT I FMK

ENTERPRISE ARCHITECTURE (EA) STRATEGY, BUSINESS AND IT ALIGNMENT

Governance kræver en beholder til metadata

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

System Arkitekt Practitioner

10. sept 2013 NOTAT. Integrationsmodel støttesystemer

Ibrugtagning af Fødselsindberetningsservicen på NSP

UML til kravspecificering

AuthorizationCodeService

STS Designdokument. STS Designdokument

Sag og Dokument: Eksempel på brug af generelle egenskaber

Oplæg til workshop om funktionsudbud og tildeling

Vilkår for Dialogintegration

Introduction til.net remoting i VB.NET

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125

Arkitektur for begyndere

LEVERANCE 1.3. Model for kvalitetssikring

Projektlederens roller og kompetencer. Cases til Projektlederens roller og kompetencer

Klasser og objekter. (Afsnit i manualen)

Styring af testmiljøer almindelig god praksis

XML webservice for pensionsordninger. Version 1.0 Draft A

DOKUMENTBROKER Koncept

Component based software enginering Diku 2005 Kritikopgave

Vejledning - Udarbejdelse af gevinstdiagram

Application Note: AN-Z05

Vejledning til udarbejdelse af jobfunktionsroller og tilknytning til brugersystemroller

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere

4 Basal Objekt-orienteret Programmering I.

(Bilag til dagsordenspunkt 8, Kommunale anvenderkrav til støttesystemerne)

Datatekniker med programmering som speciale

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

TDCs Signaturserver. 11/05 - Version TDC Erhverv Sikkerhed og certifikater

Ejendomsdataprogrammet - Matriklen Løsningsarkitektur

Valg af webservice standard

OS2faktor. AD FS Connector Vejledning. Version: Date: Author: BSG

NemID DataHub adgang. & Doc , sag 10/3365

Hvornår er dit ERP-system dødt?

Abstrakte datatyper C#-version

Specifikationsdokument for servicen PID-CPR

Real-time programming safety in Java and Ada

Den fælleskommunale Rammearkitektur. - en arkitektur for den kommunale digitalisering

KIH Database. Systemdokumentation for KIH Databasen. 1. maj Side 1 af 13

Bilag 3 - Designspecifikation Bistand til administration og udvikling af Dynamisk Database. November 2018

Kommentar fra KMS til Specifikation af Serviceinterface for Person

Adressering af ind- og ud gange på BCxxxx IEC1131 PLC uden TC system manager

Informations- og datamodellering

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Cloud i brug. Migrering af Digitalisér.dk til cloud computing infrastruktur

Serviceorienteret arkitektur - Hvad og hvorfor

Hvad kræver en opgradering af dit ERP-system?

Geoservices og åbne kommunikationsstandarder

Generel projektbeskrivelse

Roadmap for VERA Q Q Q Q Rettighed. Klassifikation. Organisation. Beskedfordeler. Serviceplatform

e-tl System til System kommunikationstest

Den Gode Webservice. version W 1

Studieordning del

Mobiltest typiske udfordringer og deres løsninger

Hvorfor skal vi bruge objekt orienteret databaser?

Artikel trykt i It-håndbogen. Gengivelse af denne artikel eller dele heraf er ikke tilladt ifølge dansk lov om ophavsret.

Program for møde fredag d. 22/2-2002

Integration mellem Scan Jour Captia og ArcGIS

Installation af Certifikat til Direkte Kommunikation Bank Connect

1.1 Formål Webservicen gør det muligt for eksterne parter, at fremsøge informationer om elevers fravær.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Opstartsvejledning ATS aktørudgave

DK-Cartridge 1.0. Distributionsformat for digital læringsindhold VERSION: 1.0

Introduction til.net remoting i C#

It-principper. Bilag 1 til It- og Digitaliseringsstrategi for Sønderborg Kommune

Introduktion til SQL

Transkript:

Ordrupvej 101 2820 Gentofte tel. +45 44 50 21 50 fax. +45 39 64 56 37 www.lector.dk Service Orienteret Arkitektur - en teknisk betragtning d. 28. august 2006 Copyright 2006. Lector ApS. All rights reserved

Revisionslog Lector Dato Forfatter Version Reference Documentegenskaber Item Documenttitel Forfatter Details SOA en teknisk betragtning Claus Konrad/Anders Bendtsen Oprettet d. 28. august 2006 Sidst rettet SOA en teknisk betragtning Side 2 of 11

Indhold Lector Indledning... 4 Forventet publikum... 4 Forkortelser... 4 Introduktion til Service Orienteret Arkitektur (SOA)... 5 Baggrund og formål... 5 Koncepter og begreber... 5 Arkitektur og modellering... 6 Konceptuel arkitektur... 7 Generelle guidelines... 9 Sprogspecifik... 9 C#... 9 WCF:... 10 Java... 11 SOA en teknisk betragtning Side 3 of 11

Lector Indledning I de senere år er begrebet Service Orienteret Arkitektur (SOA) begyndt at optræde mere og mere i IT-branchen og i den generelle debat. SOA er et godt brugt begreb som desværre ikke altid fremstår lige godt defineret ensige beskrevet. I dette dokument præsenteres Lector s opfattelse af begrebet SOA; i denne omgang set udfra en teknisk betragning. En kommercial betragtning 1 på SOA eksisterer sideløbende med nærværende dokument. Forventet publikum Det forventede publikum til dette dokument er teknisk personale med et kendskab til.net (C#) eller Java, som er de miljøer, der primært benyttes i Lector. Forkortelser Forkortelse Navn Beskrivelse SO SOA Service Orienteret Service Orienteret Arkitektur WS* WebService * Samlet betegnelse for en række webservicestandarder SCA Service Component Architecture Referencer: 1. SOA en kommerciel betragtning, Lector whitepaper 2006 2. Service-oriented modeling and architecture: http://www- 128.ibm.com/developerworks/webservices/library/ws-soa-design1/ (September, 2006) 1 SOA en teknisk betragtning, Lector 2006 SOA en teknisk betragtning Side 4 of 11

Lector Introduktion til Service Orienteret Arkitektur (SOA) Baggrund og formål Dette afsnit har til formål at introducere hvad SOA er for en størrelse. Vinklen er hovedsageligt teknisk. For en mere ikke-teknisk gennemgang af baggrunden for SOA se SOA en kommerciel betragtning 1. En af de store fordele ved SOA er, at muligheden for at skabe platformsuafhængige systemlandskaber er tilstede. Da SOA oftest anvender tekst (SOAP) som kommunikationsmiddel, vil de fleste platforme være istand til at kommunikere med hinanden da disse alle har understøttelse af tekst-begrebet (SOAP). Koncepter og begreber Lectors opfattelse 2 af begreberne Service og SOA er følgende: Service: En service er en selvstændig funktionalitet som kan anvendes autonomt uden tvungne afhængigheder af andre eksterne systemer/forhold. Service Orienteret Arkitektur: At lave en Service Orienteret Arkitektur (SOA) er arbejdet med at sammensætte diskrete services til et koherent systemlandskab der understøtter de forretningsproceser virksomheden har identificeret som værende drivere af forretningen. og/eller En Service Orienteret Arkitektur (SOA) er betegnelsen for et etableret systemlandskab som gør anvendelse af diskrete services for at tilbyde et sammenhængende og koherent IT-system til at bistå de forretningsafledte opgaver. 2 SOA en kommerciel betragtning, Lector WhitePaper 2006 SOA en teknisk betragtning Side 5 of 11

Lector Arkitektur og modellering Et SOA-baseret system adskiller sig fra traditionelle objektorienterede (OO) systemer på flere områder. I et traditionelt OO-system har man som udgangspunkt kendskab til placeringen af det objekt man ønsker at anvende. Dette instantieres til et konkret instans, og metoder kan herefter kaldes på denne instans. I en serviceorienteret verden, kan placeringen og implementeringen af en given service man ønsker at anvende være noget mere diffus. Hvilken teknologi denne service er implementeret med, er heller ikke nødvendigvist kendt ej heller normalt relevant set fra klientens synspunkt. Note: Det skal nævnes, at der eksisterer design patterns som abstraherer denne placering også i OO-systemer. SOA kræver en ny måde at tænke på. Dette ses blandt andet i selve servicebegrebet og de centrale aktører, som er i spil. I SOA er de primære centrale aktører: Serviceprovider: Denne stiller en konkret service til rådighed. Locationprovider: Denne stiller placeringen af en ønsket service til rådighed Serviceconsumer: Klienten som gør anvendelse af servicen Som udgangspunkt skal serviceconsumeren ikke vide, hvordan servicen er implementeret. Potentielt skal denne serviceconsumer heller ikke vide hvor denne er placeret. Dette afsnit beskriver, hvordan Lector anbefaler en SOAarkitektur konstrueret for at tilfredsstille ovenstående udsagn. Et SOA system kræver stillingstagen til blandt andet følgende udfordringer: Identifikation: Hvordan identificerer vi en service? Specifikation/definition: Hvordan specificerer vi en service? Realisering/implementering: Hvordan anbefales implementering af en service (.NET/Java)? Førend vi kommer til disse anbefalinger, vil en række karakteristika omkring SOA være gode at være bekendte med. Et SOA-system vil med fordel efterleve følgende udsagn: Kendetegn Løst koblet Forretningsorienteret Afkobling af servicebeskrivelse fra serviceimplementation Dynamisk konfiguration af services Stærk samhørighed Beskrivelse Systemerne må ikke have binære referencer til andre komponenter, men skal udelukkende være afhængig af en servicebeskrivelse/interface. De services, der stilles til rådighed skal bygge på processer i forretningen. Selve beskrivelsen af en service skal være separeret fra implementationen. Det sker for at serviceconsumeren ikke skal kende noget til hvordan servicen er implementeret. Sammensætning af de enkelte services skal kunne konfigureres uden noget særlig kendskab til hvordan servicen er implementeret. Desuden skal placeringen af servicen være skjult for serviceconsumeren. De muligheder en enkelt service stiller til rådighed skal hænge tæt sammen. SOA en teknisk betragtning Side 6 of 11

Konceptuel arkitektur Der er, som nævnt, to mekanismer der er grundlæggende for enhvert SOA-system: Lector Serviceconsumer må kun kende til servicebeskrivelse og ikke den konkrete implementation Serviceconsumeren skal kalde servicen ved at sende en besked Disse to mekanismer styrer den grundlæggende arkitektur som Lector bygger et SOA-system efter: «datatype» DataTypes «implementation class» ServiceConsumer «interface» ServiceBeskrivelse «inherits» «implementation class» ServiceImplementering Figur 1: Konceptuel SOA struktur (simpel) Som det ses er ServiceConsumer kun koblet til kontrakten (ServiceBeskrivelse) og de typer som denne kontrakt erklærer at bruge. I nogle situationer vil der ikke eksistere en kobling til typerne (DataTypes), idet disse ofte kan skabes dynamisk når koblingen skabes til ServiceBeskrivelsen. Dette understøttes af de fleste udviklingsmiljøer. For at ServiceConsumer faktisk kan kalde en service og dernæst modtage brugbar respons; skal ServiceConsumer på et eller andet tidspunkt være vidende om adressen på en konkret service. Hvorhenne denne service befinder sig, skal klienten have at vide udefra via et ServiceLocator modul. Dette ses i nedenstående illustration. SOA en teknisk betragtning Side 7 of 11

Lector «datatype» DataTypes «implementation class» ServiceConsumer «interface» ServiceBeskrivelse «inherits» ServiceLocator «implementation class» ServiceImplementering Figur 2: Konceptuel SOA struktur (inkl. ServiceLocator) Som det fremgår af figuren, så er det ServiceLocator s ansvar at levere en adresse til den konkrete service til ServiceConsumer. For nu ikke at gøre dette unødigt kompliceret, så vil implementingen af denne ServiceLocator oftest være en simpel konfigurationsfil som læses direkte af klienten. Denne konfigurationsfil vil så indeholde den konkrete adresse for den service som klienten skal kalde. I større systemer hvor muligheden for, under systemafvikling at kunne udskifte adressen på en service, vil en decideret ServiceLocator være anvendt. Dette ses f.eks. ved systemer hvor man har redundante services som tilbyder samme funktioner (ServiceBeskrivelse). Dette kan være grundet ønsket om en belastningsfordeling (loadbalancing) eller blot at kunne lukke ned for een service, mens en anden overtager opgaverne. I de fleste systemer og i praksis er dette dog ikke nødvendigt og man anvender derfor en konfgurationsfil. SOA en teknisk betragtning Side 8 of 11

Generelle guidelines Lector Generelt præsenteres disse anbefalinger (på tværs af.net og Java). Guideline Benyt interfaces Beskrivelse Generelt anbefaler Lector, at der i så høj grad som muligt kodes mod interfaces (også kaldet kontrakter). Dette giver mulighed for at lade implementeringen blive skabt af en factory for derved yderligere at afkoble implementering fra beskrivelsen (interfacet) og forbrugeren For at tilsikre at datatyper og metoder er globalt unikke for enhvert service, anvend unikke namespaces ihht. denne syntax: Anvend unikke namespaces http://schemas.<firma>.com/<year>/<version>/<name> f.eks. http://schemas.lector.com/2006/01/orderservices Erklær fejlmuligheder i interfacet Erklær fulde datastrukturer i servicen Sikkerhed For at klienten kan agere proaktivt og teste for givne fejlmuligheder præsenteret af servicen, erklær da i serviceinterfacet hvilke fejl der potentielt kan kastes fra servicen At kalde en webservice er alt andet lige langsommere end at kalde et object direkte. Derfor skal der IKKE laves metodesignaturer som lægger op til smalltalk, men som lægger op til at lave en større opgave serverside. Med andre ord så skal en service ikke levere f.eks. en int tilbage på et metodekald, men en komplet datastruktur som typisk repræsenterer en større operation. Erklær sikkerhed som en kontektuel parameter i et servicekald (ServiceContext). Lad IKKE sikkerhedsrelateret information (f.eks. username/password) tage del i den normale forretningsdrevne metodesignatur. Sprogspecifik C# WebServices: Faktorer komponenter således: Interfaces DataTypes WebService ServiceLogic Figure 1: Servicefaktorering (webservices) SOA en teknisk betragtning Side 9 of 11

Lector Fordelen ved ovenstående arkitektur som anviser komponenterne som indgår i en serverside implementering, er at det er muligt at anvende servicen s logik (ServiceLogic) direkte skulle dette være ønskeligt. WebServicen s formål i denne opsætning er at eksponere servicelogikkomponentens funktionaliteter (beskrevet via interfacet) til omverdenen som en service. WebService komponentens ansvar er desuden at genkende (authenticate) og authorisere indkommende kald for hvorvidt disse har lov til at anvende funktionaliteten denne service præsenterer. WebService komponenten kommer derfor til at fungere som en sikkerhedsvagt som afviser folk ved porten, hvis ikke disse har rettigheder til at anvende servicen s funktionaliteter. Ved at trække datadefinitioner ud i en selvstændig assembly, vil denne kunne genbruges på tværs af forskellige services, således at disse anvender samme definition af f.eks. et document eller andre forretningsentiteter. En yderligere fordel ved dette, er at det nu er muligt at distribuere denne datatype + interfacekomponenten til klienter således at disse klienter anvender samme signatur som servicen. WCF: Faktorer komponenter således: System.ServiceModel: [ServiceContract]/ [OperationContract]/ FaultContract System.Runtime.Serialization: [DataContract]/[DataMember] Interfaces DataTypes ServiceLogic Figure 2: Servicefaktorering (WCF) Når man anvender WCF, vil ovenstående arkitektur eller faktorering være hensigtsmæssig. Som netop gennemgået vil interfaces skulle trækkes ud i en selvstændig assembly ligesom datatyperne for derved at opnå samme fordele som i foregående sektion. Grundet WCF s interne arkitektur er det ikke nødvendigt at have en yderligere komponent som tilbyder interfacets funktionaliteter som en service; ServiceLogic ER en service grundet den nedarver fra et interface med [ServiceContract] attributer påtrykt. Set fra.net s vedkommende er ServiceLogic dog stadigt blot en klasse som implementerer et interface og kan derfor anvendes på helt almindelig vis. SOA en teknisk betragtning Side 10 of 11

Java Lector SOA arkitekturer i Java følger i store træk den struktur, som er beskrevet i afsnittet om.net (WebServices). Dvs. at servicedefinitioner i form service-interface og datatyper placeres i selvstændig jar-fil, der kan bruges af både serviceimplementationen og klienten. Lector benytter ofte Oracle s platform til implementering af java-aprojekt. Derfor vil det være naturligt at benytte deres SOA-værktøjer: Enterprise Service Bus: Bl.a. virtualisering af eksisterende systemer, såsom pl/sql procedurer. Kan også benyttes til at udvikle integrationsløsninger Oracle Workflow Manager: Giver mulighed for at oprette og vedligeholde processer. Oracle Webservices Manager: Implementer diverse sikkerheds politikker på de enkelte webservices. Giver en central styring af sikkerhedspolitikken. Ellers benyttes standardfunktionalitet fra Java EE 5. SOA en teknisk betragtning Side 11 of 11