Bdt est désormais compilable et utilisable avec le framework open source du
Projet Mono, ce qui lui permet notamment de pouvoir tourner sous linux.
Quelques modifications ont été apportées pour permettre une utilisation sous .NET et Mono.
- L'implémentation du générateur pseudo aléatoire est différente suivant les plateformes, or une petite routine de cryptage utilisait justement ce générateur.
Ceci implique que cette version n'est plus compatible avec les précédentes au niveau du protocole de communication.
- Dans les deux implémentations, Il n'est pas possible de forcer un proxy particulier pour l'objet HttpClientChannel (remoting), je le fais donc par introspection (c'est mal). Dans les deux implémentations, le nom du membre privé associé diffère d'un underscore.
- Dans l'implémentation de Mono, il est impossible de passer "null" pour le paramètre 'properties' lors de la création d'un objet HttpChannel (remoting). Avec .NET ça marche.
- Lorsque l'on utilise un Generic.Dictionary pour passer ces paramètres, si tous ne sont pas renseignés, on reçoit une exception dans l'implémentation Mono. Avec .NET, des vérifications sont effectuées (.Contains)
- L'objet SortedDictionnary (Generic) n'est pas implémenté dans Mono
- Les accents posent problème. En changeant l'encodage du fichier de utf-8 vers unicode, pas mal d'entre eux sont résolus, mais pas tous. J'ai donc enlevé tous les accents.
- L'implémentation mono ne supporte pas la gestion NTLM, et la récupération des informations de connexion via Internet Explorer (ce qui paraît bien compréhensible), pour les utilisateurs d'un proxy ISA Server, ou ceux derrière un domaine, l'implémentation .NET (côté client) est à privilégier.
A noter que le code source est strictement identique pour les différents binaires, et ce sans le moindre 'define'. Des Makefile sont disponibles pour les deux plateformes pour tout compiler en ligne de commande.
Les binaires Mono et .NET sont compatibles:
Un client Mono peut se connecter à un serveur .NET et inversement.
Un binaire Mono peut s'exécuter sous le framework .NET ou Mono.
Un binaire .NET peut s'exécuter sous le framework .NET ou Mono (sauf le client pour l'instant, car l'opérateur d'égalité sur l'objet Uri ne semble pas encore implémenté dans Mono)
Les plateformes utilisées:
Microsoft .NET v2.0.50727
Mono v1.1.13.6
Les binaires:
bdt.bin.1.1.mono.zip
bdt.bin.1.1.dotnet.zip
Les sources:
bdt.src.1.1.zip
Commentaires