Co To jest Castle Windsor i dlaczego miałoby mnie to obchodzić?

Jestem wieloletnim programistą Windows, obcinam sobie zęby na win32 i wczesnym COM. Pracuję z. Net od 2001 roku, więc jestem dość biegły w C# i CLR. Nigdy nie słyszałem o Castle Windsor dopóki nie zacząłem uczestniczyć w Stack Overflow. Przeczytałem poradnik Castle Windsor "Getting Started", ale nie klikam.

Naucz tego starego psa nowych sztuczek i powiedz mi, dlaczego powinienem integrować Castle Windsor z moimi aplikacjami korporacyjnymi.

Author: Matt Hinze, 2008-09-24

4 answers

Zamek Windsor jest inwersją narzędzia sterującego. Są inni.

Może dać ci obiekty z wbudowanymi i wstępnie podłączonymi zależnościami. cały wykres obiektu tworzony przez odbicie i konfigurację, a nie operator "nowy".

Zacznij tutaj: http://tech.groups.yahoo.com/group/altdotnet/message/10434


Wyobraź sobie, że masz klasę wysyłającą e-mail. EmailSender. Wyobraź sobie, że masz inną klasę WorkflowStepper. Wewnątrz WorkflowStepper musisz użyć EmailSender.

You could always say new EmailSender().Send(emailMessage);

Ale to-użycie new - tworzy ciasne sprzężenie, które jest trudne do zmiany. (w końcu jest to mały wymyślony przykład)

Co z tego, że zamiast nowego chłopca w WorkflowStepper, po prostu przekazałeś go konstruktorowi?

Więc ktokolwiek dzwonił, musiał zmienić Emailsendera.

new WorkflowStepper(emailSender).Step()

Wyobraź sobie, że masz setki tych małych klas, które mają tylko jedną odpowiedzialność (google SRP).. i używasz kilku z nich w WorkflowStepper:

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

Wyobraź sobie, że nie martwisz się o szczegóły EmailSender kiedy piszesz WorkflowStepper lub AlertRegistry

Po prostu martwisz się o troskę, z którą pracujesz.

Wyobraź sobie, że cały wykres (drzewo) obiektów i zależności jest podłączony w czasie wykonywania, tak, że gdy to zrobisz:

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

You get a real deal WorkflowStepper wszystkie zależności są automatycznie wypełniane tam, gdzie ich potrzebujesz.

Nie ma new

To po prostu zdarza się - ponieważ wie, co czego potrzebuje.

I możesz napisać mniej błędów za pomocą lepiej zaprojektowanego, suchego kodu w testowalny i powtarzalny sposób.

 331
Author: Matt Hinze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-18 17:10:49

Myślę, że IoC jest krokiem w dobrym kierunku na drodze do większej produktywności i zadowolenia zespołu programistów(w tym PM, BA i BOs). Pomaga to ustalić oddzielenie obaw między programistami i testowaniem. Daje spokój podczas projektowania, co pozwala na elastyczność, ponieważ ramy mogą wchodzić i wychodzić.

Najlepszy sposób na osiągnięcie celu, który.) podejmuje próbę wyeliminowania polityki #1 i #2 usunąć potrzebę deweloperzy umieścić na elewacji fałszywego zrozumienia podczas opracowywania. Czy te dwa rozwiązania nie wydają się związane z MKOl? Są :)

 3
Author: Mike Socha III,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-18 18:46:09

Mark Seemann napisał doskonałą książkę o di (Dependency Injection), która jest podzbiorem IOC. Porównuje też szereg kontenerów. Nie mogę polecić tej książki wystarczająco. Nazwa książki to: "Dependency Injection in. Net" https://www.manning.com/books/dependency-injection-in-dot-net

 3
Author: IUnknown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-11 13:00:28

Castle Windsor to Dependency Injection container. oznacza to, że za jego pomocą można wprowadzić zależności i używać ich bez tworzenia za pomocą nowego słowa kluczowego. np. Uznaj, że napisałeś repozytorium lub usługę i chcesz z niego korzystać w wielu miejscach, musisz najpierw zarejestrować swoją usługę / repozytorium i możesz zacząć z niego korzystać po wstrzyknięciu go w Wymagane miejsce. Możesz spojrzeć na poniższy samouczek, który śledziłem, aby nauczyć się castle windsor.

Link .

Mam nadzieję, że ci pomoże.
 1
Author: Rakesh Burbure,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-30 09:48:15