2009-12-07 9 views
0

Je veux exposer ma couche de service (qui est actuellement écrite en tant que bibliothèque de classes standard avec POCOs) pour la consommation externe aussi bien qu'internes. Les clients externes l'utiliseront via des API de style REST tandis qu'en interne, mon application MVC l'utilisera via la liaison net.tcp pour de meilleures performances.WCF - Utilisation de plusieurs liaisons, y compris REST (WebHttpBinding) sur une bibliothèque de services?

Comment est-ce que je fais cela élégamment? Je peux écrire 2 enveloppes pour REST en utilisant les fonctionnalités REST VS2010 Beta 2 et d'autres en utilisant des liaisons WCF standard. Puis-je faire cela dans un emballage? ou mieux juste refactorisation mes services existants WCF et d'exposer sur divers points d'extrémité à l'aide de différentes liaisons comme webHttpBinding, WSHttpBinding, etc.

Cordialement,

Ajay

Répondre

1

Votre bibliothèque de services contiendra uniquement l'implémentation du service - vos contrats de service (et de données) doivent être dans leur propre ensemble "Contrats" distinct. La question de l'hébergement et le protocole à utiliser sont gérés par votre service. hôte - ceci peut être IIS ou un service NT distinct ou une application de console ou quelque chose du genre. C'est totalement indépendant de votre classe de service et votre bibliothèque de service. Donc oui - vous pouvez facilement créer une bibliothèque de services et ensuite exposer ce service sur une multitude de points de terminaison dans votre hôte de service - ces deux choses doivent être totalement séparées les unes des autres.

+0

"Ceci est totalement indépendant de votre classe de service et de votre bibliothèque de services." en pratique, ce n'est pas nécessairement toute l'histoire. Par exemple. si vous souhaitez exposer un service via deux fichiers SVC différents. Cela vous obligera à fournir des implémentations dédiées, même si celles-ci ne sont que des implémentations dérivées d'implémentations partagées. Il n'y a tout simplement aucun moyen de référencer une config de service sans elle. Accepteriez-vous? – Alex

+0

@Alex: d'accord, mais cela me semble un peu un cas limite. Pourquoi voudriez-vous jamais exposer le même service à travers deux fichiers * .svc séparés? Plus: tout en production, je l'hébergerais quand même ... –

+0

J'avais besoin de cela dans un couple de services hébergés IIS consommés par des clients implémentés sur différentes piles de technologies (PHP, Java, .NET). – Alex

0

Bien sûr, vous pouvez simplement ajouter plusieurs d'entre eux à la configuration fichier ou en utilisant le code.

0

VS 2010 Les fonctionnalités REST de Beta 2 sont elles-mêmes construites sur WCF, donc si vous voulez les utiliser, vous devrez de toute façon refactoriser votre service dans un service WCF. À ce stade, comme le disent Dani et marc_s, vous pouvez très facilement ajouter des points de terminaison supplémentaires au service via le fichier de configuration.