2009-10-13 8 views
0

Actuellement je développe un serveur pour la surveillance par satellite des objets. Dans son état actuel, il est très efficace et stable dans les scénarios de forte charge. Le serveur doit pouvoir traiter 50 messages + mln par jour, ou plus si l'équilibrage de charge est utilisé. Il se compose de passerelle de données gps (singleton), "databroker" (singleton), qui est responsable de la persistance des données, fournir sur demande, et alerter les abonnés sur les nouvelles données, service de connexion (par appel) et service client (par session) , responsable de l'abonnement et de travailler avec l'interface web et client riche.Personnalisé ServiceBus et "adaptateur" pour cela en utilisant WCF

A ce stade je peux forsee ces problèmes:

  1. La complexité croissante si de nouveaux services sont ajoutés.
  2. Couplage serré.
  3. Difficile à configurer.
  4. Beaucoup de code de bas niveau pour gérer les abonnements etc dans les futurs services bl (rapports par exemple).

Pour résoudre ces problèmes, je veux utiliser quelque chose comme ServiceBus.
Les solutions MS sont chères pour nos clients, NServiceBus me fait un peu peur, en raison de ses origines open source (et Class1 dans le code source = D) et CIO a demandé d'éviter de l'utiliser.
J'ai donc décidé d'écrire mon propre bus simple, et j'ai rencontré des problèmes avec l'adressage et l'abonnement de différents types de services (singleton, par session, par appel) et aussi l'équilibrage de charge.

J'ai trouvé une solution assez élégante pour cela: utilisez des «adaptateurs» pour les services bus-wcf pour l'encapsulation de certains problèmes spécifiques de fonctionnement avec les services - comme l'équilibrage de charge. Ainsi, le bus ne verra que les adaptateurs et acheminera les messages entre eux et transmettra les messages plus loin. Je serai très reconnaissant d'entendre des pensées sur toutes ces choses =)
PS bus et les adaptateurs utilisent MSMQ pour la communication entre eux, mais d'autres services peuvent utiliser http, tcp bindings.
PS2 Désolé pour mon anglais, ce ne est pas ma langue maternelle =)

+1

Quels sont les « solutions MS » qui sont trop expens ive pour toi? Avez-vous regardé le "servicebus dans le cloud" (Azure Servicebus)? –

+0

Oui, parier que ce n'est pas une option = (Par exemple, les clients qui utilisent notre serveur pour surveiller des véhicules qui transportent de l'argent par exemple ... ils veulent que leur infrastructure informatique soit sous leur contrôle total –

Répondre

1

Je suis probablement juste apporter le dos mort, mais si vous souhaitez toujours implémenter votre propre bus ces liens peuvent être utiles (au niveau de la conception):

http://msdn.microsoft.com/en-us/magazine/cc500646.aspx

http://msdn.microsoft.com/en-us/magazine/cc546553.aspx

J'ai trouvé des réponses à certaines de mes questions sur la façon Déclare dynamiquement subservices et acheminer les messages du client à leur disposition par le service de routeur central

1

Vous pouvez essayer d'utiliser "service broker sql" comme un bus de service

http://javiercrespoalvez.com/2009/03/using-sql-service-broker-in-net.html

Le blog a également des liens vers d'autres services les bus que vous pourriez essayer.

+0

Une de nos caractéristiques système est notre le client peut utiliser n'importe quel support db Nhibernate, y apporter des optimisations et équilibrer la charge entre les magasins de données.Contrôlée Mass Transit et Simple Service Bus La plupart d'entre eux utilisent massivement msmq de part et d'autre. Plusieurs points de terminaison pour soutenir les eurodéputés diffirent Maintenant, je pense à 2 problèmes: 1.Comment stocker les consommateurs pour les députés diffirent? 2.Comment passer les messages-sérialiser em au format binaire ou essayer d'utiliser le sérialiseur wcf standard. possible. Merci quand même =) –

0

Merci pour toutes les réponses =) J'ai été capable de convaincre les patrons d'utiliser NServiceBus. (Après avoir créé un prototype de bus en service le week-end =). Maintenant, il convient très bien dans le système =)

Questions connexes