Czas trwania
2-3 dni
Abstrakt
Szkolenie ma na celu pokazanie możliwości technik odwracania kontroli.
Zagadnienia
Statyczność czy instancyjność |
Dlaczego statyczność jest problematyczna? |
Czy instancyjność jest wolna? |
Testowanie |
Dobre praktyki |
Dependency Inversion Principle |
Low coupling i high cohension |
Singleton |
Jak zaimplementować poprawnie wzorzec? |
Statyczny konstruktor w .NETcie |
Dlaczego używanie singletonu w większości wypadkach jest antywzorcem? |
Kiedy używać singleton? |
ServiceLocator |
Implementacja wzorca Mediatora, który separuje abstrakcje od implementacji |
Problemy podejścia |
Inversion of Control – IoC |
Dependency Injection |
Jeden ze sposobów odwracania kontroli. Wysokopoziomowe komponenty zależą od abstrakcji. |
Ręczne podejście do DI |
Kiedy kontener DI staje się ServiceLocatorem? |
Jak napisać kod, który nie ma zależności do żadnego kontenera? |
Użycie DI w następujących typach aplikacji |
WinForms |
Wzorzec Navigatora |
WPF |
Asp.Net WebForms |
Asp.Net MVC |
WCF Service |
Przydatne wzorce projektowe |
Fabryka jako obiekt enkapsulujący tworzenie konkretnych implementacji komponentów |
Castle Windsor jako kontener DI |
Automatyczne składanie wzorca dekoratora i chain of responsibility przez kontener |
Kiedy używać rejestracji w kodzie, a kiedy w konfiguracji xml. |
Jak dynamicznie zmieniać zależności? |
Jak wielokrotnie tworzyć subkomponent podczas życie długotrwałego obiektu bez zależności do komponentu? |
TypedFactory |
Castle Facilities |
Architektura SaaS, a kontener DI |
Wielopoziomowe kontenery DI |
Testowanie kodu wspierającego kontener DI |
Zdarzenia |
Wzorzec Observer |
Implementacja .NETowa i jej problemy |
EventBroker/EventAggregator |
Luźny sposób łączenia komponentów |
RPC vs Messaging |
Implementacje |
Działanie w procesie w obrębie transakcji |
Wstęp do szyny danych |
Zastosowania |
Integracja modułów aplikacji – autonomicznych komponentów |
Audyt, logowanie |
Tworzenie projekcji modelu biznesowego na model tylko do odczytu |
Jak stworzyć model w 1NF z modelu w 3NF |
Projektory i Data Transfer Object |
Separacja infrastruktury od Core Biznesowego |
Wysyłanie e-maili, sms, poczty |
Chain of responsibility |
EventSourcing |
Przykład modelu persystencji opartego o strumień zdarzeń |
Interfejs użytkownika |
Komunikacja partów interfejsowych |
Integracja z logiką biznesową |
Długotrwałe procesy biznesowe |
Saga, Workflow |
Procesy składające się z sekwencji wielu zdarzeń |
Testowanie |
Jak wystestować reakcję na zdarzenia? |
Programowanie aspektowe |
Możliwości funkcjonalne i niefunkcjonalne aplikacji |
Cross-cutting concerns |
Programowanie funkcyjne jako rozwiązanie połowiczne |
Delegaty i Lambdy w .NETcie |
Postsharp jako biblioteka wspierająca AOP w .NETcie |
Tryb działania i wstrzykiwania aspektów |
Rodzaje aspektów |
Przykładowe aspekty |
CacheAspect |
OnThreadPoolAspect |
ImplementNotifyPropertyChangedAspect |
TraceAspect i DebugAspect |
ProfileAspect |
HandleExceptionsAspect |
Aspekty w Castle |
Interceptory |
Wybieranie metod do przechwycenia |