Monthly Archives: Lipiec 2016

Jak dodać kontener Autofac do aplikacji ASP.NET MVC?

IoC piękna rzecz, spójrzmy jak dodać kontener IoC Autofac do aplikacji ASP.NET MVC.

W tym celu pobieramy NuGetem paczki Autofac i Autofac.Mvc5. Ponieważ jest to projekt MVC5, konieczna jest instalacja Autofac.Mvc5, dzięki temu będziemy mogli ustawić DependencyResolver na ten z Autofaca.

autofacMvc

Następnie musimy skonfigorować nasz kontener. Przechodzimy do klasy Global.asax.cs gdzie dodajemy metodę ConfigureContainer.

A jej wywołanie dodajemy do metody Application_Start()

W metodzie ConfigureContainer rejestrujemy kontrolery oraz moduły z bieżącego projektu.

Kontrolery mamy, ale nie mamy modułów. W modułach chcielibyśmy zarejestrować wszystkie typy z danego projektu. Dla przykładu załóżmy, że mamy projekt MVC i dwa pozostałe projekty, z czego jeden z nich zawiera serwisy, a drugi repozytoria. Stworzymy więc dwa moduły. Dodamy je do projektu MVC.

Każdy moduł musi dziedziczyć z klasy Module z biblioteki Autofac. W klasie modułu przeciążamy metodę Load, aby zarejestrować odpowiednie typy.

Moduł pierwszy dotyczy serwisów, chcemy zarejestrować w nim wszystkie typy z assembly Services.

Dodajemy pusty interfejs IDetermineServicesAssembly do projektu z serwisami, służy on tylko po to aby określić z którego assembly rejestrować typy.

Kolejny moduł dotyczy repozytoriów. Analogicznie tworzymy nową klasę.

Przykład poniżej różni się od metody Load w module serwisów, ponieważ dodatkowo zarejestrowany jest typ UnitOfWork z inicjalizacją jego właściwości. Jest to przykład na to, że nic nie stoi na przeszkodzie zdefiniowania własnych customowych rejestracji.

Dodajemy pusty interfejs IDetermineRepoAssembly do projektu z repozytoriami i to wszystko. Uruchamiamy aplikacje i wszystko automagicznie działa 🙂 Autofac znajdzie wszystkie typy z danego assembly i odpowiadające im interfejsy (ponieważ zdefiniowaliśmy to w rejestracji typów).

Jak żyć z dev pasją?

W życiu każdego programisty przychodzi taki czas, że zaczyna się dużo zastanawiać co dalej zrobić ze swoim życiem, karierą. Jednym przychodzi to szybciej, innym później, ale jedno jest pewne – to jest nieuniknione (zachęcam również do przeczytania wpisu Macieja Aniserowicza). W końcu nadszedł czas i na mnie, aby poważnie zastanowić się i wybrać właściwy kierunek dalszej kariery. W ciągu tego czasu miałem okazje pracować w 2 firmach, z czego w jednej z nich dzięki, kilkumiesięcznej delegacji poznałem przy okazji inną firmę i jeszcze inną (tak, zostałem „tymczasowo wypożyczony” dla innej firmy :P)… i wiecie co? Prawie wszędzie to wygląda tak samo, na początku jest masa nowości (albo tylko trochę), człowiek się uczy nowych rzeczy albo i nie, często są problemy z komunikacją i nie ma znaczenia czy zespół pracuje zdalnie czy lokalnie! Problemem jest także definiowanie wymagań, definition of done, a potem ciągłe zmiany, zmiany, zmiany – tak tutaj pomocny może okazać się Scrum. Co potem? Potem nie ma nic, powtarzamy rozwiązania popełnione w przeszłości, dostrzegamy coraz to nowsze technologie które chcielibyśmy poznać i wykorzystać, frustrujemy się, bo nie możemy tego zrobić w pracy. Wszystko poza pracą staje się bardziej ciekawsze. Gorzej może być tylko wtedy jeśli trafimy do projektu, gdzie 90% prac będzie stanowiło utrzymanie istniejącego kolosa na glinianych nogach…
Oczywiście wszystko to zależy od projektu/firmy w jakiej się pracuje.
Tak to prawda, mała firma =  mała kasa, korpo = duża kasa. Dlaczego tak jest? 🙂 Między innymi dlatego, że w korpo większość prac to utrzymanie istniejących systemów. Kto by się skusił na taką pracę, gdyby wiedział o tym już na rozmowie rekrutacyjnej? Ja mogę tylko przytoczyć cytat: „Nie ruszaj gówna, nie będzie śmierdziało”. Właśnie dlatego czynnikiem przyciągającym musi być kasa, czasami nawet dwukrotnie większa 😉 Oczywiście praca w korpo jest czasem też bardziej na luzie, nie ma spiny (no chyba, że jest bliski deadline) i nikt nie stoi nad Tobą z batem. W pracy w małej firmie, kiedy pracuje się na rzecz innego klienta, a nie rozwija własny produkt, to nieustanny deadline

„Już skończyłeś swoje zadanie? No to Ci dołożymy, bo przecież masz jeszcze 4h capacity więc zadanie wycenione na 8h przecież zdążysz jeszcze zrobić!”.

Dlatego lepsze jest korpo, bo jest spokój. Gorzej kiedy nie ma kompletnie co robić 😀 A co robi programista jak się nudzi? Tak, zmienia pracę 😉 Devom nie dogodzisz! Fuck! Co jest z nami nie tak?
Jesteśmy twórcami, każdy projekt to takie dzieło sztuki. Właśnie to powoduje, że pracując dla kogoś można dojść do wniosku, że tak naprawdę lepiej pracować dla siebie. Stworzyć swój produkt, utrzymywać, a potem robić to na co ma się ochotę w tym programistycznym świecie. Bo przecież tyle ciekawego się dzieje. O programistok – musze tam jechać i byłem (dzięki eC za sponsoring!). O Wroc# – czemu nie!? To wszystko pochłania czas i pieniądze i to nie byle jakie (urlop, hotel, przejazd). Jak żyć? Trzeba jakoś to balansować niestety…

life...

Dev life deadlock