Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe


Poster un commentaire

Host header, IP, port et identification d’un site Web

Une fois que vous saisissez une adresse Web telle http://www.google.fr, le navigateur tente de résoudre son adresse IP. Il dispose pour cela du fichier hosts et du DNS.

 

En principe le navigateur commence par consulter le fichier hosts situé ici:

%systemroot%\system32\drivers\etc

Puis il interroge un DNS.

Vous pouvez vous aussi réaliser cette même opération avec la commande ping:

2014-09-24_21-33-06

Ouvrez maintenant le fichier hosts et ajoutez cette ligne:

102.54.94.97   http://www.google.fr

Puis relancez le ping:

2014-09-25_08-59-45

Bien sûr tout cela est une version simplifiée de ce qui se passe, on peut trouver des détails ici:

http://cbfive.com/blog/ping-vs-nslookup/

Lire la suite


Poster un commentaire

Windows Activation Service (WAS)

Il est possible d’héberger des services WCF de 3 façons (au-moins):

  1. Dans IIS
  2. Dans une application console, Windows Service ou Winform
  3. Avec le service WAS hébergé par IIS

 

Hébergement IIS

J’ai écris une série d’articles qui montre les différentes façons d’héberger un service WCF dans IIS. Le premier de la série est:

https://amethyste16.wordpress.com/2013/05/18/programmer-avec-les-services-2/

 

Hébergement dans un AppDomain
L’hébergement dans une application de type application console se réalise avec une instance de ServiceHost

Note: Les autres hébergement utilisent aussi ServiceHost en interne, il est juste masqué à l’utilisateur

Voici un article avec un exemple:

http://msdn.microsoft.com/fr-fr/library/system.servicemodel.servicehost(v=vs.110).aspx
ServiceHost est un conteneur pour héberger WCF et fournir une description du service accessible via Wsdl. Il gère aussi un cycle de vie via divers événements comme Closed, Closing…

Ce type d’hébergement est appelée self-hosting car on doit alors tout prendre en charge:

  • Instancier le service et initialiser l’environnement
  • Gérer son paramétrage
  • Gérer la montée en charge
  • Gérer le recyclage et le cycle de vie
  • Gérer les logs et les exceptions
  • Gérer le monitoring

Seuls IIS et WAS propose ces extensions de services de façon intégrées. C’est ou ce n’est pas utile à votre application. Comme toujours, le besoin prime.

Si vous choisissez cette option, je recommande fortement d’utiliser un service Windows. L’application console (voir WinForm) a ses adeptes, mais je n’en comprends même pas l’intérêt en production.

 

Hébergement WAS

WAS est arrivé avec IIS 7. Il s’agit donc d’une extension de IIS.

L’intérêt de l’hébergement WAS est que l’on n’a pas la dépendance avec Http. On peut donc utiliser n’importe quel protocole WCF (TCP, MSMQ…), mais on garde les services standards de IIS (monitoring, cycle de vie, gestion temps morts…).

Important: WAS n’est disponible qu’en mode pipeline intégré.

 

IIS a apporté quelques modifications dans l’architecture IIS justement pour pouvoir supporter WAS. On parle d’écouteurs de protocole, d’adaptateurs et de gestionnaires de protocoles:

  • Ecouteurs de protocole (protocol listeners)
    Un service dont le rôle est de recevoir des requêtes dans un protocole donné. On a toujours l’écouteur Http hérité de IIS 6 (http.sys), mais on en a de nouveau avec WAS
  • Adaptateurs (listeners adapter)
    C’est un adaptateur au sens développé dans cet article:
    https://amethyste16.wordpress.com/2014/07/02/comparaison-des-patrons-proxy-adaptateur-et-facade/
    Son rôle est de traiter la requête reçue dans un protocole, mettre éventuellement la requête dans une queue et enfin la router vers le worker process qui pourra la traiter à l’aide d’un gestionnaire de protocole.
  • gestionnaires de protocole (protocol Handlers)
    Le gestionnaire instancie (si nécessaire) un ServiceHost pour le protocole demandé et lui passe la requête à traiter.

Une petite infographie et ce sera sans doute plus clair. Elle est tirée de l’article de Michele Leroux Bustamante cité plus bas:

2014-08-14_17-30-59

 

Comme on le voit, la nouvelle architecture permet à IIS de traiter n’importe quelle requête de n’importe quel protocole de façon homogène.

 

Si vous souhaitez en savoir plus (et notamment comment activer WAS dans IIS), lisez cet excellent article de Michele Leroux Bustamante:

http://www.codemag.com/Article/0701041

J’ai bien aimé également cet article écrit aussi par une femme:

http://searchwindowsserver.techtarget.com/definition/Windows-Process-Activation-Service-WPAS

 

Un exemple d’hébergement WAS:

http://msdn.microsoft.com/fr-fr/library/ms733109(v=vs.110).aspx

http://www.wcftutorial.net/wcf-was-hosting.aspx

 

 

Maintenant le moyen le plus simple d’exploiter WAS reste Windows AppFabric. A suivre justement un article sur ce thème.