2009-05-15 18 views

Odpowiedz

3

Te plusy i minusy są oparte na mojej pracy ze sprężyną. Może się nieznacznie różnić w przypadku innych pojemników.

XML

pro

  • elastyczny
  • mocniejszy niż adnotacje w niektórych obszarach
  • bardzo wyraźny modelowanie zależności od swoich klas

con

  • verbose
  • trudności z refactoring
  • przełączania między kilkoma plikami

Adnotacje

pro

  • mniej plik przełączania
  • automatycznej konfiguracji dla prostych instalacji elektrycznych
  • mniej gadatliwy niż xml

con

  • więcej wdrażania dane specyficzne w kodzie (zazwyczaj można zastąpić ten z configs XML)
  • xml jest almopst (?) Zawsze potrzebne, przynajmniej aby skonfigurować opartą na annonacji konfigurację, magia adnotacji może prowadzić do nieporozumień podczas wyszukiwania klasy, która jest używana jako zależność:

Kod

pro

  • mogą skorzystać z silnie typowanych języków (np C#, Java)
  • Niektóre kompilacji sprawdzanie (nie można sprawdzić statycznie zależności, chociaż)
  • mogą skorzystać z DSL (np Binsor, Zaawansowany interfejs)
  • mniej gadatliwe niż XML (np ty nie trzeba zawsze podawać cały zespół kwalifikowanej nazwy (.NET podczas rozmowy))

con

  • okablowanie poprzez kod może prowadzić do skomplikowanych instalacji elektrycznych
  • trudnych zależności od kontenera IOC w bazie kodu

Używam mieszanki XML + adnotacji. Niektóre rzeczy, szczególnie dotyczące dostępu do bazy danych, są zawsze konfigurowane przez xml, podczas gdy rzeczy takie jak kontrolery lub usługi są w większości konfigurowane za pomocą adnotacji w kodzie.

[Edycja: zapożyczyli kodu Mauschs pros]

+0

wydaje się, że brakuje rejestracji kodu i brakuje mi rejestracji adnotacji. –

0

Zakładam, że przez "rejestrowanie zależności w kodzie" rozumiesz "użyj nowego".

"Nowy" to niezwykle potężny schemat zastrzyków zależności. Pozwala na "wstrzykiwanie" swoich "zależności" w momencie tworzenia obiektu - czyli nie zapomnianych parametrów lub na wpół skonstruowanych obiektów.

Innym ważnym potencjalna korzyść jest to, że podczas korzystania z narzędzi Refaktoryzacja (powiedzmy w Resharper lub IntelliJ), rozmowy do nowej zmiany zbyt

W przeciwnym razie można korzystać z niektórych XML nonsens i byłaby z XSL.

+0

tak - cokolwiek! miłośnicy wiosny. – time4tea

+0

Przed udzieleniem odpowiedzi poinformuj się. Większość kontenerów oferuje alternatywne sposoby konfiguracji inne niż xml. Płynne interfejsy API mogą odkupić wygodę refaktoryzacji. Dodatkowo, kontenery to coś więcej niż tylko convencience: http://ayende.com/Blog/archive/2007/10/20/Dependency-Injection-doesnt-cut-it-anymore.aspx –

+0

Uważam się za dość dobrze poinformowanego ten szczególny temat, dzięki za radę! Przeczytałem połączony artykuł i nadal nie widzę zainteresowania "ramowego". Szczerze mówiąc - wszystko w tym artykule brzmi dla mnie jak biedota. Jednak każdy na własną rękę. Możesz prowadzić konia ... – time4tea

2

XML plusy:

  • można zmienić okablowanie i parametrów bez rekompilacji. Czasami jest miło mieć przy zmianie środowiska (np można przełączyć fałszywego nadawcę e-mail używany w dev do rzeczywistego nadawcy e-mail w produkcji)

Plusy Kod:

  • mogą skorzystać z języki mocno napisane na klawiaturze (np. C#, Java)
  • Niektóre sprawdzanie podczas kompilacji (nie może sprawdzić statycznie zależności).
  • Refaktorowanie za pomocą standardowych narzędzi do refaktoryzacji.
  • mogą skorzystać z DSL (np Binsor, Fluent interfejsów)
  • mniej gadatliwe niż XML (np nie trzeba zawsze podawać cały zespół kwalifikowanej nazwy (podczas rozmowy .net))
1

zgadzam. Znalazłem pojemniki ioc, które dają mi bardzo niewiele, jednak bardzo łatwo mogą utrudniać coś. Potrafię rozwiązać większość problemów, z jakimi mam do czynienia po prostu używając mojego wybranego języka programowania, który okazał się łatwiejszy w utrzymaniu i łatwiejszy w nawigacji.

+0

czy to naprawdę odpowiada na pytanie? – hoaz

Powiązane problemy