Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Distribution af funktionalitet Webservice med WCF x.

Lignende præsentationer


Præsentationer af emnet: "Distribution af funktionalitet Webservice med WCF x."— Præsentationens transcript:

1 Distribution af funktionalitet Webservice med WCF x

2 Different technology combined to form WCF. http://wcftutorial.net/Introduction-to-WCF.aspx

3 ASP.NET - 1 tier distribution http://msdn.microsoft.com/en-us/library/bb547119.aspx

4 ASP.NET - 2 tier distribution http://msdn.microsoft.com/en-us/library/bb547119.aspx

5 ASP.NET - n tier distribution http://msdn.microsoft.com/en-us/library/bb547119.aspx

6 Webservice - SOAP

7 Remoting – arkitektur Server og klient er begge.NET Generel arkitektur –Proxy, stub, formattering og channel kan ændres. Fx er en binær formattering, der både understøttes af TCP og HTTP, mere effektiv end en tekstbaseret (XML) Client proxy remoting formatter Server stub remoting formatter listener channel

8 Remoting service - muligheder Server-activated object (SAO) også betegnet ”Wellknown objects” –Singleton: Ét serverobjekt til alle klienter Trådproblemer –SingleCall: Ét objekt pr. metodekald Nemmeste løsning; men mindst effektivt Tilstand opretholdes vha. filer eller database Client-activated object (CAO) –Activated: Ét objekt pr. klient Levetidsproblem – Leasing understøttes ikke af IIS

9 Windows Communication Foundation Architecture http://msdn.microsoft.com/en-us/library/ms733128.aspx

10 Hosting WCF Side-by-Side with ASP.NET http://msdn.microsoft.com/en-us/library/aa702682.aspx

11 WCF understøtter de 3 state senarier Se evt. også for en anden info om disse 3 på http://www.codeproject.com/KB/WCF/WCFInstance.aspx

12 WCF host og protokol Wcf kan som remoting (singleton og singlecall) integreres i et asp.net web og afvikles på IIS’en, hvor wcf desuden kan opnås tilgang til ASP.NET’s Session, Application objekter m.m. Wcf kan anvendes uden for ISS’en med andre protokoller end http. Wcf kan understøtte fx json og ikke kun soap, hvilket ikke let opnås med ASP.NET webservices (den gamle teknologi)

13 WCF data protokoller http://msdn.microsoft.com/en-us/library/bb547119.aspx Med REST protokollen kan også kommunikeres med ”ren” XML

14 WCF brug Service defineres som ServiceContract på interface / klasse der skal fungere som service- object, hvor metoder der skal være tilgængelige externt defineres som OperationContract’s Transport-objekter defineres som DataContract og felter/property der skal med som data som DataMember’s. Wcf kan understøtte fx json og ikke kun soap, hvilket ikke let opnås med ASP.NET webservices (den gamle teknologi)

15 Normalt vil man definere kontrakten på et Interface, men kan også definere denne på selve klassen, hvis man ikke ønsker et interface using System.ServiceModel.Web;// indeholder ServiceContract og OperationContract klasserne ……….. namespace MyNamespace { [ServiceContract]// Attribut på interfacet public interface IService1 { [OperationContract]// Attribut på metoder der skal kunne tilgås via servicen (proxyen) string GetData(int value); Hvis der skal anvendes session på servicen under en WcfServiceApplication (kan ikke bruges på ASP.NET – website under ISS) skal ServiceContract’en tilføjes parametre og den ser således ud: [ServiceContract(SessionMode = SessionMode.Required)] Interface med kontrakten

16 using System.ServiceModel; ………. namespace MyNameSpace { //Default laves et nyt service-objekt for hvert kald, men det kan ændres //[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] // Default //[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] // Husk at trådsikre //[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] // Kræver wsHttpBinding public class Service1 : IService1 { public string GetData(int value) { return string.Format("You entered: {0} ", value + count, s); } Tilhørende markeup Service1.svc file, der giver bindingen til service1: Bemærk: PerSession på Wwbserver(IIS) kræver wsHttpBinding og kræver ekstra tilpasning af web.config Implementeringsklassen for kontrakten

17 Hvis der skal overføres sammensatte objekter (altså ikke simple typer, string og array) så skal disse kunne serialiseres – dette skal ske med brug at en DataContract – tidligere kunne man anvende [Serializable] – på Webservice ville kun blive overført public felter og public property, svarende til en XML serialisering. using System.Runtime.Serialization; [DataContract]// klasse kan serialiseres public class CompositeType { [DataMember]// felt skal med bool _boolValue = true; string _stringValue = "Hello "; [DataMember]// property skal med public int EnInt {private get; set;} Data transport objekter (DTO)

18


Download ppt "Distribution af funktionalitet Webservice med WCF x."

Lignende præsentationer


Annoncer fra Google