Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

Developpez.com - Microsoft DotNET
X

Choisissez d'abord la catégorieensuite la rubrique :


Utilisation de cassini : un serveur web local de tests

25/05/2004

Par Pierre Gaudin
 

Ce tutoriel va vous expliquer comment installer et configurer le serveur web cassin. Nous verrons ensuite comment cassini peut nous permettre d'exécuter des pages aspx sous apache.


Présentation
1. Installation et configuration
2. Cassini et Apache
2.1. Le principe de fonctionnement
2.2. La mise en place
3. Ce que l’on peut attendre de Cassini en résumé
Bibliographie
Ressources


Présentation


Cassini est un mini serveur développé par microsoft et gratuit (c’est possible). A l’origine il était contenu dans l’application ASP .NET Web Matrix qui n’est en fait qu’une version allégée et gratuite de Visuall Studio et qui permet de développer des pages ASP.NET. Il est maintenant disponible directement chez Microsoft et un Forum de discussion lui est consacré.

Grâce à ce serveur HTTP autonome, vous pourrez développer et tester vos pages ASP .NET sur Windows XP Edition Familiale et ce sans avoir à installer et configurer le serveur IIS sur votre machine. En effet, Cassini n’a pour seul objectif que de faire tourner en local des applications ASPNET lors du développement de pages. Il est biensure nécessaire d'installer Net framework au préalable.

Toutefois, celon les spécifications de Microsoft ce serveur ne répond pas aux requêtes venant des machines "extérieures" mais nous verrons qu’il peut s’interfacer astucieusement avec Apache afin de lire des pages ASPNET et même d’accéder aux pages asp.NET via un ordinateur distant. Cassini n’est donc pas qu’un simple serveur local

Cassini est développé en C# et bien que les sources soient contenues dans le package, elles ont été traité par un obfuscator afin qu’elles ne soient pas déchiffrables. Une version totalement libre sera sûrement disponible sous peu.


1. Installation et configuration


L’installation de Cassini n’est pas optimisée. Toutefois il s’agit d’une étape relativement simple lorsque l’on dispose d’un bon tutoriel…

  • Dans un premier temps téléchargez Cassini sur le site Web (214 KO !!!) et décompresser l’archive sur votre disque dur.
  • Lancez ensuite l’exécutable Cassini.exe. Une première fenêtre d’information sur les OS supportant Cassini et résumant les possibilités du serveur local s’affiche. Cliquez sur "Next".
  • La fenêtre suivante comporte la licence d’utilisation. Vous pouvez voir que Cassini est libre d’utilisation (Utilisation commercial ou non !) mais que son utilisation se fait à vos risques et dépend quant aux éventuels dommages provoqué par Cassini. Cocher la case « I accept the terms in the license agreement » puis cliquez sur « Next ».
  • Choisissez le répertoire dans lequel installer Cassini, puis cliquez sur « Next ».
  • L’installshied installe alors Cassini dans le répertoire spécifié puis ouvre le fichier ReadMe.TXT. Ce fichier vous indique comment installer Cassini mais il est très incomplet pour installer correctement cassini. Vous pouvez donc fermer cette fenêtre.

A ce stade rien n’est installé seul les fichiers utiles à Cassini on été copié dans le dossier spécifié. Les étapes suivantes vont vous amener à compiler le "serveur Local" afin d’obtenir un fichier EXE.

remarque :Remarque : il ne s’agit pas d’un exécutable classique mais d’un fichier en byte code que seul Net FrameWork sait interpréter

A l’aide de l’Explorateur Windows, allez dans le répertoire de Cassini et Cliquez avec le bouton droit de la souris sur le fichier build.bat et sélectionnez « modifier ». Il apparaît alors dans le bloc note des lignes de code qui sont exécutées lorsque vous double cliquez sur build.bat.

A la lecture du code vous remarquez qu’il y a trois étape qui sont la compilation de la dll Cassini.dll , l’installation de cette DLL dans l’assenbly et enfin la compilation de CassiniWebServer.exe. Pour les étapes de compilation vous avez besoin de l’outil « csc.exe » et pour l’installation de la DLL de « gacutil.exe ». Vous remarquerez que les chemins d’accès à ces exécutables ne sont pas valides. Il va donc falloir spécifier manuellement ces chemins d’accès aux lignes 14, 20 et 26.

Le fichier "csc.exe" se trouve dans le répertoire "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322". Le fichier "gacutil.exe" quant à lui se trouve dans le dossier "C:\Program Files\Microsoft.NET\SDK\v1.1\Bin". Afin de faciliter l'installation de Cassini je vous conseille de le copier ainsi que le fichier « gacutil.exe.config » dans le même répertoire que "csc.exe".

Voici le code complet du fichier build.bat pour une installation standard. Ceci peut varier celon l'emplacement de Net Framework.

echo ------------------------------------------------------------------------ echo Compiling Cassini.dll ... echo ------------------------------------------------------------------------ C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe /t:library /r:System.dll /r:System.Web.dll /out:Cassini.dll AssemblyInfo.cs ByteParser.cs ByteString.cs Connection.cs Host.cs Messages.cs Request.cs Server.cs if errorlevel 1 goto problems echo ------------------------------------------------------------------------ echo Installing Cassini.dll into Global Assembly Cache ... echo ------------------------------------------------------------------------ C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\gacutil.exe /i Cassini.dll if errorlevel 1 goto problems echo ------------------------------------------------------------------------ echo Compiling CassiniWebServer.exe application ... echo ------------------------------------------------------------------------ C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe /t:winexe /r:System.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /r:Cassini.dll /win32icon:CassiniWebServer.ico /res:CassiniWebServer.ico,CassiniWebServerIcon /out:CassiniWebServer.exe CassiniWebServerMain.cs if errorlevel 1 goto problems echo ------------------------------------------------------------------------ echo Done: to run please specify port, virtual and physcal path, for example: echo ----------------------------------- echo CassiniWebServer c:\temp 8080 /temp echo ----------------------------------- goto done :problems echo --------------- echo Errors in build echo --------------- :done
Une fois les modifications effectuées enregistrez le fichier Build.bat et exécutez le. Si tout se passe bien, deux nouveaux fichiers sont créés (CassiniWebServer.exe et Cassini.dll) dans le répetoire de Cassini. Vous venez d'effectuer la partie la plus ardue de ce tutoriel.

Il est maintenant nécessaire de tester le serveur Local et de la paramétrer :
Il faut tout d’abord créer un répertoire racine pour vos pages web. Dans cet exemple nous avons créé le répertoire d:\www qui servira à héberger les pages web.
Lancer l’application en double cliquant sur CassiniWebServer.exe. Le panneau de configuration s’affiche alors.

La première zone de texte doit comporter le répertoire racine. Pour nous, il s’agira de « d:\www ». La seconde ligne correspond au numéro de port à utiliser. Même s’il s’agit d’un serveur http l’utilisation du port 80 pose problème. Je vous conseille donc d’utiliser le port 8080 qui lui n’est utilisé par aucune autre application. Enfin la troisième ligne correspond au chemin virtuel. Il correspond au chemin comportant les pages à afficher à partir du dossier racine.

Une fois tous les paramètres saisis, cliquez sur « Start » pour démarrer le serveur. Voici les messages d'erreur possible :

vous indique que le répertoire de l’application est invalide, vérifiez que l’adresse du répertoire racine est la bonne.

changez de numéro de port

Une fois le serveur Local correctement démarré, les boites de saisies se grisent et un hyperlien vers la racine de vos pages Web apparaît en bas de la fenêtre. Vous pouvez alors cliquez dessus.

Si le serveur Local est correctement démarré une fenêtre d'Internet Explorer s’ouvre et les fichiers et dossiers du répertoire s’affichent alors.

Remarque :L’adresse du local host se compose du mot clé Localhost suivi du numéro de port utilisé.

http://localhost:8080
Vous pouvez tester l’affichage d’une page asp.net de test. Cette page doit être contenue directement dans le dossier d:\www sinon spécifié le chemin suplémentaire dans le chemin virtuel (exemple : /aplication2) pour accéder à cette page. Tapez l'adresse :

http://localhost:8080/test.aspx
Si la page s'affiche correctement, votre serveur est en état de fonctionner.

Vous pouvez arrêter le serveur en cliquant sur "Stop".

Lancer C# Builder. Dans le menu « Outil » cliquez sur « Options ». La boite de dialogue de configuration des options s’affiche.

Cliquez sur l’item "Options ASP.NET".
Dans la partie "Serveur Web Cassini" indiquez le "chemin" d’accès au fichier CassiniWebServer.exe et le "port" (ici 8080) à utiliser par défaut
Dans le cadre "paramètre par défaut du nouveau projet Web", indiquez le répertoire racine de vos pages Web (ici d:\www) ainsi que le "Serveur Web" à utiliser par défaut : Serveur Web Cassini.

Cliquez sur "Ok" pour enregistrer les paramètres et pour fermer cette boite de dialogue.

Remarque : Par défaut tous les projets ASP.NET seront conçus avec le serveur local Cassini. Si ultérieurement vous souhaitez utiliser IIS, il faux refaire cette modification en indiquant que le serveur Web est Internet Information Serveur (IIS).

Nous allons maintenant créer une page ASP.NET afin de tester Cassini.

Créer un nouveau projet ASP.NET "Fichier" "Nouveau" "Application Web ASP.NET".Une boite de dialogue s’ouvre.

Comme vous avez informé C# Builder que vous souhaitiez utiliser Cassini par défaut il est automatiquement sélectionné comme serveur. Si vous souhaitez utiliser IIS, changez le nom du « Serveur ». De même le répertoire par défaut est D:\www\. Il est préférable de ne pas modifier cette ligne. Par contre vous pouvez changer le « Nom » de l’application. Le changement se fera alors automatiquement sur la ligne "Chemin" et un nouveau répertoire sera créé.

Remarque : Pour créé un projet à la racine supprimer le "Nom" de répertoire qui est ajouté automatiquement sur la ligne "Chemin".

Une fois tous les champs correctement renseignés, cliquez sur OK. Un nouveau projet est alors construit.

Mettez un composant Web Form sur la page principale et exécutez l’application.
Le serveur Local est alors automatiquement démarré sur le port 8080 (une icône apparaît dans la barre des taches) et le fichier aspx est chargé dans Internet Explorer.
Veillez bien à ce qu’il n’y ai qu’un seul serveur démarré sur le même port.

Remarque : C# Builder donne automatiquement le chemin par défaut "http:// "le localhost" : "numéro de port" / "nom de l’application" " comme chemin racine.

http://localhost:8080/WebApplication2
Pour revenir au mode conception fermer IE, Cassini s’arrête alors automatiquement ou arrêter directement Cassini en cliquant sur "Stop".

Un projet créer avec Cassini comme serveur s'ouvre automatique avec ce dernier. Toutefois il est possible de changer pour un projet le serveur par défaut. Pour ce faire lorsque le projet est chargé dans C# Builder cliquez sur "Projet" puis sur "Options". La boite de dialogue "Options pour projet" s'ouvre alors. Cliquez sur "Options ASP.NET" et modifiez les valeurs du cadre "Hebergé par un serveur".

Voilà vous êtes maintenant prêt pour développer votre projet ASP.NET sans avoir besoin d’installer le serveur IIS sur votre ordinateur.

Comme cela à été très simple vous êtes encore plein de courage pour pousser l’expérience un peu plus loin et voir comment Cassini peut s’interfacer avec Apache afin de lire des pages ASP.NET sur votre serveur préféré et comment Apache permet d’utiliser Cassini depuis un ordinateur distant.


2. Cassini et Apache


La question vous trotte depuis longtemps ASP.NET et Apache cela est il possible ?. Cassini est une manière de répondre oui.

Remarque : Nous avons réalisé ce test à l'aide d'Apache V2.048. Avec une version entérieur ceci ne fonctionne pas.

Voici l’idée : L’objectif consiste à mettre en place une redirection par proxy ou encore proxy_redirect. Le schéma suivant nous illustre le principe de fonctionnement général de la redirection par proxy.


2.1. Le principe de fonctionnement


Lorsqu'un utilisateur émet une requête de type ASPX à destination du serveur Web, les opérations suivantes sont réalisées:

  • Apache récupère sur le port 80 le répertoire virtuel spécifié dans la requête.
  • Si le répertoire virtuel correspond à celui qui se trouve dans son fichier de configuration, en l'occurrence /aspnet, il redirige la requête vers le serveur chargé de comprendre cette requête, en l'occurrence ici Cassini sur le port 8080.
  • Pour finir, la requête est traitée par Cassini qui renvoie simplement la réponse sous la forme d'un flux HTML à Apache. Le flux est ensuite redirigé au client qui se charge de l'afficher par le biais de son navigateur.


2.2. La mise en place


Pour mettre ce service en place il faut éditer le fichier HTTP.CONF, dans le but d'y insérer les entrées correspondantes au Proxy Redirect. Pour ce faire, il suffit simplement de dé-commenter les modules mod_proxy et mod_rewrite et d'ajouter les lignes suivantes :

# Configuration Cassini LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.so # Configuration Cassini ProxyPass /aspnet http://127.0.0.1:8080/ ProxyPassReverse /aspnet http://127.0.0.1:8080/
Pour tester cette implémentation :

  • Lancer le serveur Apache et le serveur Cassini sur le port 8080 avec le répertoire d’application d:\www.
  • Créez une application ASP.NET à la racine d:\www.

Lancer Internet Explorer et indiquer l’adresse :

http://localhost:8080/WebForm1.aspx
La page se charge normalement.

Maintenant affichons la page via le serveur Apache

http://localhost/aspnet/WebForm1.aspx

Aucune erreur n’est affichée et la même page est chargée !

Allons encore plus loin.

Nous savons que Microsoft à volontairement bridé Cassini afin qu’il ne fonctionne qu’en local. Apache va nous permettre de contourner cette limitation.

Depuis un ordinateur distant appeler une page aspx sur le serveur (on supposera ici que le serveur a l'adresse 192.168.0.3) :

http://localhost:8080/WebForm1.aspx

3. Ce que l’on peut attendre de Cassini en résumé


Voici résumé brièvement ce qu’il est possible de faire avec Cassini et ces limites. Ce tableau n’est pas exhaustif.

Possibilités Limites
Chargement et affichage de pages ASP.NET Sources non disponibles
Fonctionnement sous Windows 98 et plus  
Interface avec apache pour lire des pages ASP.NET avec apache  
Libre d’utilisation  
Autonome  
Connexion au serveur à distance  

Bibliographie




Ressources





Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -