Affichage des articles dont le libellé est Codeplex. Afficher tous les articles
Affichage des articles dont le libellé est Codeplex. Afficher tous les articles

samedi 24 octobre 2009

Comment faire un proxy HTTP

Comme vous l’avez vu, j’ai récemment mis à jour mon projet codeplex zeroconf. Ce projet ne contient pas seulement l’implémentation du protocol DNS et du protocol Bonjour. Il contient aussi l’implémentation du protocol HTTP qui me permet d’envoyer des requêtes HTTP en UDP, chose qui n’est pas faisable avec l’implémentation du framework .NET. Au boulot, j’ai besoin de vérifier qu’une application que j’ai développé fonctionne correctement avec IE6( oui, ca existe encore… malheureusement). Puisque je suis sur Windows 7, je me suis dit que ca pourrait être super d’utiliser IE6 en application virtuelle. Je pense que vous voyer où je veux en venir. Sur une machine virtuel, on n’a pas accès au serveur de développement web démarré par visual studio. Ce que j’aurais pu faire, c’est déployer sur la machine virtuelle, ce qui veut dire, installer IIS, le configurer, passer du temps à vérifier le fichier web.config… Bref, pas une solution des plus simple à mettre en place. Alors, je me suis dit : Ce qu’il me faut, c’est un proxy, et j’ai déjà l’implémentation du protocole HTTP !

Voici le code du fameux proxy :

public class Proxy
{
RestServer proxy;
string hostToRedirectTo;

static void Main(string[] args)
{
Proxy p = new Proxy(ushort.Parse(args[0]), args[1]);
p.Start();
Console.ReadLine();
p.Stop();
}

private void Stop()
{
proxy.Stop();
}

private void Start()
{
proxy.StartTcp();
}

public Proxy(ushort portToListenOn, string hostToRedirectTo)
{
proxy = new RestServer(portToListenOn);
this.hostToRedirectTo = hostToRedirectTo;
proxy.HttpRequestReceived += proxy_HttpRequestReceived;
}

void proxy_HttpRequestReceived(object sender, HttpRequestEventArgs e)
{
e.Request.Host = this.hostToRedirectTo;
e.Response = e.Request.GetResponse(true);
e.Response.Body.Position = 0;
}
}


Comme vous pouvez le voir, la solution est très simple, et ne nécessite qu’une dizaine de lignes de code !!!

vendredi 6 février 2009

Bonjour MEF

Bonjour à tous,

Vous connaissez MEF (Managed Extensibility Framework) ? C'est un framework permettant une meilleure réutilisation d'application et de composants. En utilisant MEF, les applications .NET peuvent être compilées statiquement et composée dynamiquement. Je vous laisser allez vois le site sur codeplex pour plus d'informations.

MEF est basé sur un principe de catalogue, il y a un DirectoryCatalog, un AssemblyCatalog, ... Eh bien, je suis fier de vous présenter un BonjourCatalog.
Pour cela, toujours la même adresse : http://www.codeplex.com/zeroconf. A quoi ça sert ? eh bien tout simplement à détecter les services bonjour en utilisant MEF.

Je n'ai pas encore fais de release concernant ce BonjourCatalog, mais ca ne saurait tarder.

vendredi 2 janvier 2009

Implémentation DNS et Bonjour en .NET

Bonjour à tous,

J'ai récemment publié sur codeplex une implémentation partielle du protocole DNS en objet, ainsi qu'une implémentation du protocole Bonjour d'Apple. Vous allez certainement me dire pourquoi implémenter le protocole DNS alors que la classe Dns existe en .NET. Premièrement parce que la classe Dns se base sur des API Win32 chose que je ne voulais pas. Deuxièmement, parce que cette implémentation DNS est compatible avec le protocol mDNS (multicast DNS), protocole sur lequel repose Bonjour. Et enfin et surtout, pour le fun !
Je n'en dis pas plus, je vous laisse le découvrir...