Question Qu'est-ce que Castle Windsor et pourquoi devrais-je m'en soucier?


Je suis un développeur Windows de longue date, ayant fait mes premières armes sur win32 et sur COM. Je travaille avec .Net depuis 2001, donc je parle assez bien le C # et le CLR. Je n'avais jamais entendu parler de Castle Windsor avant que je commence à participer à Stack Overflow. J'ai lu le guide «Getting Started» de Castle Windsor, mais il ne clique pas.

Apprenez à ce vieux chien de nouvelles astuces et dites-moi pourquoi je devrais intégrer Castle Windsor dans mes applications d'entreprise.


169
2017-09-24 01:23


origine


Réponses:


Castle Windsor est une inversion de l'outil de contrôle. Il y en a d'autres comme ça.

Il peut vous donner des objets avec des dépendances pré-construites et pré-câblées. Un graphique d'objet complet créé via la réflexion et la configuration plutôt que le "nouvel" opérateur.

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


Imaginez que vous avez un cours d'envoi de courrier électronique. EmailSender. Imaginez que vous ayez une autre classe WorkflowStepper. Dans WorkflowStepper, vous devez utiliser EmailSender.

Tu pourrais toujours dire new EmailSender().Send(emailMessage);

mais que - l'utilisation de new - crée un COUPLAGE SERRÉ difficile à changer. (après tout, c'est un minuscule exemple)

Alors, si, au lieu de créer ce mauvais garçon dans WorkflowStepper, vous l'avez transmis au constructeur?

Alors, celui qui l'a appelé a dû se refaire une place chez EmailSender.

new WorkflowStepper(emailSender).Step()

Imaginez que vous ayez des centaines de ces petites classes qui n'ont qu'une seule responsabilité (google SRP) ... et que vous en utilisez quelques-unes dans WorkflowStepper:

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

Imaginez ne pas vous soucier des détails de EmailSender quand tu écris WorkflowStepper ou AlertRegistry

Vous vous inquiétez simplement de la préoccupation avec laquelle vous travaillez.

Imaginez que tout ce graphe (arbre) d'objets et de dépendances se connecte à RUN TIME, de sorte que lorsque vous faites ceci:

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

vous obtenez une vraie affaire WorkflowStepper avec toutes les dépendances automatiquement remplies là où vous en avez besoin.

Il n'y a pas new

C'est juste arrive - Parce qu'il sait ce qui a besoin de quoi.

Et vous pouvez écrire moins de défauts avec un code DRY mieux conçu d'une manière testable et répétable.


322
2017-09-24 01:31



Mark Seemann a écrit et un excellent livre sur l'injection de dépendance qui est un sous-ensemble de la COI. Il compare également un certain nombre de conteneurs. Je ne peux pas recommander ce livre assez. Le nom du livre est: "Injection de dépendance dans .Net" https://www.manning.com/books/dependency-injection-in-dot-net


3
2017-08-11 13:00



Je pense que IoC est un tremplin dans la bonne direction sur la voie d'une plus grande productivité et de la satisfaction de l'équipe de développement (y compris PM, BA et BOs). Cela permet d'établir une séparation des préoccupations entre les développeurs et pour les tests. Il donne la tranquillité d'esprit lors de l'architecture, ce qui permet une certaine flexibilité, car les cadres peuvent entrer et sortir.

La meilleure façon d’atteindre l’objectif que l’IoC (CW ou Ninject, etc.) prend en compte est d’éliminer la politique n ° 1 et n ° 2, de supprimer la nécessité pour les développeurs de mettre en place une fausse compréhension lors du développement. Ces deux solutions ne semblent-elles pas liées à l'IoC? Elles sont :)


2
2018-02-18 18:46



Castle Windsor est Dependency Injection container. Cela signifie qu'avec l'aide de ceci vous pouvez injecter vos dépendances et les utiliser sans les créer avec l'aide du nouveau mot-clé. par exemple. Considérer que vous avez écrit un référentiel ou un service et que vous souhaitez l'utiliser à plusieurs endroits, vous devez d'abord enregistrer votre service / référentiel et vous pouvez commencer à l'utiliser après l'avoir injecté à l'endroit requis. Vous pouvez regarder le tutoriel ci-dessous que j'ai suivi pour apprendre le château de Windsor.

lien.

J'espère que cela vous aidera.


1
2018-03-07 18:07