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.
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.
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ą :)
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
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.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