2010-10-01 3 views
1

Voici ce que je veux faire. J'ai un programme avec lequel de nombreux appareils clients communiquent (des centaines). Malheureusement, lorsque j'ajoute de nouvelles fonctionnalités, il m'arrive parfois d'apporter des modifications de rupture qui affectent ces clients. Donc typiquement nous devons mettre à jour les clients et le serveur en même temps.Implémentation d'un proxy inverse en C#

J'ai donc eu une idée dans laquelle je vais juste exécuter chaque version de l'application en même temps et faire comprendre au serveur web et ainsi proxy les demandes et les réponses. J'ai commencé avec du code que j'ai trouvé ici sur le site codeproject: http://www.codeproject.com/KB/IP/reverseproxy.aspx. Cela fonctionne bien, cependant; quand je le lance contre mon programme, la session ne semble pas fonctionner. Pour clarifier, la session ne fonctionne pas dans le programme d'origine que le proxy lit. D'après ce que je comprends, ce proxys proxie les demandes de cookies, reçoit et messages. Est-ce que quelqu'un a des idées sur ce que je peux faire pour améliorer cela?

Maintenant, je sais que certaines personnes voudront suggérer d'utiliser la réécriture d'URL ou le routage d'application, cependant; J'ai besoin de prendre des décisions sur quelle page présenter en fonction du contenu des messages/obtient et pas seulement l'URL.

Informations supplémentaires: J'utilise IIS6 pour prod sur les serveurs Windows 2003.

Répondre

1

Cela n'aidera pas si vous êtes déjà déployé, mais si vous devez modifier la sémantique du service, modifiez également l'URL. Les anciens clients utilisent l'ancienne URL, qui agit comme ils le souhaitent, et les nouveaux utilisent la nouvelle URL. Il est analogue à ce que vous feriez si vous publiiez une API - vous ne changeriez pas le retour d'une fonction si vous aviez beaucoup d'appelants que vous ne pouviez pas contrôler. Au lieu de cela, vous ajouteriez une autre fonction.

+0

Je pensais à cela aussi, mais le problème est que cette application est déjà déployée. Aussi, je veux l'utiliser pour les sites que les CSR utilisent aussi. Je ne veux pas les obliger à utiliser un site différent chaque fois que je publie une nouvelle version. Mais je ne peux pas les améliorer tous en même temps à chaque fois. –