Strona głównaUżytkownik

Admu | użytkownik

Admu
Admu
474,03
1240 dni, 4 godziny, 42 minuty temu
30 marca, 2017
dotnetomaniak.pl

Z reguły naszą logikę biznesową umieszczamy w klasach serwisowych. Czasem są one większe, a czasem mniejsze. Zastanówmy się, jak mógłby wyglądać nasz kod, gdybyśmy dla każdej metody z serwisu tworzyli osobną klasę. Wykorzystamy do tego bibliotekę MediatR. Jeśli ktoś się zastanawia po co, odpowiedź jest prosta: aby zwiększyć spójność i zmniejszyć sprzężenie. Na razie nie będziemy się zagłębiać w takie pojęcia jak CQRS czy CQS. Naszym celem jest rozbicie klas na mniejsze i zmiana tego, jak je wołamy. Po ty...

Tagi: C#, Narzędzia
Źródło: www.admu.pl
Dziel się z innymi:
Klasa per metoda z wykorzystaniem MediatR – ADMU Blog

Sztuka programowania 1239 dni, 2 godziny, 33 minuty temu Admu 134 źrodło rozwiń

Jakiś czas temu pisałem o tym, że gdy tworzymy API, warto dodać narzędzie Swagger. Umożliwia ono w szybki i prosty sposób przetestować nasze API (tutaj). Zdarza się jednak tak, że aby móc korzystać z naszego API, dane żądanie (request) musi być zautoryzowane, czyli np. posiadać odpowiedni token. Swagger umożliwia autoryzację żądań na wiele sposobów. W tym poście opiszę jak to zrobić, gdy potrzebujemy Bearer token.

Tagi: C#, Narzędzia, testy
Źródło: www.admu.pl
Dziel się z innymi:
Autoryzacja żądań w Swagger – ADMU Blog

Narzędzia 1259 dni, 3 godziny, 19 minut temu Admu 90 źrodło rozwiń

Z reguły nasze aplikacje posiadają jakąś logikę biznesową (o ile nie piszemy prostego CRUD). Chciałbym jednak zaznaczyć, że nie mam tu na myśli logiki w rozumieniu walidacji czy reguł biznesowych, np. brak możliwości zmiany wartości jakiegoś pola, gdy pewne warunki nie zostaną spełnione. Chodzi mi bardziej o logikę procesu, np. gdy klient złoży zamówienie, musimy mu wysłać wiadomość e-mail. Ta logika nie dotyczy obiektu zamówienia, ale jest z nim związana. Skoro wiemy, że będziemy musieli przechowywać g...

Tagi: C#, Narzędzia
Źródło: www.admu.pl
Dziel się z innymi:
Jak grupować logikę biznesową w klasach – ADMU Blog

Sztuka programowania 1288 dni, 3 godziny, 56 minut temu Admu 128 źrodło rozwiń

Ostatnio pisałem o tym, co możemy zrobić, gdy nasze metody zwracają rezultat i chcemy go zmapować na odpowiedni kod http (tutaj). W tym poście podam podobne rozwiązanie, gdy nasze metody rzucają wyjątki, zamiast zwracać rezultat.

Źródło: www.admu.pl
Dziel się z innymi:
Jak obsłużyć zwracanie wyjątku w WebAPI – ADMU Blog

Narzędzia 1302 dni, 3 godziny, 43 minuty temu Admu 91 źrodło rozwiń

Jakiś czasem temu pisałem o tym, że nasze metody mogą zwracać rezultat lub zgłaszać wyjątek (tutaj). Zastanówmy się, jak mogłoby wyglądać nasze API, aby status rezultatu był mapowany na odpowiedni kod Http. Mamy dwie możliwości: wspólna metoda w klasie bazowej lub filtr.

Tagi: C#, Narzędzia, WebAPI
Źródło: www.admu.pl
Dziel się z innymi:
Jak obsłużyć zwracanie rezultatu w WebAPI – ADMU Blog

Narzędzia 1316 dni, 3 godziny, 49 minut temu Admu 88 źrodło rozwiń

Jakiś czas temu pisałem o testach w kontekście API (tutaj). W tym poście postaram się opisać jak napisać podobne testy, ale gdy nasza aplikacja komunikuje się poprzez kolejkę. Pokaże to z wykorzystaniem biblioteki MassTransit.

Źródło: www.admu.pl
Dziel się z innymi:
Testy kolejek z MassTransit – ADMU Blog

Narzędzia 1330 dni, 3 godziny, 47 minut temu Admu 64 źrodło rozwiń

Często w naszych aplikacjach mamy do czynienia z datami. Najczęściej używamy ich przy polach takich jak data utworzenia (np. CreatedAt) lub data modyfikacji (np. ModifiedAt), ale są też inne miejsca. Wtedy z reguły stosujemy DateTime.UtcNow. Niestety w testach ciężko jest potem coś z taką datą zrobić. Nie mamy żadnej możliwości ustawienia tej daty na jakąś inną, aby przetestować czy nasza aplikacja działa poprawnie. Sprawa się jeszcze bardziej komplikuje, gdy mamy logikę biznesową uzależnioną od takiej ...

Źródło: www.admu.pl
Dziel się z innymi:
Daty – jak sobie z nimi radzić – ADMU Blog

Narzędzia 1393 dni, 2 godziny, 59 minut temu Admu 169 źrodło rozwiń

Kiedyś bardzo lubiłem bibliotekę AutoMapper. Była ona z reguły jedną z pierwszych bibliotek, jakie zawsze dodawałem do projektu na samym początku. Pozwalała mi tworzyć mnóstwo obiektów i mapować je do woli, poświęcając na to niewiele czasu „programistycznego”. Była świetna! Aż do momentu, gdy zaczęła być jedną z największych bolączek.

Źródło: www.admu.pl
Dziel się z innymi:
AutoMapper to zło – ADMU Blog

Sztuka programowania 1407 dni, 3 godziny, 33 minuty temu Admu 261 źrodło rozwiń

Często gdy mamy napisać jakiś kod, okazuje się, że już gdzieś napisaliśmy taki sam lub podobny. Wtedy stajemy przed dylematem – czy zduplikować go, czy użyć ponownie?

Źródło: www.admu.pl
Dziel się z innymi:
Duplikować kod czy nie duplikować? – ADMU Blog

Sztuka programowania 1421 dni, 3 godziny, 54 minuty temu Admu 130 źrodło rozwiń

Z reguły gdy tworzymy jakąś aplikację jest to jedna wielka aplikacja albo zbiór małych aplikacji, które w mniejszym lub większym stopniu się ze sobą komunikują. Ponadto często jest tak, że architektura większości z nich jest dokładnie taka sama. Czy to aby na pewno dobre podejście?

Tagi: architektura
Źródło: www.admu.pl
Dziel się z innymi:
Wybór architektury – ADMU Blog

Architektura 1434 dni, 18 godzin, 37 minut temu Admu 141 źrodło rozwiń

General Responsibility Assignment Software Patterns (GRASP) to zbiór 9 zasad określających, jaką odpowiedzialność powinno się przypisywać określonym obiektom i klasom w systemie. Wszystkie te zasady odpowiadają na część problemów z oprogramowaniem, które są wspólne dla prawie każdego projektu. Techniki te nie zostały wymyślone w celu stworzenia nowych sposobów pracy, a jedynie w celu lepszego udokumentowania oraz standaryzacji starych, wypróbowanych i przetestowanych zasad programowania. Jest więc to kol...

Tagi: wzorce
Źródło: www.admu.pl
Dziel się z innymi:
GRASP – ADMU Blog

Sztuka programowania 1448 dni, 3 godziny, 32 minuty temu Admu 63 źrodło rozwiń

Na przestrzeni lat powstało bardzo dużo projektów. Część z nich była łatwiejsza w utrzymaniu, część trudniejsza. Analiza tych projektów pozwoliła zauważyć, że są pewne zasady, które powodują łatwiejszy ich rozwój. Te zasady zostały połączone w zbiory zasad. Najbardziej popularnym i powszechnie stosowanym zbiorem zasad jest SOLID. Postaram się opisać te zasady z pragmatycznego punktu widzenia.

Tagi: wzorce
Źródło: www.admu.pl
Dziel się z innymi:
SOLID – pragmatycznie – ADMU Blog

Architektura 1463 dni, 18 godzin, 33 minuty temu Admu 91 źrodło rozwiń

Gdy tworzymy jakieś API dobrze jest sprawdzić, czy ono działa. Po każdej zmianie albo dodaniu nowego punktu wejścia (endpoint) powinniśmy przetestować, czy wszystko jest ok. Możemy to zrobić uruchamiając aplikację i ręcznie wszystko sprawdzając, jednakże na dłuższą metę jest to bardzo czasochłonne. Dlatego warto utworzyć osobny projekt, w którym stworzymy testy sprawdzające czy nasze API działa poprawnie. W kilku punktach postaram się opisać jak u mnie z reguły wygląda taki projekt z testami API.

Źródło: www.admu.pl
Dziel się z innymi:
Testy API w C# – ADMU Blog

Narzędzia 1470 dni, 3 godziny, 32 minuty temu Admu 138 źrodło rozwiń

Jak dużo czasu poświęcacie na zrozumienie kodu, gdy trzeba w nim coś zmienić? Czasem kod jest na tyle czytelny, że wszystko widać od razu, a czasami trzeba poświęcić po kilka-kilkanaście godzin, aby zrozumieć co się w nim dzieje. Z czego to wynika? Mam kilka przemyśleń na ten temat.

Źródło: www.admu.pl
Dziel się z innymi:
Prosty kod – ADMU Blog

Sztuka programowania 1477 dni, 3 godziny, 50 minut temu Admu 74 źrodło rozwiń

Czy mieliście czasem wrażenie, że wraz z upływem czasu, kod w projekcie staje się coraz gorszy? Że się starzeje? Że jest coraz trudniejszy w utrzymaniu? Że pojawia się coraz więcej miejsc gdzie został zaciągnięty dług techniczny i nie został on potem spłacony? Albo może mieliście w swoich projektach takie miejsca, których nikt nie chciał dotykać? Wyglądały strasznie i każdy się bał, że gdy coś tam zmieni, to coś innego wybuchnie? Zapewne cześć tego kodu została napisana przez nas, część przez naszych ko...

Źródło: www.admu.pl
Dziel się z innymi:
Pogarszający się kod, a refaktoryzacja – ADMU Blog

Sztuka programowania 1484 dni, 3 godziny, 40 minut temu Admu 80 źrodło rozwiń

Często słyszę, jak te pojęcia są mylone i używane zamiennie, a tak naprawdę tyczą się zupełnie różnych rzeczy. Pokrótce postaram się przybliżyć oba te terminy, a także zaproponować sposób, jak z nimi żyć.

Dług techniczny, dług technologiczny – ADMU Blog

Architektura 1491 dni, 2 godziny, 37 minut temu Admu 51 źrodło rozwiń

Spotkałem już kilka nazw, a każda z nich wskazywała na tę samą architekturę. Różniły się one co prawda tym, jak był rysowany wykres zależności, ale idea była taka sama. Ogólnie mówiąc, ta architektura wydaje się czymś naturalnym, a mimo wszystko jest wciąż dość rzadko spotykana. Czym się wyróżnia? Tak w skrócie, to w tej architekturze najważniejsza jest logika biznesowa, tzw. „Core” aplikacji. Jest tam zdefiniowane wszystko to, co jest niezbędne dla działania. Wszystko inne jest implementowane w oddziel...

Tagi: architektura
Źródło: www.admu.pl
Dziel się z innymi:
Architektura Clean/Onion/Hexagonal/Ports&Adapters – ADMU Blog

Architektura 1505 dni, 2 godziny, 49 minut temu Admu 150 źrodło rozwiń

Czy byliście kiedyś w sytuacji, że dołączyliście do istniejącego już projektu, zagłębiliście się w jego kod i architekturę, a następnie uznaliście, że to jest bez sensu? Że ktoś dał mocno ciała wybierając architekturę pod projekt albo podejmując inne ważne decyzje? Jednak nie macie kogo o to spytać, bo żadna z osób, które podejmowały te decyzje, już w tym projekcie nie pracuje? Może nawet postanowiliście zrobić refaktoryzację i po kilku godzinach/dniach okazało się, że jednak początkowe rozwiązanie było ...

Źródło: www.admu.pl
Dziel się z innymi:
Architecture Decision Record / Decision Log – ADMU Blog

Architektura 1511 dni, 2 godziny, 48 minut temu Admu 82 źrodło rozwiń

Gdy piszemy metodę, która ma coś wykonać i ta operacja się nie powiedzie, zastanawiamy się co w takiej sytuacji zrobić: czy lepiej jest rzucić wyjątek, czy może zwrócić rezultat z odpowiednim statusem? Przyjrzyjmy się obu rozwiązaniom.

Źródło: www.admu.pl
Dziel się z innymi:
Wyjątek czy rezultat? – ADMU Blog

Architektura 1520 dni, 3 godziny, 17 minut temu Admu 154 źrodło rozwiń

W poprzednim poście pisałem o bibliotece FluentValidation i jak ją dodać do naszego projektu. W tym poście skupimy się na bardziej zaawansowanych funkcjonalnościach, jakie nam ta biblioteka udostępnia: - Walidacja złożonych właściwości (manualna i automatyczna) - Wspólny walidator właściwości - Walidacja listy - Własny komunikat błędu walidacji - Wspólne walidatory - Warunki walidacji - Reguły zależne od siebie - Wywołanie zwrotne - Asynchroniczna walidacja

Źródło: www.admu.pl
Dziel się z innymi:
Zaawansowana walidacja danych z FluentValidation – ADMU Blog

Narzędzia 1533 dni, 3 godziny, 55 minut temu Admu 135 źrodło rozwiń

1 2

Najaktywniejsi w tym miesiącu