42
C# : WCF Achref El Mouelhi Docteur de l’universit ´ e d’Aix-Marseille Chercheur en programmation par contrainte (IA) Ing ´ enieur en g ´ enie logiciel [email protected] H & H: Research and Training 1 / 41

Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

  • Upload
    others

  • View
    11

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

C# : WCF

Achref El Mouelhi

Docteur de l’universite d’Aix-MarseilleChercheur en programmation par contrainte (IA)

Ingenieur en genie logiciel

[email protected]

H & H: Research and Training 1 / 41

Page 2: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Plan

1 Introduction

2 Premier service Somme

3 Creation d’un client d’un service WCF

4 Limiter l’acces au modele avec les services

5 Rendre un service WCF RESTFUL

H & H: Research and Training 2 / 41

Page 3: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Introduction

WCF

WCF : Windows Communication Foundation

infrastructure pour la creation d’applications orientees service

permettant de creer des composants (service web) independantssans se soucier de la configuration (WSDL...)

permettant aussi de limiter l’exposition de donnees

pouvant etre implementees en utilisant n’importe quel langage de.NET Framework (C#, F#, VB.NET...)

H & H: Research and Training 3 / 41

Page 4: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Introduction

WCF

Un premier projet WCF

Dans le menu Fichier, aller dans Nouveau > Projet

Dans Visual C#, cliquer sur WCF et selectionner Applicationde service WCF

Saisir un nom pour le projet et un pour la solution et valider

H & H: Research and Training 4 / 41

Page 5: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Introduction

WCF

Remarques

Pas de Program.cs dans le projet, ni la methode principaleMain

Presence de deux fichiers Service1.svc et IService1.cs

H & H: Research and Training 5 / 41

Page 6: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Introduction

WCF

Contenu de l’interface IService1

[ServiceContract]public interface IService1{

[OperationContract]string GetData(int value);

[OperationContract]CompositeType GetDataUsingDataContract(

CompositeType composite);

}

H & H: Research and Training 6 / 41

Page 7: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Introduction

WCFContenu du CompositeType

[DataContract]public class CompositeType{

bool boolValue = true;string stringValue = "Hello ";

[DataMember]public bool BoolValue{

get { return boolValue; }set { boolValue = value; }

}[DataMember]public string StringValue{

get { return stringValue; }set { stringValue = value; }

}}

H & H: Research and Training 7 / 41

Page 8: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Introduction

WCFContenu de la classe Service1 qui implemente IService1

public class Service1 : IService1{

public string GetData(int value){

return string.Format("You entered: {0}", value);}

public CompositeType GetDataUsingDataContract(CompositeTypecomposite)

{if (composite == null){

throw new ArgumentNullException("composite");}if (composite.BoolValue){

composite.StringValue += "Suffix";}return composite;

}}

H & H: Research and Training 8 / 41

Page 9: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Introduction

WCF

Pour tester

Faire un clic sur Service1.svc

Ensuite executer

Un simulateur de client qui s’affiche

Cliquer sur la methode GetData(), saisir une valeur dans valuede la partier requete ensuite cliquer sur Appeler pour recevoirla reponse

Pour avoir plus d’informations sur l’utilisation de notre service,copier l’url, situee dans Mes projets de service, dans unnavigateur web.

H & H: Research and Training 9 / 41

Page 10: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Premier service Somme

WCFOn veut creer une methode qui calcule la somme de deux entiers.Dans l’interface IService1 il faut ajouter

[ServiceContract]public interface IService1{

[OperationContract]int Somme(int a, int b);...

}

Dans la classe Service1, il faut ajouter l’implementation

public int Somme(int value1, int value2){

return value1 + value2;}

Tester

H & H: Research and Training 10 / 41

Page 11: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Premier service Somme

WCFOn veut creer une methode qui calcule la somme de deux entiers.Dans l’interface IService1 il faut ajouter

[ServiceContract]public interface IService1{

[OperationContract]int Somme(int a, int b);...

}

Dans la classe Service1, il faut ajouter l’implementation

public int Somme(int value1, int value2){

return value1 + value2;}

TesterH & H: Research and Training 10 / 41

Page 12: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Creation d’un client d’un service WCF

WCF

Creation d’un nouveau projet

Clic droit sur la solution (dans l’Explorateur de solutions)

Aller dans Ajouter > Nouvel projet

Choisir Application console

Saisir un nom (ClientWCF par exemple) et valider

Faire un clic droit sur le nom du nouveau projet

Cliquer sur Definir comme projet de demarrage

H & H: Research and Training 11 / 41

Page 13: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Creation d’un client d’un service WCF

WCF

Referencer le service dans le nouveau projet

Clic droit sur References du nouveau projet

Choisir Ajouter une reference de service

Cliquer sur Decouvrir

Selectionner le service et valider

H & H: Research and Training 12 / 41

Page 14: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Creation d’un client d’un service WCF

WCFContenu du client

using ClientWCF.ServiceReference1;namespace ConsoleApp1{

class Program{

static void Main(string[] args){

var client = new ServiceReference1.Service1Client();

int a = 7;int b = 3;int result = client.Somme(a, b);Console.WriteLine($"la somme de {a} et {b} est {

result}");Console.ReadKey();client.Close();

}}

}H & H: Research and Training 13 / 41

Page 15: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCF

Etapes

Installer Entity Framework en utilisant NuGet

Importer une base de donnees contenant la table personne selonl’approche Code First

Definir le DataContract

Definir le ServiceContract

Implementer le ServiceContract

Utiliser un client pour acceder au modele

H & H: Research and Training 14 / 41

Page 16: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCF

Avant de commencer

Supprimer les deux fichiers IService et Service

Faire clic droit sur le nom du projet, aller dans Ajouter >Nouvel element

Dans la zone de recherche, saisir WCF

Selectionner Service WCF

Dans Nom : , saisir PersonneService et garder l’extension

H & H: Research and Training 15 / 41

Page 17: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCFDefinir le DataContract dans le fichier IPersonneService

[DataContract]public class PersonneContract{

[DataMember]public string Nom { get; set; }

[DataMember]public string Prenom { get; set; }

[DataMember]public int Age { get; set; }

}

On n’expose pas la cle primaireH & H: Research and Training 16 / 41

Page 18: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCF

Definir le ServiceContract

[ServiceContract]public interface IPersonneService{

[OperationContract]List<PersonneContract> GetPersonnes();

}

H & H: Research and Training 17 / 41

Page 19: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCFImplementer le ServiceContract dans PersonneService

public class PersonneService : IPersonneService{

public List<PersonneContract> GetPersonnes(){

List<PersonneContract> collection = null;using (var db = new Model1()){

var persoQuery = from perso in db.personnesselect perso;

collection = new List<PersonneContract>(persoQuery.Select(elt => new PersonneContract()

{Prenom = elt.FirstName,Nom = elt.LastName,Age = elt.Age

}));}return collection;

}}

H & H: Research and Training 18 / 41

Page 20: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCF

Verifier que la balisage est a jour

Faire un clic droit sur le fichier .svc

Choisir Afficher le balisage

Verifier que son contenu est le suivant : <%@ ServiceHostLanguage="C#" Debug="true"Service="WcfService1.PersonneService"CodeBehind="PersonneService.svc.cs" %>WcfService1 : le nom du projet WCF

H & H: Research and Training 19 / 41

Page 21: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCF

Tester

Faire un clic sur PersonneService.svc

Ensuite executer

Cliquer sur la methode GetPersonnes()

Etendre le contenu de la colonne Nom de Reponse

H & H: Research and Training 20 / 41

Page 22: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCFPour tester a partir d’un client

namespace ConsoleApp1{

class Program{

static void Main(string[] args){

PersonneServiceClient client = newPersonneServiceClient();

var personnes = client.GetPersonnes();foreach (var elt in personnes)

Console.WriteLine($"Bonjour {elt.Prenom} {elt.Nom}");

Console.ReadKey();client.Close();

}}

}

Referencer le service apres mise a jourH & H: Research and Training 21 / 41

Page 23: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCF

Pour faire l’ajout, on prepare la methode AjoutPersonne

[ServiceContract]public interface IPersonneService{

[OperationContract]List<PersonneContract> GetPersonnes();

[OperationContract]bool AjoutPersonne(PersonneContract personne

);

}

H & H: Research and Training 22 / 41

Page 24: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Limiter l’acces au modele avec les services

WCFImplementer le ServiceContract dans PersonneService

public bool AjoutPersonne(PersonneContract personne){

using (var db = new Model1()){

var persoQuery = from perso in db.personneswhere perso.FirstName == personne.Nom&& perso.LastName == personne.Prenomselect perso;

if (persoQuery.Count() > 0)return false;

else{

personne p = new personne(){

FirstName = personne.Prenom,LastName = personne.Nom,Age = personne.Age,

};db.personnes.Add(p);db.SaveChanges();return true;

}}

}H & H: Research and Training 23 / 41

Page 25: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Etapes

Ajouter un (ou des) decorateur(s) a notre operation pour preciserla methode HTTP, le type de reponse, l’URL...

Configurer le service pour qu’il devienne accessible

H & H: Research and Training 24 / 41

Page 26: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCFPour faire l’ajout, on ajoute le decorateur [WebInvoke] a lamethode GetPersonnes()

[ServiceContract]public interface IPersonneService{

[OperationContract][WebInvoke(Method ="GET", UriTemplate ="/

personnes", ResponseFormat =WebMessageFormat.Xml)]

List<PersonneContract> GetPersonnes();

[OperationContract]bool AjoutPersonne(PersonneContract personne

);}

H & H: Research and Training 25 / 41

Page 27: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Explication

Method : permet de preciser la methode HTTP (GET, POST,DELETE, PUT...)

UriTemplate : permet de preciser l’URL permettant l’acces a laressource

ResponseFormat : permet d’indiquer le type de la reponse (ici,c’est Xml, mais on peut aussi choisir Json)

H & H: Research and Training 26 / 41

Page 28: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

On peut aussi utiliser le decorateur [WebGet]

[ServiceContract]public interface IPersonneService{

[OperationContract][WebGet(UriTemplate ="/personnes",

ResponseFormat =WebMessageFormat.Xml)]List<PersonneContract> GetPersonnes();

[OperationContract]bool AjoutPersonne(PersonneContract personne

);}

Dans ce cas, pas besoin de preciser la methode

H & H: Research and Training 27 / 41

Page 29: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Configuration du service

Faire un clic droit sur le projet et choisir Generer

Faire un clic droit sur Web.config et choisir Modifier laconfiguration WCF

Dans le panneau Configuration, faire un clic droit surServices et choisir Nouveau service

Dans le panneau Service: NewServiceType, cliquer sur lebouton a droite en face de Name.

Aller dans bin et cliquer deux fois sur le service.

H & H: Research and Training 28 / 41

Page 30: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Configuration du service : definir le comportement du point determinaison

Dans le panneau Configuration, etendre la rubriqueParametres avances et cliquer sur Nouveaucomportement.

Faire un clic droit sur Comportements du point determinaison et choisir Nouvelle configuration decomportement de point de terminaison.

Cliquer sur le bouton Ajouter et ajouter webHttp

Dans la section General, saisir WebBehavior dans la zone desaisie Name

H & H: Research and Training 29 / 41

Page 31: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Configuration du service : definir le point de terminaison

Faire un clic droit sur Points de terminaison situe dansServices et choisir Nouveau point de terminaison deservice

Dans Binding, choisir webHttpBinding

Cliquer sur le bouton en face de Contract et aller choisir leservice situe dans bin

De la liste deroulante de BehaviorConfiguration, choisirWebBehavior

Aller dans le menu Fichier et cliquer sur Enregistrer

Pour le message qui s’affiche, cliquer sur Oui pour tout

H & H: Research and Training 30 / 41

Page 32: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Pour tester

Executer le projet

Cliquer sur PersonneService.svc

Ajouter la route /personnes (par exemplehttp://localhost:53907/PersonneService.svc/personnes)

H & H: Research and Training 31 / 41

Page 33: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Le resultat (en Xml) semblera a :

<ArrayOfPerson xmlns="http://schemas.datacontract.org/2004/07/WcfService1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Person><FirstName>Jacques</FirstName><LastName>Ernest</LastName><Age>45</Age>

</Person><Person><FirstName>achref</FirstName><LastName>el mouelhi</LastName><Age>45</Age>

</Person></ArrayOfPerson>

H & H: Research and Training 32 / 41

Page 34: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Le resultat (en Json) semblera a :

[{"FirstName":"Jacques","LastName":"Ernest","Age"

:45},{"FirstName":"achref","LastName":"el mouelhi","Age

":45}]

H & H: Research and Training 33 / 41

Page 35: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Pour modifier le nom d’une balise, on peut ajouter l’attribut Namedans le decorateur

[DataContract(Name ="Person")]public class PersonneContract{

[DataMember(Name ="LastName")]public string Nom{

get; set;}

H & H: Research and Training 34 / 41

Page 36: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Pour modifier l’ordre des balises

[DataMember(Name ="LastName", Order = 2)]public string Nom{

get; set;}

[DataMember(Name = "FirstName", Order = 1)]public string Prenom{

get; set;}

[DataMember(Name = "Age", Order = 3)]public int Age{

get; set;}

H & H: Research and Training 35 / 41

Page 37: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Pour recuperer une seule personne selon son identifiant, il fautajouter dans l’interface le code suivant

[OperationContract][WebGet(UriTemplate = "/personne/{id}",

ResponseFormat = WebMessageFormat.Xml)]PersonneContract GetPersonne(string id);

H & H: Research and Training 36 / 41

Page 38: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCFEnsuite il faut implementer la methode

public PersonneContract GetPersonne(string id){

int i = 0;int.TryParse(id, out i);PersonneContract personne = null;using (var db = new Model1()){

var persoQuery = from perso in db.personneswhere perso.ID == iselect perso;

personne = persoQuery.Select(elt => newPersonneContract()

{Prenom = elt.FirstName,Nom = elt.LastName,Age = elt.Age

}).First();}return personne;

}

H & H: Research and Training 37 / 41

Page 39: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Pour tester

il faut aller sur la route /personne/2

H & H: Research and Training 38 / 41

Page 40: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

Pour que ces services soient exploitables par Angular, il fautqu’elles retournent un Observable et que le format de reponsesoit Json

[OperationContract][WebGet(UriTemplate = "/personne/{id}",

ResponseFormat = WebMessageFormat.Json)]ObservableCollection<PersonneContract>

GetPersonne(string id);

H & H: Research and Training 39 / 41

Page 41: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCFEnsuite il faut implementer la methode

public ObservableCollection<PersonneContract> GetPersonne(string id)

{int i = 0;int.TryParse(id, out i);ObservableCollection<PersonneContract> personne = null;using (var db = new Model1()){

var persoQuery = from perso in db.personneswhere perso.ID == iselect perso;

personne = new ObservableCollection<PersonneContract>(persoQuery.Select(elt => new PersonneContract()

{Prenom = elt.FirstName,Nom = elt.LastName,Age = elt.Age

}));}return personne;

}

H & H: Research and Training 40 / 41

Page 42: Achref El Mouelhi - lis-lab.fr › elmouelhia › courses › csharp › coursCsharpWcf.pdf · 2020-02-01 · Introduction WCF Pour tester Faire un clic sur Service1.svc Ensuite executer´

Rendre un service WCF RESTFUL

WCF

ExerciceAppeler ces methodes a partir d’Angular en utilisant les methodesHTTP dans les services.

Pour pouvoir tester

installer le plugin

(Allow-Control-Allow-Origin : *) sous chromehttps://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

(CORS Everywhere) sous firefoxhttps://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/

H & H: Research and Training 41 / 41