XXP

mai 2016

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:
https://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

L'utilisation des commentaires est désactivée pour cette note.