XXP

octobre 2011

lun. mar. mer. jeu. ven. sam. dim.
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

« Sortie de Unity 1.0, le container IoC de Microsoft | Accueil | Sortie de Unity 1.0, le container IoC de Microsoft »

07 avril 2008

Sortie de Unity 1.0, le container IoC de Microsoft

La version 1.0 de Unity est disponible sur Codeplex depuis vendredi. Au menu, un projet au code source ouvert aux regards qui permet de construire ses objets par injection des dépendances. Au final, quelque chose d'assez proche de Castle Windsor dans les grandes lignes, mieux documenté que les autres projets du groupe Pattern & Practices de Microsoft.

Les dépendances y sont spécifiées soit par attributs (ce qui entraine une dépendance souvent indésirable entre les classes et le container Unity) soit par fichier de configuration soit encore de façon dynamique dans le code.

Pour fixer les idées, voilà un fichier de config minimal :

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <configSections>

    <section name="unity"

            type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,

                  Microsoft.Practices.Unity.Configuration" />

  </configSections>

  <unity>

    <containers>

      <container>

        <types>

          <type type="UnitySamples.ILogger,UnitySamples"

                mapTo="UnitySamples.ConsoleLogger,UnitySamples"

                lifetime="Singleton"/>

        </types>

      </container>

    </containers>

  </unity>

</configuration>

Et un exemple d'injection plus complexe via le constructeur, un setter et une méthode :

<type type="IMyService" mapTo="MyDataService" name="DataService">

  <typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement,

                             Microsoft.Practices.Unity.Configuration">

    <constructor>

      <param name="connectionString" parameterType="string">

        <value value="AdventureWorks"/>

      </param>

      <param name="logger" parameterType="ILogger">

        <dependency />

      </param>

    </constructor>

    <property name="Logger" propertyType="ILogger" />

    <method name="Initialize">

      <param name="connectionString" parameterType="string">

        <value value="contoso"/>

      </param>

      <param name="dataService" parameterType="IMyService">

        <dependency />

      </param>

    </method>

  </typeConfig>

</type>

Certains douteront surement de l'intérêt de sortir un nième container IoC quelques années après les pionniers Spring.Net et Castle (et d'autres... Cf. liens ci-dessous), d'autres argueront qu'à qualités égales, mieux vaut choisir la solution supportée par une grosse structure.

Mais pour juger de la différence de qualité et de fonctionnalité il faut mettre en oeuvre et comparer. Un bon article de Matthew Podwysocki (membre de ALT.NET) amorce la comparaison : http://weblogs.asp.net/podwysocki/archive/2008/02/26/ioc-and-the-unity-application-block-once-again.aspx

Liens :

TrackBack

URL TrackBack de cette note:
http://www.typepad.com/services/trackback/6a00d8341c871f53ef00e551a95db18833

Listed below are links to weblogs that reference Sortie de Unity 1.0, le container IoC de Microsoft:

Commentaires

Vérifiez votre commentaire

Aperçu de votre commentaire

Ceci est un essai. Votre commentaire n'a pas encore été déposé.

En cours...
Your comment could not be posted. Error type:
Votre commentaire a été enregistré. Poster un autre commentaire

Le code de confirmation que vous avez saisi ne correspond pas. Merci de recommencer.

Pour poster votre commentaire l'étape finale consiste à saisir exactement les lettres et chiffres que vous voyez sur l'image ci-dessous. Ceci permet de lutter contre les spams automatisés.

Difficile à lire? Voir un autre code.

En cours...

Poster un commentaire