dotnetomaniak.pl

dotnetomaniak.pl - Najnowsze artykuły o .NET w dziale Architektura - Strona 13

Zasada mówi żeby tworzone przez programistę interfejsy były odpowiedzialne za jak najmniejsza funkcjonalność. Użytkownik chcąc zaimplementować taki interfejs nie powinien pisać metod, których nie potrzebuje. Jeśli znajdują się w nim niepotrzebne metody to wtedy nazywamy go interfejsem “fat” lub “polluted”. Najlepiej rozważyć to na klasycznym przykładzie (z oodesign):interface IWorker { void Work(); void Eat(); } class Worker: IWorker { publicvoid Work() { } publicvoid ...

Tagi:
Dziel się z innymi:
Piotr Zieliński  » Blog Archive   » Zasady S.O.L.I.D – Interface Segregation Principle

Architektura 2376 dni, 2 godziny, 39 minut temu pzielinski 91 rozwiń

Na początek podam czystą definicje z wiki: “Funkcje które używają wskaźników lub referencji do klas bazowych, muszą być w stanie używać również obiektów klas dziedziczących po klasach bazowych, bez dokładnej znajomości tych obiektów.” Początkowo za wiele ta tajemnicza definicja nie mówiła mi. Innymi słowy, klasa dziedzicząca powinna  rozszerzać możliwości klasy bazowej a nie całkowicie zmieniać jej funkcjonalność. Sposób korzystania z klasy potomnej powinien być analogiczny do wywoływania klasy bazowej...

Tagi:
Dziel się z innymi:
Piotr Zieliński  » Blog Archive   » Zasady S.O.L.I.D – zasada podstawienia Liskov

Architektura 2381 dni, 1 godzinę, 21 minut temu pzielinski 95 rozwiń

Zasada O\C mówi, że oprogramowanie powinno być otwarte na rozszerzenia a zamknięte na modyfikacje. Innymi słowy programista powinien być w stanie uzyskać zamierzony efekt poprzez rozszerzenie klasy czy przeładowanie metody a nie zmianę już istniejącego kodu. Zasada jest szczególnie istotna w przypadku kodu produkcyjnego, w którym wszelkie możliwości modyfikacji kodu są ograniczone. Zasada pozwala budować modularne systemy. Użycie ENUM moim zdaniem jest złamaniem Open\Closed principle. Wykorzystując w kod...

Tagi:
Dziel się z innymi:
Piotr Zieliński  » Blog Archive   » Zasady S.O.L.I.D – Open/closed principle

Architektura 2383 dni, 2 godziny, 42 minuty temu pzielinski 92 rozwiń

W Inżynierii oprogramowania SOLID oznacza zestaw podstawowych zasad projektowania oprogramowania. Każda literka w wyrazie jest skrótem do jakieś zasady. ‘S’ oznacza Single Responsibility Principal. Podejrzewam, że większość osób doskonale zna już tą zasadę. Aby jednak zachować pewien porządek na blogu będę tłumaczył nawet te oczywiste reguły:). W skrócie zasada mówi, że każdy obiekt (klasa) powinien być odpowiedzialny za jak najmniejszy fragment logiki. Niedopuszczalne jest aby klasa wykonywała dwie nie...

Tagi:
Dziel się z innymi:
Piotr Zieliński  » Blog Archive   » Zasady S.O.L.I.D – Single Responsibility Principal

Architektura 2386 dni, 11 godzin, 5 minut temu pzielinski 245 rozwiń

Minęło właśnie sześć tygodni od opublikowania notki omawiającej szkic architektury systemu, nad którym właśnie pracuje. Tak, jak zakładaliśmy, wchodzimy właśnie z naszym systemem w fazę testów akceptacyjnych. Wdrożenie produkcyjne zbliża się wielkimi krokami. Przy tej okazji chciałbym Wam opowiedzieć, co zmieniło się w projekcie naszego systemu w ciągu tych pracowitych sześciu tygodni. Architektura Większość definicji architektury odnosi si...

Tagi:
Dziel się z innymi:
Sześć tygodni nietrywialnego modelu « Notki Po Polsku « Simon says… architecture!

Architektura 2386 dni, 12 godzin, 54 minuty temu gordon_shumway 86 rozwiń

Bardzo długo moim ulubionym kontenerem był Unity, mimo faktu, że dużo mądrych ludzi ze społeczności wieszało na nim psy. Dlaczego tak polubiłem Unity? Ponieważ powstawał na moich oczach. Znam go począwszy od wczesnych “zajawek” wypuszczanych przez grupę Patterns & Practices. Wcześniej nieco interesowałem się ich biblioteką ObjectBuilder, więc naturalnie moja uwaga przeszła na Unity. Byłem w stanie przeczytać i zrozumieć kod pierwszej w...

Tagi: Autofac, DI, IoC, Unity
Dziel się z innymi:
Ewolucja przyzwyczajeń DI/IoC « Notki Po Polsku « Simon says… architecture!

Architektura 2392 dni, 19 godzin, 27 minut temu gordon_shumway 179 rozwiń

Kiedyś czytając książkę “More Effective C#” zaciekawiło mnie wyjaśnienie interpretacji wyrażeń lambda przez kompilator. W książce autor przedstawił następujący fragment kodu:publicclass ModFilter { privatereadonlyint modulus; public ModFilter(int mod) { modulus = mod; } public IEnumerable

Tagi:
Dziel się z innymi:
Piotr Zieliński  » Blog Archive   » W jaki sposób interpretowane są wyrażenia lambda?

Architektura 2392 dni, 19 godzin, 27 minut temu pzielinski 98 rozwiń

Autor: No to postaram się opisać coś co się przydaje (jak się umie stosować – to przy wzorcach zawsze trzeba powtarzać). Korzystając z okazji od razu sobie to utrwalę, zgodnie z zasadą ‘ucz się ucząc’, czy jakoś tak Na początek zacznę od wzorca strategii, jest to zdecydowanie jeden z prostszych i upiększających kod wzorców, z jakiś powodów też został wybrany jako pierwszy przez autorów “Head First Design Patterns”. Dodatkowymi atutami przemawiającymi, żeby omówić akurat ten wzorzec, jest fakt, że w bard...

Źródło: www.mieczynski.tk
Dziel się z innymi:
Strategy Pattern

Architektura 2401 dni, 17 godzin, 43 minuty temu macko 175 rozwiń

Zastrzeżenie: może poniższe wypociny to wcale nie Model-View-Presenter a Model-View-Controller, może MVC: Passive View a może MVC: Supervising Controller a może MVP: Ostatnia Krew. Szczerze: I don't give a damn. (no... nie do końca; polecam artykuły Fowlera w sekcji Presentation Patterns jako bardzo ciekawą lekturę, ale zbytnie rozwodzenie się nad włożeniem danej implementacji do prawidłowej szufladki uważam za lekki przerost formy nad treścią) Niniejszy post zakłada, że Czytelnik jest zaznajomiony ...

Model-View-Presenter z Autofac w aplikacji desktopowej

Architektura 2405 dni, 18 godzin, 43 minuty temu macko 107 rozwiń

Jednym z wcześniejszych postów przedstawiłem aplikację nDepend obliczającą przeróżne metryki kodu. Większość metryk obliczanych przez program jest oczywista (liczba linii kodu, procent komentarzy, liczba klas itp). Na solidny komentarz zasługuje jednak złożoność cyklomatyczna (w skrócie CC). Aby obliczyć CC, należy najpierw należy narysować graf przepływu informacji dla badanego kodu. Złożoność można obliczać zarówno dla konkretnej metody jak i całego systemu. Rozpatrzmy następujący fragment kodu: priv...

Tagi:
Dziel się z innymi:
Piotr Zieliński  » Złożoność cyklomatyczna

Architektura 2408 dni, 1 godzinę, 24 minuty temu pzielinski 71 rozwiń

Poprawność kodu powinna być sprawdzana na każdym etapie produkcji oprogramowania. Do dyspozycji są wszelkie typy testów (jednostkowe, integracyjne obciążenia itp.). Wszystkie wymienione testy sprawdzają jednak czy kod wykonuje swoje zadanie w oczekiwany sposób. Nie sprawdzają jakości napisanego kodu. Testy nie wykażą, że dany kod jest napisany w sposób mało elegancki. Jednym z najskuteczniejszych rozwiązań jest tzw. code review (recenzjonowanie kodu). Polega to na tym, że dany fragment kodu jest przegląd...

Tagi:
Dziel się z innymi:
Piotr Zieliński  » Walidacja kodu źródłowego, nDepend

Architektura 2408 dni, 11 godzin, 38 minut temu pzielinski 109 rozwiń

Klasycznym sposobem mapowania DTO na obiekt biznesowy jest użycie wzorca projektowego adapter. Przykładowo aby zmapować Order do OrderDto możemy napisać następującą klasę:class OrderDtoAdapter { private Order mOrder =null; public OrderDtoAdapter(Order order) { mOrder = order; } publicvoid Initialize(Order orderDto) { orderDto.CreationDate = mOrder.CreationDate; orderDto.Client = mOrder.Client; orderDto.Id = m_Order.Id; } } Rozwiązanie całko...

Tagi:
Dziel się z innymi:
Piotr Zieliński  » Mapowania między DTO a obiektami biznesowymi

Architektura 2421 dni, 1 godzinę, 46 minut temu pzielinski 81 rozwiń

Z tym typem mapowania miałem najwięcej bolączki - jest on naprawdę najgorszym z jakim przyszło mi pracować i głównie zastosowałem go tylko raz by sprawdzić czy się opłaca. Post ten więc raczej jest ku przestrodze a nie opisem sposobu mapowania obiektów.

Źródło: blog.gutek.pl
Dziel się z innymi:
.neting in the free world | Mapowanie SPListItem na obiekt - AutoMapper

Architektura 2421 dni, 19 godzin, 24 minuty temu gordon_shumway 33 rozwiń

Zwykle aplikacja potrzebuje spójnego UI - czyli kontrolek wyglądających i zachowujących się wg. ustalonego schematu. W programowaniu web mamy style css, asp.net ma mechanizm Control Adapters, WPF z tego co wiem także pozwala dość mocno ustandaryzować ten aspekt. W Windows Forms komercyjne pakiety kontrolek, jak np. Telerik, udostępniają możliwość swego rodzaju stylowania wyglądu kontrolek danego typu.

Dziel się z innymi:
Maciej Aniserowicz | Pseudo-style dla Windows Forms z Autofac

Architektura 2425 dni, 11 godzin, 17 minut temu gordon_shumway 112 rozwiń

W poprzednich postach przedstawiłem wzorce projektowe warstwy biznesowej: skrypt transakcji (transaction script), moduł tabeli (table module), aktywny rekord (active record) oraz model domeny (domain model). Napisałem, że dwa ostatnie wzorce posiadają bardzo rozdrobniony interfejs i nie nadają się bezpośrednio do użycia w rozproszonej aplikacji. Dla przypomnienia, AR oraz DM polegają na stworzeniu klasy dla każdej (lub prawie każdej w przypadku DM) tabeli w bazie danych. Przykładowo system sprzedaży posi...

Tagi:
Dziel się z innymi:
Piotr Zieliński  » Warstwa usług

Architektura 2425 dni, 17 godzin, 18 minut temu pzielinski 81 rozwiń

Autor: "Na początku przygody z Inversion of Control, a także dość długo później, moje wykorzystanie dostępnych kontenerów ograniczało się właściwie do ręcznego zarejestrowania wszystkich interfejsów, wszystkich interesujących mnie implementacji oraz zdefiniowaniu zależności w postaci parametrów konstruktora. Działało. Ostatnio korzystając z okazji postanowiłem podejść do problemu inaczej. Moim celem było zminimalizowanie czynności prowadzących do uzyskania żądanego efektu - "minimum friction development...

Dziel się z innymi:
Maciej Aniserowicz | Samobudująca się aplikacja z Autofac

Architektura 2426 dni, 18 godzin, 34 minuty temu http://pawlos.blogspot.com/ 153 rozwiń

Ostatnio poznaję kontener DI Autofac i baaardzo mi się on podoba - nie tylko nazwa, funkcjonalność także. Ten post rozpoczyna paczkę kilku ciekawych (mam nadzieję:) ) postów pokazujących, jak przy pomocy Autofac zbudować "samoskładającą się" aplikację.

Maciej Aniserowicz | Autofac i open generic types: Application Events revisited

Architektura 2431 dni, 15 godzin, 48 minut temu gordon_shumway 94 rozwiń

W poprzednim poście opisałem wzorzec repozytorium. Jak już wspomniałem, repozytorium może różnić się  implementacją w zależności od encji. W skrajnych przypadkach może być jedno repozytorium na jedną encję (Order – OrderRepository, Product – ProductRepository itp). Tworzenie każdego repozytorium ręcznie w zależności od przetwarzanej encji jest dość niewygodne. Przydałby się jakiś globalny mechanizm na tworzenie obiektów na podstawie typu encji. Dobrym rozwiązaniem problemu jest implementacja wzorca serv...

Tagi:
Dziel się z innymi:
Piotr Zieliński  »  Jak tworzyć instancję repozytorium?

Architektura 2433 dni, 16 godzin, 30 minut temu pzielinski 89 rozwiń

Jak już wspominałem kilka postów temu, ponowna lektura części Strategic Design z książki Erica Evansa pomogła mi usystematyzować swoją aktualną wiedzę na temat DDD. Dziś chciałbym się z Wami podzielić dalszą częścią mojego odkrycia. Warstwa możliwości (capabilities) świetnie nadaje się do tworzenia encji warstwy operations. O co chodzi? Jakiś czas temu Udi Dahan pisał o tym, że nie powinniśmy tworzyć korzeni agregatów. Jego post wykorzystuje przykład sklepu internetowego. Za...

Tagi: DDD
Dziel się z innymi:
Warstwy modelu « Notki Po Polsku « Simon says… architecture!

Architektura 2433 dni, 20 godzin, 14 minut temu gordon_shumway 89 rozwiń

Implementując warstwę biznesową za pomocą DomainModel lub ActiveRecord uzyskujemy bardzo rozdrobniony interfejs. Ponadto stworzone obiekty biznesowe zawierają logikę odnoszącą się tylko do konkretnej encji. W poprzednich postach pokazałem prostą klasę Client, implementującą wzorzec DomainModel. Przedstawiona klasa mogła wykonywać tylko operacje dla konkretnego, jednego klienta. W systemie jednak często będziemy musieli brać pod uwagę zbiór encji. Przykładowo może być potrzeba zwrócenia zbioru klientów, d...

Tagi:
Dziel się z innymi:
Wzorzec repozytorium (repository pattern)

Architektura 2435 dni, 10 minut temu pzielinski 480 rozwiń

1 2... 11 12 13 14 15 16 17 18
Accenture
Szkolenia SecurITum

grudzień

Zobacz wszystkie

.NET Developer Days 2015

W tym roku ponownie jak w poprzednim jesteśmy jednym z patronów medialnych konferencji .NET Developer Days. W tym roku jednym z prelegentów będzie Scott Hanselman.  czytaj więcej
2015-07-22

Najaktywniejsi

1

macko (32 816,53)

2

http://pawlos.blo... (31 383,4)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,87)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 376,46)

8

Damian (9 011,08)

9

danielplawgo (7 235,99)

10

arek (6 642,75)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 388,06)

15

http://jakub-flor... (3 224,66)

16

CaMeL (2 954,87)

17

jedmac (2 614,33)

18

mnikolajuk (2 596,93)

19

lkurzyniec (2 466)

20

FutureProcessing (2 445,11)