dotnetomaniak.pl - Artykuły z tagiem Patterns & Practices

Po moim ostatnim poście dostałem maila z dość ciekawym pytaniem dotyczącym zapisywania klasy Money w bazie danych. Pytanie brzmi następująco: […]mam pytanie, którego nie było w temacie, co prawda nie tego dotyczyło, ale może mogę uzyskać wskazówkę, pomoc co w przypadku zapisania takiej struktury do bazy, np wykorzystując EF ? EF domyślnie nie wspiera struct, dlatego mam pytanie, jak to dobrze i prawidłowo zapisywać do bazy ? Jakas podpowiedz ?

Źródło: codestorm.pl
Dziel się z innymi:
Przechowywanie złożonego typu danych w bazie na przykładzie Entity Framework - Codestorm

Daj się poznać 2016 3167 dni, 19 godzin, 41 minut temu Gveir 265 źrodło rozwiń

Problem chyba tak stary jak stare są aplikacje liczące pieniądze – jak reprezentować kasę w kodzie aplikacji? W świecie .NET jedną z częściej pojawiających się odpowiedzi jest po prostu decimal jednak tak naprawdę jest to tylko połowa odpowiedzi. W każdym razie jeśli chcielibyśmy to zrobić w duchu OOP i OOD.

Źródło: codestorm.pl
Dziel się z innymi:
Jak reprezentować kwoty pieniędzy w kodzie aplikacji? - Codestorm

Daj się poznać 2016 3167 dni, 19 godzin, 41 minut temu Gveir 269 źrodło rozwiń

Dzisiaj zacząłem pisać post o hierarchii aktorów. Jest to bardzo ważny element w celu osiągnięcia skalowalności i dobrej obsługi błędów (np. poprzez izolacje wadliwych aktorów). W połowie jednak stwierdziłem, że najpierw wypada napisać krótki wpis o zdarzeniach (hooks), jakie możemy zdefiniować w AKKA. Pozwoli nam to potem lepiej zrozumieć przepływ informacji w hierarchiach aktorów. Każdy aktor, może znajdować się w następujących etapach...

AKKA.NET – czas życia aktorów, zdarzenia (hooks)

Programowanie rozproszone 3266 dni, 23 godziny, 53 minuty temu rroszczyk 78 źrodło rozwiń

Tym razem zaczyna się od kodu i od razu dowiemy się dlaczego jest on niebezpieczny...

Dziel się z innymi:
Code review: Async void

Zanim będę kontynuował serię o AKKA.NET, warto zapoznać się z podstawami programowania reaktywnego. Pozwoli to później zrozumieć, w jaki sposób AKKA.NET implementuje założenia programowania reaktywnego. Dzisiaj zatem przedstawię tzw. “The Reactive Manifesto”, którego pełną treść można znaleźć tutaj. Moim zdaniem jednak, manifest może wydawać się trochę skomplikowany i dlatego zdecydowałem się wyjaśnić to po swojemu.

Programowanie reaktywne

W ostatnim wpisie przedstawiłem zasadę działania modelu aktor. Zachęcam do przeczytania poprzedniego wpisu ponieważ dzisiaj skupię się na przykładzie, a nie podstawach teoretycznych. Jeśli poprzedni wpis nie był do końca zrozumiały, zachęcam do przeanalizowania przykładu z tego wpisu i potem powrócenia do poprzedniego postu – wtedy myślę, że wiele zagadnień będzie prostsze w zrozumieniu.

Wielowątkowość: przykład modelu aktor

Programowanie rozproszone 3286 dni, 23 godziny, 10 minut temu rroszczyk 189 źrodło rozwiń

Aktor jest modelem budowania aplikacji wielowątkowych. Powstał w celu ułatwienia synchronizacji między różnymi wątkami. Programiści piszący aplikacje wielowątkowe zwykle korzystają z klasycznych blokad (lock) w celu opisania sekcji krytycznej. W wielu sytuacjach jest to najlepszy i najprostszy sposób. Niestety dla dużych i skomplikowanych systemów, utrzymywanie takiego kodu jest bardzo trudne, mozolne i niezwykłe podatne na powstanie deadlock lub livelock.

Wielowątkowość: Wzorzec aktor (actor based programming)

Coraz więcej API dostarcza asynchroniczne wersje metod. Niektóre z nich, idą o krok dalej i w ogóle nie posiadają synchronicznej wersji. Załóżmy, że zewnętrzna biblioteka ma następującą metodę: async Task

Metody asynchroniczne z async oraz oczekiwanie na rezultat

Programowanie rozproszone 3293 dni, 21 godzin, 2 minuty temu rroszczyk 316 źrodło rozwiń

BlockingCollection jest specjalną kolekcją danych, przygotowaną do implementacji wzorca producent-konsument. Nakład pracy do implementacji tego wzorca jest minimalny z BlockingCollection. Nie musimy martwić się o synchronizację, sekcję krytyczną czy deadlock. Zacznijmy od razu od przykładu. Producent będzie wyglądać następująco...

Producent-konsument w C# – BlockingCollection

Resharper daję naprawdę cenne wskazówki. Nie wszystkie są oczywiste i czasami należy zagłębić się w temat. Jedną z takich wskazówek jest używanie IndexOf wraz z StringComparison.Ordinal. Załóżmy, że mamy następujący kod: string text = "test"; Console.WriteLine(text.IndexOf("est")); Resharper zasugeruje konwersję do: string text = "test"; Console.WriteLine(text.IndexOf("est", StringComparison.Ordinal)); Dlaczego? Jeśli nie przekażemy ustawień regionalnych jawnie, wtedy domyślnie aktualna zost...

Dziel się z innymi:
Porównywanie znaków, ToUpper, string.IndexOf oraz StringComparison.Ordinal

Nie jest to pierwszy wpis o SpecFlow i podstawy framework’a znajdziecie oczywiście  w archiwum. W SpecFlow można definiować tzw. “Scenario outline”, które służą jako szablony dla testów. Oczywiście data-driven testing nie powinno być nadużywane i w szczególności dla acceptance tests nie ma to wielkiego sensu. SpecFlow jest często używany dla testów systemowych i UI, gdzie nie testujemy wszystkich możliwych kombinacji danych wejściowych. Czasami jednak chcemy mieć bardziej sparametryzowany zestaw testów...

Dziel się z innymi:
SpecFlow – data driven testing

Sztuka programowania 3453 dni, 1 godzinę, 2 minuty temu rroszczyk 126 źrodło rozwiń

Kompatybilność usług jest problemem w każdej architekturze SOA, ale w przypadku mikro-usług staje się jeszcze bardziej widoczna. W przyszłości chce napisać post o tzw. consumer-driven contracts, które znacząco mogą zminimalizować potrzebę wersjonowania usług. W każdym razie, bardzo prawdopodobne, że w pewnym momencie zajdzie potrzeba wprowadzenia zmiany, która nie jest kompatybilna wstecz. Jeśli nasz system składa się np. z 20 usług to musimy mieć mechanizm, który zagwarantuje nam, że nie wprowadzimy zm...

Kompatybilność usług

Programowanie rozproszone 3482 dni, 10 godzin, 55 minut temu rroszczyk 211 źrodło rozwiń

Dzisiaj ostatnia warstwa modelu, która zdecydowanie często jest pomijana w implementacjach REST. Moim zdaniem, w przypadku publicznych API jest bardzo ważna, szczególnie w środowisku mikro-serwisów, gdzie nawigacja jest utrudniona ze względu na liczbę usług. HATEOAS to skrót od Hypertext As The Engine Of Application State. Mechanizm dostarcza możliwość nawigacji przez zasoby bez wiedzy o konkretnych adresach URL.  Załóżmy, że mamy bazę klientów w systemie i możemy w niej:Wylistować listę klientów.Zwróci...

Richardson Maturity Model, warstwa 3 – HATEOAS

Web 3491 dni, 15 godzin, 25 minut temu rroszczyk 260 źrodło rozwiń

W dwóch postach poruszałem już temat dokumentacji usług REST. Ręczne tworzenie plików JSON dla swagger jest dosyć czasochłonne i łatwo potem zapomnieć przy jakiś modyfikacjach o aktualizacji dokumentacji. Dla ASP.NET MVC WebAPI na szczęście jest Swashbuckle.

ASP.NET Swashbuckle – Swagger

Web 3493 dni, 14 godzin, 47 minut temu rroszczyk 160 źrodło rozwiń

Martin Fowler, kilka lat temu pisał o tzw. Richardson maturity model, którego autorem jest tak naprawdę Leonard Richardson. Groźnie brzmiąca nazwa, jak zwykle nie opisuje nic bardzo skomplikowanego. Nie mniej jednak, model ten doskonale opisuje założenia usług RESTful. W zasadzie nie ma framework’ów, które wymuszałyby poprawną implementację REST, stąd niezbędne jest zrozumienie jakie są założenia tych usług. Programiści zbyt często luźno interpretują pojęcie REST. Moim zdaniem, w momencie, gdy REST wchod...

Co to jest usługa REST? Richardson maturity model oraz poziomy 0,1,2.

Programowanie rozproszone 3496 dni, 12 godzin, 56 minut temu rroszczyk 530 źrodło rozwiń

W dzisiejszym poście pokażę bibliotekę Noda Time. Generalnie jest ona stworzona, aby zastąpić DateTime, który często powoduje problemy. Dzisiaj jednak, chciałbym pokazać Noda Time na przykładzie testów jednostkowym, bo to jest miejsce, gdzie DateTime po prostu nie nadaje się do użycia (przynajmniej bezpośrednio).

Noda Time: testy jednostkowe oraz obsługa czasu

Sztuka programowania 3505 dni, 1 godzinę, 21 minut temu rroszczyk 148 źrodło rozwiń

Największa zaleta mikro-serwisów, a mianowicie pojedyncza odpowiedzialność, często bywa również problemem, a raczej wyzwaniem. Załóżmy, że nasz system ma następujący mikro-usługi:CustomerService – podstawowe informacje o klientach AddressService – wyszukiwarka adresów CreditCardDetails – dane o kartach Nie chce wymieniać tutaj długiej listy, ale wyobraźmy sobie...

Mikro-serwisy: wzorzec gateway

Sztuka programowania 3509 dni, 11 godzin, 8 minut temu rroszczyk 412 źrodło rozwiń

Od jakiegoś czasu wzorzec “microservices” jest popularny  w wielu firmach.  Szczegółowe informacje znajdują się na blogu Martin’a Fowler’a, aczkolwiek na blogu chciałbym naszkicować koncepcję. Pomysł nie jest nowy, jednak pewne usystematyzowanie moim zdaniem ma sens. Dla mnie osobiście, to nic innego jak przestrzeganie zasady “Single rensponsibility” na poziomie usług. Wzorzec ma zastosowanie w systemach złożonych, SOA, a nie w prostych aplikacjach klient-serwer. Skrajnie zła sytuacja, to taka, w które...

Dziel się z innymi:
Architektura enterprise: Mikro-serwisy

Architektura 3521 dni, 22 godziny, 42 minuty temu rroszczyk 672 źrodło rozwiń

by MJ Prototype design pattern. You should use it whenever you need to clone model classes. A simple example is when you have 1000 clients and you need to provide them invoices. Then, you only need to change e,g, names, surnames and total amount – you don’t need to create another invoice from the beginning. Again, the same situation is when your class is a parent for other classes – in this situation, it is not easy to create new – you should clone existing instance and then try to modify it. Here is a...

[EN] World of IT | DESIGN PATTERNS – PROTOTYPE

Architektura 4054 dni, 1 godzinę, 23 minuty temu jedmac 122 źrodło rozwiń

Na Codeplex w dziale Patterns & Practices pojawił się poradnik dla osób, które chciałyby przenieść swoje aplikacje na platformę Windows Azure.

Źródło: codeguru.pl
Dziel się z innymi:
Patterns & Practices: Windows Azure Guidance

Architektura 5171 dni, 13 godzin, 47 minut temu paduda 31 źrodło rozwiń