2009-12-22 13 views
3

Mon employeur est un fournisseur de logiciels pour un marché spécifique. Nos clients intègrent notre système avec d'autres utilisateurs de services Web. Nous utilisons la technologie Microsoft et nos services Web sont implémentés dans ASP.NET et WCF.Toutes les alternatives viables à WCF et WSDL pour les points d'extrémité d'intégration?

Le moment est venu de passer en revue notre gamme actuelle de services et de proposer des normes d'entreprise pour les futures intégrations. Je lis "Enterprise Integration Patterns", et j'ai aussi regardé un peu chez nServiceBus et Mass Transit. Ceux-ci peuvent simplifier des problèmes tels que le versionnement des contrats et les tests unitaires, mais ils semblent être les plus utiles pour fournir un bus de service interne, et non pour exposer des services à des clients externes. Nos clients utilisent de nombreuses plates-formes différentes et exigent que nos services soient conformes aux normes. Cela peut signifier différentes choses pour différentes personnes, mais je pense qu'il est sûr de supposer qu'ils veulent accéder aux services Web décrits avec WSDL.

Dans ce scénario, WCF est-il le chemin à parcourir?

+0

Qu'est-ce qui vous déplaît à propos de WCF? – DOK

+0

NServiceBus vous permet également d'exposer vos points de terminaison en utilisant WCF - ceci est indiqué au bas de cette page: http://www.nservicebus.com/InsteadOfWcf.aspx –

+0

DOK: Je n'aime pas la quantité d'infrastructure (hébergement et config) nécessaire pour tester même le service. Ensuite, je me suis demandé si l'utilisation de XML simple (POX) et XSD plutôt que WSDL serait trop peu orthodoxe par rapport à nos partenaires. En dehors de cela, j'étais curieux de savoir si un bus de service me donnerait des avantages supplémentaires dans mon scénario. –

Répondre

2

WCF est de loin la pile la plus conforme aux normes de la plate-forme Microsoft. La bonne chose est que c'est très flexible pour les différents clients "out of the box", et s'il y a des choses qui vous causent du chagrin, la plupart d'entre eux peuvent être modifiés via des comportements personnalisés sans trop de problèmes.

1

Une alternative que je recommande normalement est l'intégration sur AMQP entre vos courtiers de messages. C'est-à-dire que vous pouvez utiliser le paradigme push au lieu de celui d'interrogation (qui est très puissant et évolutif en comparaison)!

Vous devez configurer votre propre courtier, tel que RabbitMQ, localement. Ensuite, vous laissez votre partenaire d'intégration en créer un. (Facile: just download it).

Si votre partenaire intègre du même centre de données, vous seriez économiser de prendre quelques réseau divise - ce qui signifie que vous pouvez partager le courtier. D'autre part, si vous êtes sur des réseaux différents, vous pouvez configurer le courtier en federation mode. (Exécutez rabbitmq-plugins enable rabbitmq_federation et point vers l'autre courtier)

Maintenant, vous pouvez utiliser par exemple. MassTransit:

ServiceBusFactory.New(sbc => 
{ 
    sbc.UseRabbitMqRouting(); 
    sbc.ReceiveFrom("rabbitmq://rabbitmq.mydomain.local/myvhost/myapplication"); 
    // sbc.Subscribe(s => s ...); 
}); 

, comme vous le feriez si vous ne faites aucune intégration.

Si vous regardez http://rabbitmq.mydomain.local:55672/ maintenant, vous trouverez l'interface d'administration pour RabbitMQ. MassTransit crée un échange pour chaque type de message (l'envoi d'un tel message à cet échange sera diffusé à tous les abonnés), sur lequel vous pouvez mettre des règles d'autorisation.

Les règles d'autorisation peuvent prendre la forme d'une expression régulière par utilisateur ou peuvent être intégrées dans LDAP. Consultez la documentation pour cela.

Vous auriez également besoin de SSL dans le cas où vous allez sur le WAN et vous n'avez pas de tunnel IPSec - cette documentation est ici: http://www.rabbitmq.com/ssl.html et vous activez it like this.

C'est tout! Prendre plaisir! Post scriptum: si vous avez envie d'une aventure qui vous aidera à gérer toute votre infrastructure comme un effet secondaire, vous pouvez regarder puppet.Puppet est un provisioner et un gestionnaire de configuration de serveurs; Dans ce cas, vous pouvez configurer SSL avec une marionnette. Commencez par commander un certificat de sous-domaine générique pour votre domaine, puis utilisez ce certificat pour signer d'autres certificats: vous pouvez le déléguer - voir le guide rabbitmq où il est indiqué "Maintenant nous pouvons générer la clé et les certificats que notre autorité de certification utilisera " - générer une demande de signature de certificat pour le certificat au lieu de créer une nouvelle autorité - et laisser RMQ l'utiliser pour SSL - elle sera valide pour internet.