jquery.unobtrusive-ajax is the javascript library that every ASP.NET MVC developer certainly knows. Unfortunately, it has a few design drawbacks which could have negative impact on our system architecture and generate additional hidden costs. In this post I’m going to show you some of jquery.unobtrusive-ajax.js related problems I encountered in my 5-year journey as a ASP.NET MVC frontend developer, and how to fix them.
Atrybuty autoryzacji. Sporo czasu spędzam ostatnio przy systematyzacji procesu autoryzacji w aplikacji mvc. Plan jest taki, aby każda metoda była zabezpieczona, a dostęp był zweryfikowany rolą, którą ma zalogowany użytkownik. Jak to zrobić? Z pomocą przychodzą atrybuty, ja wykorzystałem dwa (te same, ale dwa) Atrybuty jako AOP Atrybuty służą do tego aby zdefiniować kod, który powinien się wykonać przed wykonaniem metody która została oznaczoną danym atrybutem. ...
Dzisiaj o tym jak stworzyć nowy projekt w asp mvc – coś na rozgrzewkę, przed powrotem do częstszego pisania. Dopóki nowe visual studio nie zostanie oficjalnie wydane korzystać będę z wersji 2015. Nowy projekt tworze przez File|New|New Project. Następnie wybieram Templates|Visual C#|.Net Core|ASP.Net Core Web Application, Framework w wersji : OK. Potem zaznaczam jeszcze Web application, wyłączam tworzenie kont użytkownika oraz wyłączam opcje hostowania na azure – jeszcze nie czas n...
Nowadays, the HTTP APIs act as gateways for petabytes of data and some chunk of it might actually require enhanced access rules. For example, you could create a link that allows the user to download the file only once, and within such link you would find a token. I was in a need of creating such solution for my open source project Warden – a specialized, one-time link that can be used fetch the configuration object from the API. It turned out to be fairly straightforward to implement the most basic versi...
Sztuka programowania 3021 dni, 35 minut temu 155 źrodło rozwiń
Co to jest kontener IoC? IoC czyli Inversion of Control lub też odwrócenie zależności, brzmi bardzo ogólnie, ale co się pod tym kryje? Możemy tutaj zaliczyć wzorzec fabryki, service locatora (lub też antywzorzec), czy też dependency injection i na tym ostatnim się skupimy. Wzorzec ten może zostać zaimplementowany np. poprzez: constructor injection, property injection, jednak najbardziej sensowny jest ten pierwszy sposób. Polega on na wstrzyknięciu zależności poprzez konstruktor. Kontener IoC ma nam...
Daj się poznać 2016 3189 dni, 4 godziny, 34 minuty temu 227 źrodło rozwiń
Dzisiaj na ruszt wrzucimy integrację z systemem automatycznych płatności transferuj.pl. Sprawa wydaje się nie być trudna, ale spędziłem za pierwszym razem nad tym trochę czasu zanim wszystko odpowiednio skonfigurowałem, a w Internecie na ten temat materiałów brak. Dokumentacja do integracji jest i to jest dobra, jednak co na chłopski rozum opisane to łatwiej zrozumieć.
Sztuka programowania 3759 dni, 4 godziny, 47 minut temu 285 źrodło rozwiń
W najnowszej wersji 5, mamy do dyspozycji nowy rodzaj filtrów, implementujący interfejs IOverrideFilter:publicinterface IOverrideFilter { ///////// Type FiltersToOverride { get; } } Atrybuty przydają się, gdy mamy jeden filtr nałożony globalnie i potem chcemy zmienić zachowanie wyłącznie dla specyficznej akcji. Na przykład, możemy nałożyć Authorize globalnie i potem dla konkretnej akcji zmienić reguły autoryzacji. Innymi słowy, IOverrideFilter umożliwia wyczyszczenie wszystkich filtrów dla konk...
W dzisiejszym poście będzie o tzw. Web API. Usługi REST są dzisiaj już wszechobecne ze względu na liczbę dostępnych platform oraz co za tym idzie, skalowalność. Web Api ułatwia pisanie serwisów REST. Nic nie stoi na przeszkodzie, abyśmy używali starego podejścia czyli implementacji akcji w klasycznych kontrolerach. Web Api jednak ułatwia pracę z REST oraz jest tak naprawdę rozszerzeniem MVC. Jeśli ktoś zna ASP.NET MVC, nie będzie miał żadnego problemu z Web Api. Cała infrastruktura jest analogiczna do k...
Walidacja danych to bardzo szeroki temat. Sprawdzamy poprawność danych zarówno po stronie klienta (JavaScript) jak i serwera. Występuje ona we wszystkich warstwach systemu. Dzisiaj napiszemy metodę po stronie serwera, która będzie weryfikowała dane. W przeciwieństwie jednak do klasycznego podejścia, nie będziemy przeładowywać całej strony od nowa. Wywołanie będzie Ajaxowe czyli w tle (asynchroniczne). Użytkownik wpisując jakieś dane do formularza, spowoduje tym samym wysyłanie w tle żądania do serwera, k...
W poprzednim wpisie zająłem się wpływem sesji na wydajność kontrolerów. Dzisiaj zajmiemy się asynchroniczny kontrolerami, które znaczącą zostały uproszczone w .NET 4.5. Żeby zrozumieć jak działają asynchroniczne kontrolery, należy zdawać sobie sprawę, jak działa przetwarzanie zapytań. Załóżmy, że wysłanych jest 1000 zapytać do serwera. Czy zostaną one obsłużone jednocześnie, a może sekwencyjnie, jedno po jednym? ASP.NET MVC ma pulę wątków, przeznaczoną do przetwarzania zapytań. Jeśli zatem pula ma poje...
Ostatnio w sieci ukazało się wiele przykładów jak posprzątać kod w kontrolerach mvc. Sam podjąłem próbę walki z ciągle powtarzającym się kodem. Rozdmuchany kontroler z akcjami wypchanymi kodem wszelakiej maści, od walidacji po wywołania serwisów, repozytoriów, łapanie wyjątków i jak do tego jeszcze zaplącze się jakaś cząstka logiki biznesowej nie przyniesie nam nic dobrego.
Sztuka programowania 3919 dni, 4 godziny, 54 minuty temu 315 źrodło rozwiń
Filtry w ASP.NET MVC potrafią znaczącą polepszyć czytelność kodu, jeśli dana logika musi być wykonywana dla wielu akcji. Stanowią one tak naprawdę programowanie aspektowe, które jest całkowicie odmienne od powszechnie znanego programowania obiektowego. Ze względu na to, że programiści nie są przyzwyczajeni do tego modelu, należy uważać jak wykorzystuje się filtry. Klasyczne zastosowanie aspektów czy filtrów to caching, logging czy autoryzacja. Problemy te nalezą do grupy tzw. cross-cutting concerns, czy...
Każda strona zawiera wiele plików CSS oraz skryptów JS. Zwykle w celu przejrzystości i łatwiejszego utrzymania aplikacji, skrypty są rozdzielane na różne części logiczne. Podobnie jak w klasycznym programowaniu C#, w JS również korzystamy z komentarzy i formatowania kodu.. Ma to jednak pewien efekt uboczny dla wydajności. Każda spacja czy komentarz to dodatkowy tekst, który trzeba przesłać klientowi (przeglądarce). Najbardziej optymalną sytuacją byłoby usunięcie wszelkich spacji, komentarzy, które nie ...
Zarówno ASP.NET jak i ASP.NET MVC dostarczają bardzo prosty w użyciu mechanizm buforowania. Nie będę zajmował się tutaj Web Forms, a pokażę wyłącznie jak z tego korzystać w MVC. Buforowanie oczywiście służy do szybszego wyświetlania stron. Zamiast za każdym razem, wywoływać akcję w kontrolerze, wykonuje się ją raz a potem wynik przechowuje się w pamięci.
Im większy projekt tym więcej kontrolerów i widoków w solucji. Istnieje wiele sposobów na poddział projektu na kilka części. Nie zawsze jednak jest sens tworzenia nowych bibliotek i zwykle lepiej zastosować po prostu podział za pomocą przestrzeni nazw. “Areas” to po prostu wydzielenie kilku kontrolerów i widoków do osobnej przestrzeni nazw. Domyślnie wszystkie kontrolery znajdują się w folderze Controllers a widoki w Views. Przy dużych projektach jest to nieczytelne i trudne w utrzymaniu.
Korzystamy z ASP.NET MVC, bindujemy model z widokiem, a w modelu mamy pole daty z określonym formatem. Problem pojawia się, gdy walidacja nie działa jak powinna...
Zanim przejdę do tytułowej biblioteki chciałbym, aby czytelnik odpowiedział na następujące pytanie. Dlaczego tworzenie stron internetowych jest trudne? Jakieś pomysły? Moim, zdaniem największą trudnością jest wspieranie wielu różnych przeglądarek, które z kolei w zależności od wersji wpierają lub nie pewne standardy. Króluje tutaj oczywiście IE, w którym wszystko musi być inaczej, na szczęście powoli to się z...
Co w tej metodzie takiego specjalnego? Nazwa metody mówi wszystko, no prawie wszystko. Metoda używana często i gęsto w kodzie HtmlHelper przy okazji tworzenia kontrolek TextBox, CheckBox, DropDown itd. Zamienia...
Już od jakiegoś czasu nie "postowałem" na moim blogu... Na usprawiedliwienie napiszę, że po godzinach pracuję obecnie nad własnym czytnikiem RSS online (wiadomo, google reader niebawem zniknie, a jak na razie nic innego nie przypadło mi do gustu, tak że postanowiłem stworzyć coś własnego... zobaczymy co z tego wyjdzie...). W każdym bądź razie czas nadrobić zaległości, a prace nad czytnikiem również potrafią dostarczyć trochę tematów do opisania ;) Jednym z nich tytułowy problem sprawdzania jakości wprowa...
Na temat walidacji formularzy w ASP.NET MVC napisałem już w przeszłości kilka postów. Jako, że ostatnio pracuję po godzinach nad pewnym swoim projektem (jeśli starczy mi zapału i doprowadzę go do końca to na pewno się pochwalę), znów natknąłem się na pewien problem związany właśnie z walidacją. Rozwiązanie jest w sumie banalne ale może komuś się przyda ;) Myślę, że najlepiej będzie rozpocząć od przedstawienia problemu, zacznijmy więc!Opis problemu Czasem tworząc skomplikowany widok, mamy potrzebę zawrze...