199 votes

Ce qui est le château de Windsor, et pourquoi devrais-je m’y intéresser ?

Je suis un développeur Windows depuis longtemps, ayant coupé mes dents sur win32 et début COM. J’ai travaillé avec .net depuis 2001, donc je suis assez couramment en c# et le Common Language Runtime. Je n’avais jamais entendu parler du château de Windsor jusqu'à ce que j’ai commencé à participer à débordement de pile. J’ai lu le guide de « Getting Started » Castle Windsor, mais il n’est pas en cliquant sur.

Apprendre à ce vieux singe et me dire pourquoi je devrais être intégrer Castle Windsor dans mes applications d’entreprise.

378voto

Matt Hinze Points 9686

Le château de Windsor est une inversion de contrôle de l'outil. Il existe d'autres comme elle.

Il peut vous donner des objets avec des pré-intégré et pré-câblé dépendances droit. L'ensemble d'un objet graphique créé via la réflexion et de configuration plutôt que l'opérateur "new".

Commencez ici: http://tech.groups.yahoo.com/group/altdotnet/message/10434


Imaginez que vous avez un e-mail de l'envoi de la classe. EmailSender. Imaginez que vous avez une autre classe WorkflowStepper. À l'intérieur de WorkflowStepper vous devez utiliser EmailSender.

Vous pouvez toujours dire new EmailSender().Send(emailMessage);

mais que - l'utilisation de l' new - crée un COUPLAGE étroit qui est difficile à changer. (c'est un tout petit exemple artificiel après tout)

Donc, si, au lieu de newing ce mauvais garçon jusqu'à l'intérieur de WorkflowStepper, vous venez de passer dans le constructeur?

Alors celui qui a appelé il y avait à nouveau le EmailSender.

new WorkflowStepper(emailSender).Step()

Imaginez que vous avez des centaines de ces petites classes qui ont qu'une seule responsabilité (google SRP).. et que vous utilisez un peu dans WorkflowStepper:

new WorkflowStepper(emailSender, alertRegistry, databaseConnection).Step()

Imaginez ne pas se soucier des détails d' EmailSender lorsque vous écrivez WorkflowStepper ou AlertRegistry

Vous venez de vous soucier de l'inquiétude que vous travaillez avec.

Imaginez tout ce graphique (arbre) des objets et des dépendances obtient filaire au MOMENT de l'EXÉCUTION, de sorte que quand vous faites cela:

WorkflowStepper stepper = Container.Get<WorkflowStepper>();

vous obtenez une vraie affaire, WorkflowStepper avec toutes les dépendances automatiquement remplir lorsque vous en avez besoin.

Il n'y a pas d' new

Il vient de se passe - parce qu'il sait ce qui doit ce qui.

Et vous pouvez écrire le moins de défauts avec des mieux conçus, SEC code dans un vérifiables et reproductibles.

16voto

Contango Points 7976

Si vous êtes un débutant complet avec le CIO, alors ne commencez pas par le Château de Windsor, la documentation laisse quelque peu à désirer, et de sa lente (il utilise la Réflexion).

Je le recommande NInject, parce que:

  1. La documentation est de loin supérieure.
  2. Il utilise l' expression de compilation/LCG, de sorte que son plus rapide (8x à 50x) que le Château de Windsor, qui utilise la Réflexion.

Pour commencer, cliquez sur "Visiter le Dojo", puis suivre à travers la série de NInject tutoriels sur GitHub.

0voto

Joe Skora Points 6535

Windsor Castle semble être un ensemble de technologies similaires au printemps pour Java, une contenant de l’inversion de contrôle (IOC), <strike>un framework MVC, une couche de persistance et divers autres goodies</strike>.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X