Kilka porad o pracy bezpośrednio z klientem

Praca programisty bardzo mocno różni się od pracy konsultanta IT. Pisząc kolejne linie kodu bardziej się skupiamy na wzorcach projektowych niż na realnym wykorzystaniu naszego kodu przez użytkowników. Każdy z nas wiele razy kłócił się z kolegami o wykorzystaniu tej czy tamtej biblioteki, bo jest przystępniejsza w testowaniu jednostkowym, ma bogatsze API lub jest polecana przez… Continue reading

FluentValidation – walidacja dynamicznego modelu.

Ten post został pierwotnie napisany w języku angielskim, ale żeby kontynuować cykl o Fluent Validation, postanowiłem go przetłumaczyć na język polski. Czasami, wraz z rozwojem systemu, pojawia się potrzeba zaimplementowania dynamicznego modelu. Na przykład, w sklepie internetowym administrator chciałby zdefiniować dodatkowe pola dla konkretnych kategorii produktów. Następnie pracownicy sklepu, na podstawie tych pól, dodawaliby do… Continue reading

FluentValidation – wstrzykiwanie zależności

Przedstawione przeze mnie do tej pory przykłady walidacji były zdecydowanie prostymi walidacjami – wszystkie dane zawierały się w modelu walidowanym. Niekiedy jednak zachodzi potrzeba sięgnięcia do zewnętrznych zasobów – bazy danych / cache / serwisów zewnętrznych. Mając w pamięci 5 zasadę SOLID’a warto by takie zależności wstrzykiwać do walidatora, zamiast tworzyć je bezpośrednio w konstruktorze…. Continue reading

FluentValidation – integracja z ASP.NET Web API

W poprzednim poście z cyklu FluentValidation pokazałem jak dodać FluentValidation do ASP.NET MVC.  W takim razie pora na pokaz integracji z ASP.NET Web API. Zaczynamy od dodania do naszego projektu biblioteki łączącej FluentValidation z WebApi. Następnie w miejscu startu aplikacji (u mnie jest to Application_Start Global.asax) dodajemy kod odpowiedzialny za połączenie FluentValidation z domyślną walidacją WebAPI. W przypadku używania FluentValidation także z MVC może wystąpić… Continue reading

Synchronizacja czasu pomiędzy serwerem i przeglądarką

Podczas pisania aplikacji konkursowej na konferencję WROC# pojawił się ciekawy problem, który wydał mi się warty opisania. O danej godzinie, podczas przerwy, administrator aplikacji uruchamiał test. Następnie, podczas 10 minut, każda z zarejestrowanych osób mogła odpowiedzieć na pytanie testowe i wziąć udział w konkursie. Jedną z funkcjonalności tej aplikacji był licznik czasu przy pytaniu testowym, który… Continue reading

FluentValidation – integracja z ASP.NET MVC

W dzisiejszym poście pokażę jak zintegrować FluentValidation z ASP.NET MVC5, na podstawie dodawania użytkownika. Po za standardowym FluentValidation potrzebujemy również FluentValidation.MVC5. Ta biblioteka zapewnia ModelValidatorProvider odpowiedni dla FluentValidation. Następnie w miejscu startu aplikacji (u mnie jest to Application_Start Global.asax) dodajemy taki fragment kodu: Sprawia on, że od tej pory nasz framework webowy nie będzie korzystał w wbudowanej walidacji… Continue reading

FluentValidation – podstawy

Walidacja danych wejściowych jest jedną z najczęściej implementowanych przez nas funkcji w naszych aplikacjach. Bardzo często używa się wtedy wbudowanych adnotacji Data Annotations, gdyż są od razu dostępne i pojawiają się w większości tutoriali od Microsoftu. Dodatkowo, w ASP.NET MVC, bez żadnych dodatkowych konfiguracji, kontroler waliduje dane na wejściu i umieszcza błędy w obiekcie ModelState. Dla prostych walidacji lub nieskomplikowanych… Continue reading

Azure Websites i czas lokalny

Piszę aktualnie małą aplikację webową w ASP.NET, która będzie używana jedynie w Polsce. Postanowiłem ustawić na sztywno kulturę polską, aby wszystkie daty wskazywały na właściwą godzinę. Najprościej jest to zrobić dodając wpis globalization  w web.config, co też uczyniłem. Po uruchomieniu aplikacji na Azure Websites zauważyłem, że datą lokalną wciąż jest UTC. Szybka poprawka na ustawianie kultury podczas uruchamiania aplikacji przez nadpisywanie CurrentCulture i CurrentUICulture w… Continue reading

Jak usprawnić pracę frontendowca w ASP.NET przy wykorzystaniu Gulpa?

Artykuł ukazał się w magazynie Programista, nr 12/2015 Praca webdevelopera staje się coraz bardziej skoncentrowana na frontendzie. Dzisiejsze aplikacje posiadają szeroką logikę biznesową po stronie klienta, walidacje, ściąganie danych z wielu źródeł. Jest to szczególnie widoczne w aplikacjach SPA (Single Page Application), w których jedyną funkcją serwera może być zwrócenie źródeł i odpowiedzi na żądania z aplikacji. Dotychczasowe rozwiązania… Continue reading

ASP.NET Web Api i identyczne nazwy kontrolerów

Rozwijając nową funkcjonalność w projekcie dodałem w osobnym module nowy kontroler, który miał identyczną nazwę jak już istniejący. Przy uruchomieniu aplikacji pojawił się komunikat że nie znaleziono kontrolera dla przesłanego adresu. Zacząłem więc debugować ścieżki, parametry i sprawdzać masę innych rozwiązań. Po dłuższym czasie, przeklikując po stronach aplikacji, zauważyłem że pierwszy kontroler również przestał działać. To dało mi do… Continue reading