MSDN Live för utvecklare av utvecklare. Johan Lindfors Developer Evangelist Microsoft AB Avancerade XML WebServices.

Slides:



Advertisements
Liknande presentationer
Sweden SharePoint User Group Wictor Wilén
Advertisements

Thommy Sjölander och Ulf Lundgren, MRO Software AB
Utveckla en applikation Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Informationsnätverk för Vården
Migrera befintliga system till Windows Azure
Anvisningstjänstens roll inom infrastrukturen för Svensk e-legitimation Martin Lindström
Att söka och förvalta kunskap
Klasser och objekt.
”Ett sätt att distribuera Business Objects via webben”
Tjänster.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
XML Web Services i praktiken.  Arkitekturen bakom Web Services  SOAP  WSDL  Testning av Web Services  ACT  GXA – ”Global XML Architecture”  WS-Security.
Arv.
Abstract & sealed.
Inkapsling.
Objektorienterad tänkande
Programmering II C#, ID1304.
Polymorfism.
Databaser i B2KUNO Johan Eklund. Hur går jag vidare? Avancerade tillämpningar:  Analysera data  Generera information Utveckla följande färdigheter:
Alice in Action with Java
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
EN KOMPLETT INDUSTRIPARTNER ! ALLMÄNT OM MELSEC STYRSYSTEM.
1 Windows Azure Mikael ÖstbergTorkel Ödegaard. 2.
Visual Studio 2005 Patrik Löwendahl, SweNUG, Cornerstone Johan Lindfors.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
Dataföreningen i Sverige
APM APPLICATION PERFORMANCE MONITORING En översikt och några komma igång produkter på marknaden idag. Christian Gerdes LIGHTS IN LINE AB.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Introduktion till DITA
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ” Ingen vet vad han klarar innan han har försökt. ” - Publilius Syrus (85 f.Kr.-43 f.Kr.).
Projekt och Arkitektur
1. En infrastruktur för programutveckling
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
MED RAMVERKET.NET Marcus Medina UTVECKLING. Dagens visdomsord ” För varje berg du bestiger se inte bara vad som ligger framför dig, titta ner och se vad.
Utveckling med ramverket .net
A Beginner's Guide to SharePoint 2013 REST API [Rest/Odata/Json]
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public ITE PC v4.0 Chapter 1 1 Operating Systems Networking for Home and Small Businesses – Chapter.
Utveckling med ramverket .net
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
WIPCORE PRESENTATIONSMALL  TEXT: Förutom de element som redan är stylade (t.ex. versala rubriker) finns det ett par andra riktlinjer. –Ord du vill markera.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Microsoft Visual Studio och.NET Framework, idag och imorgon! Robert Folkesson
1 IBC Euroforum SoftDev 2.0 utvecklarkonferens /27 SoftDev_ _v1.ppt Sven-Håkan Olsson.
Agenda Intro MCRM 3.0 Installation Konfigurering Quick Tour MCRM 3.0 Import av konton (praktiskt exempel) Frågor och summering.
Kontextuell ärendehantering
Välkomna Per Ahlberg Johan Lindfors. Hur kan vi bli bättre...  Era utvärderingar är viktiga!  Betygsätt innehåll, talare, relevans  Kommentera gärna.
1.1. TechNet Security Summit 2004 Security Framework ”Introduktion av ”Security in Depth” Marcus Murray.
1 Windows Azure Mikael ÖstbergTorkel Ödegaard. 2 Äshur Ashore Azzuure.
Rikare webb med AJAX, Microsoft Silverlight, WPF och Expression Studio Robert Folkesson
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ” Oavsett om du tror att du kan, eller om du tror att du inte kan, har du helt rätt. ” -
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
NÄTVERKSPROTOKOLL Föreläsning INNEHÅLL - DHCP (Dynamic Host Configuration Protocol)‏
FunktonalitetRIV TA ProfilWS-I ProfilCentrala Specifikationer Grundläggande interoperabilitet Protokoll baserad säkerhet Basic Profile v2.0 Basic Profile.
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ”Google is your friend”
Funktonalitet RIV TA Profil WS-I Profil Centrala Specifikationer
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Moderna affärssystem - Systemutvecklarens roll -
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
7. Delegerare och notifierare
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Formella metoder i MDI Behovet Vad menas med formell? Verktyg Exempel Att läsa: Kapitel 14 i kursboken.
Programmering i.NET Farid Naisan, Universitetsadjunkt Datavetenskap, Teknik och samhälle, Malmö högskola Assembly.
Föreläsning om RUP RUP – Rational Unified Process
Informationsinfrastruktur Välkommen till ett samarbete för att effektivisera åtkomst till dokument mellan och inom organisationer.
 Object-Relational mapping  (aka O/RM, ORM, and O/R mapping)  Mappning av objekt och dess relationer till/från en relationsdatabas.
RMI Av: Josefina & Sarah DS04.
Presentationens avskrift:

MSDN Live för utvecklare av utvecklare

Johan Lindfors Developer Evangelist Microsoft AB Avancerade XML WebServices

Förslag på utvecklingsprocess 1)Tänk serviceorienterat 2)Definera kontrakt a)Datatyper och meddelanden b)Säkerhet 3)Anamma rekommendationer 4)Implementera gränssnitten 5)Versionshantera och underhåll 6)Skaffa kunskap och använd bra verktyg!

Service 1) Tänk serviceorienterat  Hur har vi programmerat förr? –Funktionsorienterat –Objektorienterat  Service Orienterad Arkitektur –Meddelandeorienterat –Autonoma system Servicelogik Data

SOA i grunden  Services har explicita gränser –Funktionaliteten defineras vid gränsdragningen  Services är autonoma –De litar inte på någon annan än sig själv –De delar ”aldrig” med sig av data  Services delar schema och kontrakt –Inga atomiska transaktioner mellan services  Servicens kompatibilitet baseras på policies –Baserat på standards

Det finns en “gråzon”! Domänmodellen Affärs- modell Gråzonen Service Orienterad Arkitektur Teknisk modell

Domänmodellen Gråzonen Vad är gråzonen?... Namespace … class Order { … } Submit(Order NewOrder) { … }

 Exekveringsmiljön –Infrastrukturen för webbservices  Verktygen –WSDL-baserade kodgeneratorer –XSD-baserade klassgeneratorer  Arkitekten –Definera de serviceorienterade aspekterna  Utvecklaren –Implementera de mappningar som krävs Vilka deltar i gråzonen?

Förslag på utvecklingsprocess 1)Tänk serviceorienterat 2)Definera kontrakt a)Datatyper och meddelanden b)Säkerhet 3)Anamma rekommendationer 4)Implementera gränssnitten 5)Versionshantera och underhåll 6)Skaffa kunskap och använd bra verktyg!

2) Definera kontrakt Kontrakt Service Agents Data Access Components Business Workflow s Business Compone nts Business Entities Service Interfaces Service Agents Data Access Components Business Workflow s Business Compone nts Business Entities Service Interfaces Service Agents Data Access Components Business Workflow s Business Compone nts Business Entities Service Interfaces Interaktion Kontrakt

Kontrakt för “servicen” Gränssnitt Datatyper Meddelanden Tjänstespecifika datatyper “Vanliga” datatyper Beskrivning Meddelanden WSDL XSD

Förhållanden “Service” “Binding” “Message” “PortType” “Types” “Endpoint” Transport Meddelande Interface Entitet “Värd” Impl. Klass Interface SOA KontraktOO

Ett vanligt scenario? CRM Service ERP Service E-Commerce Service ProcessOrder(Order) UpdateSalesTotal(Order) PlaceOrder(Order)

demo Scenariot - utmaningarna

2a) Datatyper och...  XSD är inte detsamma som CLR –Datatyper ”mappas” genom serialisering  Tänk till vid val av meddelandetyper –DataSet kan försvåra interoperabilitet –Ren XML kräver goda kunskaper i XML –Serialiserade objekt är ”lätt att förstå”  Meddelandeklasser –Underlättar vidareutveckling och versionshantering

”Marshaling”  I.NET finns två serialiseringsmotorer –XmlSerializer används för parametrar –System.Runtime.Serialization + SoapFormatter  XmlSerializer hanterar bara ”träd” av typer –Publika fält –Inga dubbla pekare –Begränsat stöd för polyformism och samlingar  Attribut påverkar resultat  Använd alltid unika namnrymder

Viktiga attribut  [XmlType] –Namespace, IncludeInSchema, TypeName  [XmlRoot]  [XmlElement] eller [XmlAttribute]  [XmlInclude] –Används vid arv  [XmlArray] och [XmlArrayItem] –Returnera vektorer

“SOAP Encodings”  doc-literal –”SOAP body” defineras i XSD –Helt meddelandeorienterat  doc-literal wrapped –Specialfall av doc--literal –Metodnamn (”operation”) blir namn på ”request”  rpc-literal (finns inte i.NET) –Ingen metadata som beskriver ”SOAP body” –XSD används bara för att beskriva parametrar  rpc-encoded (kallas även ”Section 5 encoding”)

2b) Säkerhet  Börja tidigt med att beakta: –Roller och identiteter –Säker kommunikation  Web Services Enhancements 2.0 –WS-Security –WS-Trust –WS-SecureConversation –WS-Policy

WS-Policy  Beskriver krav på meddelanden –Inkommande och utgående  Kan användas för att styra WSE Body... Body... Body

WS-MetadataExchange  WSDL och XSD räcker inte till –Krav på säkerhet och tillförlitlighet?

WS-MetadataExchange  WSDL och XSD räcker inte till –Krav på säkerhet och tillförlitlighet? Kerberosv5TGT X509v3

Förslag på utvecklingsprocess 1)Tänk serviceorienterat 2)Definera kontrakt a)Datatyper och meddelanden b)Säkerhet 3)Anamma rekommendationer 4)Implementera gränssnitten 5)Versionshantera och underhåll 6)Skaffa kunskap och använd bra verktyg!

3) Anamma...  Designmönster –Patterns & Practices –Fasadobjekt, lager, skikt  EDRA (ShadowFax) –Enterprise Development Reference Architecture  EDAF –Enterprise Development Architecture Framework  WS-I Basic Profile

Microsoft RAF UI Components UI Process Components Service Interfaces Business Workflows Business Components Business Entities Data Access Components Service Agents UsersServices Data Sources Services Communications Operational Management Security  Arkitekturellt ramverk –Utvecklare –Arkitekter  Dokumenterad –Patterns & Practices  ”Service Master” –”Fiefdoms”  ”Service Agents” –”Emissaries”

ServerKlient ”Patterns & Practices”  Mönster: ”Service Interface” –Serversidan –Fasadobjekt, DataSet  Mönster: ”Service Gateway” –Dynamisk hantering av URL Applikations logik ”Service Gateway” ”Service Interface” Kontrakt

Mönster: “Service Interface”  Sammanhang (“Context”): –Du designar en distribuerad applikation med funktionalitet som måste nås från olika system. –Interoperabilitet är en nyckelfaktor! –Du kommer också behöva supportera olika kommunkationssätt och protokoll.  Utmaning (“Problem”): –Hur får du delar av din applikations funktionalitet att nås från andra applikationer, samtidigt som du är säker på att gränssnitten är separerade från affärslogiken?

Mönster: “Service Interface”  Drivkrafter (“Forces”): –Du vill separera affärslogiken från infrastrukturen –Din applikations konsumenter/klienter kan vilja få svar som är optimerade vissa specifika scenarios –Konsumenter kan komma att vilja kommunicera med olika tekniker och protokoll –Applikationen kan komma att ställa olika krav på olika konsumenter –Du behöver snabbt kunna göra förändringar i din applikation baserat på krav från miljön och affärsprocesser

Lösning: ”Enligt boken”  Service Interface –Anropar ”Gateway” –Får tillbaka ett DataSet –Använder ”mapper” –Serialiserar ”Recording” –Returnerar XML

Service Implementation Service Interfaces Service Interface ServicesUsers EDRA (Shadowfax) UI Components UI Process Components Business Workflows Business Components Business Entities Data Access Components Service Agents Client Application Services Data Sources Services Communications Operational Management Security Communications Operational Management Security  Arkitekturellt ramverk –Utvecklare –Arkitekter  –Wiki –Bloggar –Forum

EDRA (Shadowfax) Service Interface Service Implementation Business Workflows Business Components Business Entities Data Access Components Service Agents Client Application Services Data Sources Services Communications Operational Management Security Interface Transports Cross-Cutting Logic AuthenticationTimeoutsValidation Dispatching Transports Cross-Cutting Logic LoggingBusiness EventMonitoring  Arkitekturellt ramverk –Utvecklare –Arkitekter  –Wiki –Bloggar –Forum

Lösning: Enligt EDAF  Separerar “servicens” interface från dess implementation –De kan variera oberoende –Kan separeras fysiskt  SI element utför endast funktioner i gränssnittet –Ta emot, hänvisa och svara meddelanden  BA-objekt aktiveras av “implementationen”

Flexibilitet vid installation  En server –Exekvering inom samma process –”Maximal prestanda”  Två servrar –Installeras bakom separata brandväggar –”Maximal säkerhet”

Sårbarheter  Svårt att få “faktoreringen” av interface helt korrekt –Inkorrekt faktorering kan leda till prestandaförlust  “Service Interface”-mönstret adderar komplexitet och vissa utmaningar i prestanda –Kan vara omotiverat i enklare SOA lösningar

Mönster: “Delegator”  Sammanhang (“Context”): –Du har en process som du vill erbjuda flexibiltitet/förändring vid exekvering  Utmaning (“Problem”): –Hur erbjuder du en “extensibility point” som låter flera objekt hantera förfrågan?  Drivkrafter (“Forces”): –Några objekt kommer att neka förfrågan och inte tillåta vidare processering! –Några objekt kräver förmågan att processera före och efter den slutliga destinationen –Några objekt kommer att ha krav på “ordning” och även behov av att skicka information mellan sig

Lösning: “Delegator” (EDAF)  EDAF introducerar två “pipelines” i processflödet  “Pipelines” låter systemet delegera vanliga uppgifter  “Service Interface” –Säkerhet och validering –“Timeouts”  “Service implementation” –Loggning –“Business Events” –Övervakning

Tillståndslösa och atomiska “handlers”  Atomiska “handlers” processerar innan eller efter BA  Tillståndslösa “handlers” processerar före och efter BA  “Pipeline” –Läser listan av “handlers” från konfigurationen –Anropar “handlers” i ordning och bifogar meddelandet

Tillståndshantering  “Handlers” med tillstånd hanteras för sig  Andra hanterar exekverar i samma “stack frame”, liksom BA –Möjliggör transaktioner  Måste placeras både före och efter BA

“Handlers” i EDAF  ClientTrace  Transaction  Identity  DuplicateMessageHandling  AuthenticationIdentity  AuthorizationDatabase  AppInstrumentationExecutionTime  AuthenticationInfrastructure  AuthorizationInfrastructure  SignedMessageAuthentication  PasswordAuthorizationHandler  SyntacticValidation  ExecutionTimeout  AppInstrumentation  MessageTransformation  PublishBusinessEvent

1.En klient skickar en “KontoSaldo”-förfrågan över transportprotokollet för WebServices. 2.“Service Interface”-transportadaptern (WebServiceInterfaceAdapter” är en “SOAP extension” som fångar upp förfrågan. 3.“SOAP extension”-komponenten skapar ett “context”-objekt och bifogar detta objekt till pipelinen som exekverar på begäran 4.Pipeline laddar listan av “handlers” i “Service Interface” och invokerar dessa. Den sista adaptern i listan anropar målet som skapar “WebServiceDispatchingAdapter” 5.Målet anropar “Submit”-metoden på “WebServiceDispachingAdapter” och bifogar det serialiserade “context”-objektet 6.Transportadaptern anropar sedan pipeline i “Service Implementation”-lagret, och bifogar “Context”-objektet 7.“Service Implementation” pipeline anropar “handlers” individuellt i sekvens. När den sista nås anropas pipeline-målet som instansierar BA 8.BA anropas genom att använda information i det som bifogas. BA utför den riktiga frågan och sparar kontosaldos i svaret, som finns i “Context” 9.Anropskedjan snurrar tillbaka genom båda “pipelines” till Web Services transporten, som extraherar svaret från “Context”, och returnerar detta till klientapplikationen. “Service Implementation” IIS / ASP.NET “Service Implementation” IIS / ASP.NET Exempel på förfrågan “Service Interface” IIS / ASP.NET “Service Interface” IIS / ASP.NET Web Service Interface Adapter Web Service Dispatching Adapter Business Action Pipeline

WS-I Basic Profile  Rekommendationer för interoperabilitet –Inte en certifiering  Testverktyg som konfigureras med XML –Monitor –Analyzer  Rapport i XML –HTML KlientWeb Service ”Monitor” ”Analyzer”Report Logg Konfiguration Testfall

WS-I Basic Profile  Rekommendationer för Web Services –Parametrar –Mekanismer för utbyggbarhet –Utsagor om ”conformance” –”Cookies” –”Encoding” –Hänvisning –Attribut: WebServiceBinding, SoapDocument[Method/Service] –SOAP huvuden –Felhantering

WS-I Basic Profile  Rekommendationer för Web Services klienter –Utsagor om ”conformance” –Meddelandeformat –Parametrar –Cookies –Envägsoperationer –SOAP huvuden

Förslag på utvecklingsprocess 1)Tänk serviceorienterat 2)Definera kontrakt a)Datatyper och meddelanden b)Säkerhet 3)Anamma rekommendationer 4)Implementera gränssnitten 5)Versionshantera och underhåll 6)Skaffa kunskap och använd bra verktyg!

4) Implementera gränssnitt  WSDL.EXE /server –Ärv från genererad basklass  ”WebMethod” erbjuder en RPC-modell  Arv från WebService är inte ett krav – Ger snabb åtkomst åt HttpContext.Current –Kan ärva från andra klasser istället  Se upp för ”tighta” kopplingar –Fokusera på kontrakten  Använda [WebService] attributet –Sätt en korrekt namnrymd

Implementera ”interface” public interface IAddCalculatorPortType { AddResponseType Add(AddRequestType addRequest); } public class AddServiceInterface : IAddCalculatorPortType { [WebMethod] public AddResponseType Add(AddRequestType addRequest) { AddServiceFacade asf = new AddServiceFacade(); // handle authentication... return asf.Add(addRequest); } Public class AddServiceFacade : IAddCalculatorPortType { public AddResponseType Add(AddRequestType addRequest) { AddImlementation aimp = new AddImplementation(); return imp.Add(addRequest); }

Säkerhet igen...  SOAP 1.1 är mycket förlåtande –Och det är även XmlSerializer  Det är svårt att identifiera felaktiga element  Det finns dock sätt... –”Intercept”-baserad validering mot XSD –Ett trick med XmlSerializer

Förslag på utvecklingsprocess 1)Tänk serviceorienterat 2)Definera kontrakt a)Datatyper och meddelanden b)Säkerhet 3)Anamma rekommendationer 4)Implementera gränssnitten 5)Versionshantera och underhåll 6)Skaffa kunskap och använd bra verktyg!

5) Versionshantera... Kontrakt Service Agents Data Access Components Business Workflow s Business Compone nts Business Entities Service Interfaces Service Agents Data Access Components Business Workflow s Business Compone nts Business Entities Service Interfaces Service Agents Data Access Components Business Workflow s Business Compone nts Business Entities Service Interfaces Kontrakt Versionshantering

5) Versionshantera...  Vad ska vi versionshantera? –Service interface –Implementationen –Data- och meddelandetyper  Versionshantering –Kontrollen ägs av schemats ägare –Erbjuder bakåtkompatibilitet  Utbyggnad –Erbjuder ny funktionalitet bredvid den gamla

Förslag på utvecklingsprocess 1)Tänk serviceorienterat 2)Definera kontrakt a)Datatyper och meddelanden b)Säkerhet 3)Anamma rekommendationer 4)Implementera gränssnitten 5)Versionshantera och underhåll 6)Skaffa kunskap och använd bra verktyg!

6) Skaffa kunskap och...  Internetresurser –msdn.microsoft.com/webservices –  MSDN Workshops –Inside Pellesoft – 11:e november  MSDN Laborationer –ASP.NET StarterKits 17:e, 18:e, 19:e –EDRA?  Utbildningsföretag  MSDN Prenumerationer

Vart är vi på väg - Indigo Indigo ASMX.NET Remoting COM+ Enkel konfiguration Interoperabilitet Serviceorineterat Attribut Transaktioner Komponenter Bred vision Utbyggbart Objektorienterat MSMQ Meddelanden “En-vägs” Tillförlitlighet

Indigos hörnstenar  Channel: Mekanism för I/O med meddelanden  Message: Data som skickas  Service: Mål för meddelanden  Contract: Vilka meddelanden som accepteras “Message” “Channel” “Service” “Transport” “Contract”

Sammanfattning  Datatyper i implementationen är inte detsamma som typer i transporten  Kontrakt måste utvecklas för att gälla länge  Använd designmönster och andra rekommendationer  Det handlar inte om SOA mot OO –Det handlar om att implementera SOA med OO

Nästa presentation  Introduktion till.NET Framework 2.0 –Lite presentation –Lite demonstration