Witam, piszę aplikację z użyciem ASP.NET MVC. Jest to prosta aplikacja, aby poćwiczyć składająca się z kilku tabel dlatego zastanawiam się czy w takich prostych aplikacjach powinno używać się np DI ? Jakie są Wasze opinie ?
- Rejestracja:ponad 10 lat
- Ostatnio:5 miesięcy
- Lokalizacja:Warszawa
- Postów:3573
@Andrew00: nie jestem pewien czy dobrze rozumiem Ciebie, ale wydaje mi się że mogłes pomylić kontener IoC z DI. Kontener to tylko jedna z form stosowania wstrzykiwania zależności. Ja DI stosuje praktycznie zawsze, korzystając z konstruktorów, przy czym te konstruktory mogą być wywołane przez kontener Springowy (pisze w Javie).

- Rejestracja:prawie 9 lat
- Ostatnio:ponad 2 lata
- Lokalizacja:UK
- Postów:2235
Tak, używaj DI. Skoro piszesz mała aplikacje do nauki, to dla czego nie uczyć się też dobrych praktyk?

- Rejestracja:prawie 9 lat
- Ostatnio:ponad 2 lata
- Lokalizacja:UK
- Postów:2235
Tylko i wyłącznie MVC. Jeśli natomiast nie ma innego wymogu, to ucz się ASP Core.

- Rejestracja:prawie 20 lat
- Ostatnio:około 7 godzin
kzkzg napisał(a):
Może mi ktoś wyjaśnić jakie korzyści są z DI, oprócz tego ze możemy ustawić która implementacja ma być wstrzykiwana?
- Wstrzykiwania i tak każdy używa, tylko nie każdy to wie, bo niektórzy myślą, że DI wymaga magii. Tymczasem w kodzie
new BufferedInputStream(new FileInputStream(someFile))
wstrzyknęliśmy obiekty typu FileInputStream do obiektu typu BufferedInputStream. - Wstrzykiwanie we własnych klasach przydaje się do testowania. Np klasa FolderSynchronizer może mieć wstrzyknięte dwa parametry: sourceFolder i targetFolder. Potem odpalamy jakąś metodę, np synchronize i ta metoda synchronizuje te foldery. Jeśli nie testujemy to możemy na sztywno używać np wartości z globalnej konfiguracji i styknie. Natomiast w testach chcielibyśmy uniknąć zabawy z modyfikowaniem globalnego stanu.
- Nawet jeśli nie obchodzi nas testowanie to wstrzykiwanie umożliwia też tworzenie wielu instancji obiektu, które robią trochę co innego. Chcemy mieć dwie instancje klasy FolderSynchronizer? Podajmy (czyli wstrzyknijmy) zależności (tutaj: konfigurację, czyli namiary na foldery) jako parametry i gotowe.
- I tak dalej...
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 2 lata
- Postów:29
Zacząłem testować użycie Ninject w C# i nasunęło mi się takie pytanie.
Gdy mam jakąś prostą aplikację w ASP.NET z użyciem MVC np. rezerwację książki z biblioteki ( lub coś równie prostego) to metody typu dodaj do bazy, usuń, modyfikuj itp. powinno się do nich używać interfejsów i później cały mechanizm wstrzykiwania zależności czy może jest to użycie zbyt dużego kalibru ?
Drugie pytanie: z Waszego doświadczenia jakie interfejsy stworzylibyście w takie aplikacji z rezerwacją. ( chcę to dobrze zrozumieć i ciekawi mnie jak podeszlibyście do tego typu zagadnienia ) ?

- Rejestracja:prawie 9 lat
- Ostatnio:ponad 2 lata
- Lokalizacja:UK
- Postów:2235
Zacząłem testować użycie Ninject w C# i nasunęło mi się takie pytanie.
Raz jeszcze zachecam do nauki ASP.Net Core. Masz tam wbudowany mechanizm DI ktory- moim zdaniem- jest wlasnie bardzo dobry do nauki bez instalowania zewnetrznych paczek DI.
Gdy mam jakąś prostą aplikację w ASP.NET z użyciem MVC np. rezerwację książki z biblioteki ( lub coś równie prostego) to metody typu dodaj do bazy, usuń, modyfikuj itp. powinno się do nich używać interfejsów i później cały mechanizm wstrzykiwania zależności czy może jest to użycie zbyt dużego kalibru ?
To zalezy co probujesz osiagnac. Uczyc sie? Uzywaj DI. Pisac kod poprawnie i tak aby mozna bylo go latwo rozszerzac i testowac? Uzywaj DI. Napisac cos szybko "na kolanie" w ramach szybkiego przetestowania? Zapewne mozna to olac.
Drugie pytanie: z Waszego doświadczenia jakie interfejsy stworzylibyście w takie aplikacji z rezerwacją. ( chcę to dobrze zrozumieć i ciekawi mnie jak podeszlibyście do tego typu zagadnienia )?
"Taka aplikacja z rezerwacja" moze oznaczac bardzo wiele, wszystko zalezy od wymagan. Nie tworz abstrakcji na sile, tworz ja tam gdzie widzisz potrzebe (czyli np. jesli w kontrolerze chcesz wywolac jakis serwis biznesowy zaczynajac od "new" to jest to oznaka ze nalezy wprowadzic abstrakcje i DI). Jesli jeszcze tego nie zrobiles, to zacznij pisac testy swojego kodu. Sam zobaczysz gdzie DI moze bardzo to ulatwic.
Aryman1983(pisze w Javie)
hehe to ktoś we wszechświecie jeszcze tego nie wie? ;-)scibi92Aryman1983