7

Próbuję przedstawić metodologię programowania DI/IoC do naszej grupy na rzecz rozwoju, ale jednym z deweloperem poprosił następujące pytanie:Pomoc coraz DI/IoC w domu

Dlaczego go potrzebujesz? Czy jest jakiś konkretny przykład, który może pokazać mi korzyści wynikające z zastosowania ram DI/IoC, takich jak zamek Windsor?

Dlatego pytam, czy istnieje jakieś studium przypadku lub artykuł, który dowodzi, że DI/IoC może odnieść korzyści w witrynie internetowej .NET na poziomie przedsiębiorstwa?

góry dzięki

Update: Zdaję sobie sprawę z wszystkich korzyści DI/IoC przynosi, ale muszę jeszcze zobaczyć pełny przykład w sieci, która przechodzi przez cały proces tworzenia aplikacji z wykorzystaniem DI/IoC i skorzystaj z niego. Ponownie, każdy artykuł lub linki zostaną docenione.

+3

Byłbym tak ostrożny, jak ten programista, gdybyś próbował wprowadzić metodologię programowania do mojego projektu i nie mógł odpowiedzieć na to pytanie. – JoshJordan

+0

Zgadzam się z Joshem, jeśli brzmi i wygląda jak olej węża, to prawdopodobnie jest ... (chyba że to ja próbuję uczyć TDD dla zespołu, LOL) – dferraro

Odpowiedz

6

Pracuję nad projektem, gdzie widzę co najmniej trzy korzyści Dependency Injection i odwrócenie sterowania:

  1. elastyczność DI i, w mniejszym stopniu, IoC pozwolić, gdyż odnosi się do testów jednostkowych. Możemy zerwać z konkretnym aspektem kodu (lub testowanego systemu) i przetestować ten bit funkcjonalności bez potrzeby przygotowywania tabeli bazy danych lub poddawania się kaprysom sekcji kodu, których w tej chwili nie dotyczy.

  2. Wstrzykiwanie zależności za pośrednictwem IoC jest dość płynną, automatyczną rzeczą, która pozwala ludziom pracować w logice bez konieczności ukończenia podstawowych klas wsparcia. Na przykład, mogę napisać stronę internetową, która pokazuje listę użytkowników bez napisania jakiegokolwiek kodu, aby pobrać te informacje z bazy danych. To może być napisane przez kogoś innego, być może równolegle, więc więcej pracy można zrobić w krótszym czasie.

  3. W jednym z moich bieżących projektów chcę mieć możliwość demonstrowania interfejsu użytkownika i przetwarzania back-end jednemu z interesariuszy. Jest to o wiele łatwiejsze dzięki DI i IoC, ponieważ mogę mieć kolekcję podróbek, które dostarczają dokładnych danych potrzebnych do przeprowadzenia demonstracji. W ten sposób nie zwariowałem poprzedniego dnia, upewniając się, że tabele bazy danych są wypełnione tak, jak tego oczekuję.

DI zachęca luźne sprzężenie pomiędzy konkretnej klasy i jego zależności, natomiast IoC pozwala nam dynamicznie skonfigurować których implementacje tych zależności są wstrzykiwane do klas, które z nich korzystają. Ta ostatnia jest ważna w odniesieniu do # 3, ponieważ moja aplikacja internetowa będzie najczęściej konfigurowana z IoC na podstawie ustawień, które wprowadziłem do pliku web.config. Będę musiał zmienić tylko ten plik, gdy przejdziemy do produkcji i zaczniemy używać niefałszowanych klas.

6

Aby wymienić kilka szczególnych korzyści:

  • Cleaner kod, który niesie istotę swojej logiki biznesowej w niej, a nie grubość infrastrukturalne
  • DI pozwala na tworzenie większej liczby aplikacji modułowych poprzez zapewnienie mechanizmu do oddzielania warstw aplikacji
  • IoC pozwala na eksternalizację okablowania aplikacji/ładowania i zapewnia scentralizowane (rodzaj) zarządzanie zasobami (w pewnym stopniu).Implikacja - masz więcej czasu, aby skoncentrować się na faktycznej logiki funkcjonalność/biznesowej

Niektóre dobre informacji o IoC oraz DI można przeczytać tutaj: http://www.theserverside.com/tt/articles/article.tss?l=IntrotoSpring25

prawda jest o Spring Framework, nadal obowiązują ogólne koncepcje DI .