J'ai parcouru le livre «Learning WCF» en essayant de créer et d'utiliser les services Web de la WCF. La première partie du livre guide le lecteur à travers la création puis la consommation d'un simple service web "Hello World". Le problème que je rencontre est que l'application cliente ne semble pas connaître la structure de l'interface WCF lorsqu'elle l'appelle. Comment cela peut-il être nécessaire si un service Web peut être appelé à partir d'un certain nombre de langages de programmation?Le service WCF consommateur de client nécessite-t-il une définition d'interface?
J'ai énuméré le code exemple pertinent ci-dessous ...
Voici le code pour l'interface
[ServiceContract(Namespace="http: //www.thatindigogirl.com/samples/2006/06")]
public interface IHelloIndigoService
{
[OperationContract]
string HelloIndigo();
}
Voici le code pour le service qui héberge le service Web
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(HelloIndigo.HelloIndigoService) ,
new Uri("http: //localhost: 8000/HelloIndigo")))
{
host. AddServiceEndpoint(typeof(HelloIndigo. IHelloIndigoService) ,
new BasicHttpBinding(), "HelloIndigoService");
host. Open();
Console. WriteLine("Press <ENTER> to terminate the service host") ;
Console. ReadLine();
}
}
Voici le code du client ap p qui consomme le service WCF C'est là que je suis confus. Étant donné que cette application client peut être n'importe quel langage capable d'appeler un service Web, pourquoi est-il nécessaire de connaître la définition de l'interface?
using System. ServiceModel;
[ServiceContract(Namespace = "http: //www.thatindigogirl.com/samples/2006/06")]
public interface IHelloIndigoService
{
[OperationContract]
string HelloIndigo();
}
static void Main(string[ ] args)
{
EndpointAddress ep = new
EndpointAddress("http: //localhost: 8000/HelloIndigo/HelloIndigoService") ;
IHelloIndigoService proxy = ChannelFactory<IHelloIndigoService>.
CreateChannel(new BasicHttpBinding(), ep);
string s = proxy. HelloIndigo();
Console. WriteLine(s) ;
Console. WriteLine("Press <ENTER> to terminate Client.") ;
Console. ReadLine();
}
Est-ce que je manque un point important ici? Peut-être que ma compréhension de ce qui est nécessaire pour consommer un réseau fait défaut. Mon but est de pouvoir utiliser WCF pour créer un service .NET pouvant être appelé depuis n'importe quel langage ou environnement de programmation.
Quelqu'un pourrait-il suggérer un bon didacticiel sur la création de services Web «consommables multiplateformes» à partir de .NET? Merci!
+1 Merci pour l'explication! – webworm