Question

Combien de ServiceContracts un service WCF peut-il avoir ?

Plus précisément, puisqu'un ServiceContract est un attribut d'une interface, combien d'interfaces puis-je coder dans un service Web WCF ?Est-ce un face-à-face ?

Est-il judicieux de séparer les contrats entre plusieurs services Web ?

Était-ce utile?

La solution

Vous pouvez demander à un service de mettre en œuvre tous les contrats de service que vous souhaitez.Je veux dire, je ne sais pas s'il y a une limite, mais je ne pense pas qu'il y en ait.

C'est une manière intéressante de séparer les opérations qui seront implémentées par le même service dans plusieurs interfaces de contrat de service conceptuellement différentes.

Autres conseils

Les services WCF peuvent avoir plusieurs points de terminaison, chacun pouvant implémenter un contrat de service différent.

Par exemple, vous pourriez avoir un service déclaré comme suit :

[ServiceBehavior(Namespace = "DemoService")]
public class DemoService : IDemoService, IDoNothingService

Qui aurait une configuration dans ce sens :

<service name="DemoService" behaviorConfiguration="Debugging">
  <host>
    <baseAddresses>
      <add baseAddress = "http://localhost/DemoService.svc" />
    </baseAddresses>
  </host>
  <endpoint 
    address =""
    binding="customBinding"
    bindingConfiguration="InsecureCustom"
    bindingNamespace="http://schemas.com/Demo" contract="IDemoService"/>
  <endpoint 
    address =""
    binding="customBinding"
    bindingConfiguration="InsecureCustom"
    bindingNamespace="http://schemas.com/Demo" contract="IDoNothingService"/>
</service>      

J'espère que cela aide, mais si vous recherchez les interfaces maximales théoriques que vous pouvez avoir pour un service, je soupçonne qu'il s'agit d'un multiple de 2 incroyablement grand.

@jdiaz

Bien sûr, vous devez vous efforcer d'avoir des problèmes commerciaux très différents dans différents services, mais considérez le cas dans lequel vous souhaitez, par exemple, que tous vos services implémentent une opération GetVersion().Vous pourriez avoir un contrat de service uniquement pour cette opération et demander à chaque service de l'implémenter, au lieu d'ajouter l'opération GetVersion() au contrat de tous vos services.

Un service peut théoriquement avoir n'importe quel nombre de points de terminaison, et chaque point de terminaison est lié à un contrat ou une interface particulière. Il est donc possible pour un seul service conceptuel (et configuré) d'héberger plusieurs interfaces via plusieurs points de terminaison ou alternativement pour plusieurs points de terminaison d'héberger. la même interface.

Si vous utilisez la classe ServiceHost pour héberger votre service, au lieu d'IIS, vous ne pouvez associer qu'une seule interface par ServiceHost.Je ne sais pas pourquoi c'est le cas, mais c'est le cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top