Kategoria: ASP.NET

Minimal Z .NET 6 pojawił się nowy styl pisania aplikacji ASP.NET Core. Tak możesz pisać aplikację bez pisania kontrolerów. 

Oczywiście rodzi to wiele pytań.  Kiedy ten styl ma sens? Kiedy moja aplikacja jest już zbyt skomplikowana, aby nie pisać już aplikacji w stylu minimalnym

Słuchaj, nawet jeśli twoja aplikacja jest złożona to wciąż możesz napisać aplikacje bez kontrolerów. Pokaże Ci zaraz jak ja to zrobiłem.

WorkerW ASP.NET Core bardzo łatwo jest napisać usługę, która będzie robić coś w tle. Wraz z .NET  6 jeszcze łatwiej jest ją zarejestrować. Wiele osób nie wiem, że ASP.NET Core oferuje takie gotowe rozwiązanie. Dlatego kiedyś zrobiłem nawet o tym filmik na YouTube. Oto link do niego

Ten temat do mnie wrócił, gdy na moim Instagramie dostałem zlecenie, aby zrobić materiał na temat tego, co trzeba zrobić, aby elementy z cyklem życia "Scoped" mogły żyć wewnątrz BackgroundService.

Normalnie nie jest to możliwe, ponieważ BackgroundService jest singletonem, czyli wszystko, co istnieje wewnątrz niego albo też będzie singletonem, albo wyrzuci Ci wyjątek z cyklu "Stefan co ty robisz".

Ja zlecenia na materiały traktuje poważnie więc ten problem także omówimy.

CSS Ultra krótki wpis. Swagger UI jest dołączany domyślnie do aplikacji ASP.NET CORE i mnie to nie dziwi, gdyż tworzy on super formatkę do twojego REST API, która może służyć do testów, jak i do dokumentacji.

Zrobiłem o tym osobny wpis. A w tym wpisie właściwie to Ciebie tylko przekieruje do pliku CSS, który utworzy tryb ciemny w Swagger UI.

TokensNr. 1 Dziś na swoim fanpagu "JakProgramować" dostałem wiadomość, aby komuś pomóc jak napisać prostą aplikację, która ma wydzielone UI i REST API. Dodatkowo chcielibyśmy wykorzystać zasady Clean Architecture w tym projekcie tak, aby nasze warstwy były elastyczne. 

W sumie mam na ten temat mnóstwo prezentacji i prelekcji.

 

Jednak nie mam wpisu na ten temat. Postanowiłem wiec wyjąc aplikację demo, którą napisałem na prelekcję Warszawski Dni Informatyki. Omówimy więc taką aplikację i dodatkowo zastosujemy autoryzację przy pomocy JSON Web Tokenów.

Nawet taki krótki projekt wymaga dwóch wpisów. W tym wpisie skupię się na części Serwerowej, a w drugim napiszemy klienta Blazor, który przeczyta i sprawdzi ten token.

Samuraju, oto opis tej prelekcji do kodu demo:

AddOpinionNr: 4 Poprzednich wpisach stworzyliśmy API Sklepu Smoków i ją odczytaliśmy w innej aplikacji ASP.NET CORE. Na razie jednak nasze API GraphQL ma zapytania, które odczytują dane.

Jak wiadomo API powinno nie tylko odczytywać dane, ale także je zmieniać.

query={}Nr: 3 W poprzednich dwóch wpisach stworzyliśmy proste API w GraphQL. Widzieliśmy jak odpytywać nasze API specyficznym JSON-em w GraphQL Playground. Jak to jednak wygląda w prawdziwej aplikacji? Jak wygląda taki gołe polecenie HTTP POST czy HTTP GET?

Czym jest dokładnie zapytanie w GraphQL. W kontekście pisania aplikacji GraphQL zapytanie można tworzyć w definicji Schema. Ono dziedziczy po ObjectGraphType.

Dla klienta "zapytanie" to specyficznym zapis polecenia w formie JSON? Dzisiaj się na tym skupimy.  O ile jestem fanem rozwiązania Swagger , który generuje formatkę do testowania REST API. To w tym przypadku dla GraphQL potrzebujemy oddzielnego programu lub aplikacji aby GraphQL przetestować. Gdy zrozumiemy jak się odpytuje GraphQL API poleceniami POST i GET, wtedy napiszemy swoją stronę w ASP.NET Core, która odczyta nasze napisane w poprzednich wpisach API.

Serilog Na tym blogu mam serię artykułów, które opisują fajne biblioteki NuGet dla ASP.NET CORE. Dziś spojrzymy na Serilog. 

Logowanie błędów informacji jest kluczowe. Mam nawet wpis o tym, jak użyć NLoga w ASP.NET CORE i obecnie go używam na swoim blogu, aby od czasu do czasu sprawdzić jakie błędy w nim są.

Bez logowania nie znalazłbym uszkodzonych wpisów, które w wyniku złego formatowania HTML wyrzucały wyjątek.

Dlaczego Serilog, a nie coś innego? Najważniejsza różnica pomiędzy Serilog a innym frameworkiem do logowania jest fakt, że ta biblioteka ma wybudowany tryb strukturalnego logowania. Każdy element Serilog jest paczką, którą można dodać aby go rozszerzyć.

Serilog też może być skonfigurowane za pomocą appsetting.json. Czyli nie zmieniamy kod aby zmienić styl logowania aplikacji. NLog miał natomiast swoją własną konfigurację w oddzielnym pliku XML co możesz uznać za wadę.

Dlaczego jest to takie ważne? W świecie Kubernetesa i Dockera możesz też potem te konfigurację zmieniać w zależności od środowiska

Problems? To normalne, że w domenie chmury i aplikacji HTTP każdy serwis wzajemnie się odpytuje. Jak to robimy w .NET ? Poprzez klasę HTTPClient.

Jaki jest problem z HTTPClient?  To pytanie często wraca jak bumerang. W trakcie pisania aplikacji, a nawet na rozmowach kwalifikacyjnych. 

Pamiętam jak raz w pracy na ten problem kazali mi po prostu zainstalować paczkę NuGet "Flurl", która otacza HttpClienta i nie myśleć o tym, jakie on powoduje problemy.

Potem wiele miesięcy później zostałem postawiony przed pytaniem, dlaczego trzeba uważać na HTTPClienta w .NET i nie miałem na to dobrej odpowiedzi.

Myślisz sobie przecież to proste. Chce wykonać zapytanie HTTP do strony internetowej to co tworzę sobie instancje HTTPClient i wykonuje zapytanie. 

Zobaczmy co się stanie, gdy utworzę 20 instancji HTTPClient, który ma odpytać moją stronę.

GraphQLNr: 2 W poprzednim wpisie stworzyliśmy podstawowe API w GraphQL. Nasz sklep smoków jest na chwilę obecną bardzo prymitywny. Nasza smok nie zawiera w sobie złożonych typów. Nie zastosowaliśmy wzorca "Data Loader" w GraphQL, aby utrzymać strukturę zapytań. Na razie nasze API w sumie obsługuje tylko jedno zapytanie. Pobierz wszystkie smoki, które są na sprzedaż.

Jak dodać parametry do naszych zapytań w GraphQL?

Jak dodać autoryzację do swojej Schema.

Rozbudujmy więc nasze api.

GraphQLNr: 1 Co to jest GraphQL? Czyli jak można jeszcze lepiej zrobić Rest API? GraphQL został wymyślony aby osiągnąć lepszą elastyczność i efektywność pomiędzy interakcjami klient / serwer.

GraphQL w esencji jest językiem zapytań do twojego HTTP API. Warto zaznaczyć, że GraphQL jest tylko nakładką do twojego API, a raczej używając języka ASP.NET Core jest to Middleware.

To nie biblioteka, to nie produkt, to nie baza danych.

Ta nakładka jest alternatywą do tworzenia Rest API. Zobaczmy na rysunkach w czym jest problem i co rozwiązuje GraphQL.

GrapQL polega tym, że wysyłasz do klienta polecenie HTTP POST albo GET. W treści tego polecenia jest JSON, które informuje API co chcesz zrobić.

Czyli jeśli chcesz listę produktów to nie szukasz odpowiedniego adresu i metody w REST API. Zastanawiasz się jak napisać zapytanie w JSON aby tą listę produktów pobrać.

Middleware Na tym blogu były już artykuły na temat AutoMapper, Swagger UI, IServiceCollection. Co jeszcze jest potrzebne do aplikacji ASP.NET Core.

W sumie to jest to coś na czym złapałem się na swoich webinarach. Przechwycenie wyjątków w każdej metodzie Controler-ów wydaje się głupie. Napisanie kodu, w który nie wystąpią wyjątki jest niemożliwe.

Gdzie powinniśmy je przechwytywać tak, aby zapisać je później do logów.

Na pomoc przychodzi Middleware, który także rozwiązanie inny problem. W końcu wypadałoby przechwytywać wyjątek w jednym miejscu. Nie może być tak, że przechwytujesz wyjątek 5 razy i wyrzucasz go dalej.

EventDriven CQRS to jeden z najczęszczych wzorców projektów przy budowaniu aplikacji ASP.NET CORE. Fundament polega na oddzieleniu kodu, który odczytuje dane (Query) i na kod który te dane modyfikuje (Command).

Jeśli znasz operacje Create-Read-Update-Delete, to pomyśl o Query jako zapytaniach Read, a Command jako modyfikację, które Tworzą-Aktualizują bądź kasują dane.

Biblioteka MediatR, którą opisałem wcześniej, wspaniale przyspiesza pisania aplikacji CQRS z małym dodatkiem wzorca projektowego Mediator. Oczywiście stawiając pierwsze kroki z aplikacją CQRS, można popełnić błędy. Pamiętam jak ktoś, na moim pierwszym webinarze na temat CQRS zapytał wprost, czy Command może uruchomić kolejny Command.

Oczywiście jest to kiepski pomysł

Install Gdy aplikacja ASP.NET Core jest duża lub jest rozbita na wiele małych kawałków to wtedy warto zastosować wzorzec IServiceCollection. 

Pozwala to tobie rozbić definicje wstrzykiwania to kolejnych serwisów do osobnych klas bądź projektów w solucji. Pisząc złożoną aplikację ASP.NET Core, w którym momencie twoja klasa startup.cs urośnie.

Dlatego pisanie takich swoich rozszerzonych metod wydaje się nieuniknione. Spójrz na ten kod

Validate Nasze aplikacje ASP.NET CORE coraz częściej są tylko aplikacją REST. To oczywiście wymaga Walidacji po stronie klienta i po stronie serwera.

Jak taką walidację jak najszybciej zrobić. Może przecież sam napisać takie warunki, ale przy dużej ilości klas, które występują jako parametry mija się to z celem. 

Możesz też skorzystać z atrybutów i oznaczyć reguły do każdej właściwości.

Co, jeśli chcesz oddzielić logikę walidacyjną od samej klasy. Nie zastąpi to oczywiście dodawania adnotacji do encji w Entity Framework. Mówimy tutaj tylko przesyłaniu danych do serwera.

FluentValidation idzie Ci z pomocą. W tym wpisie też zobaczymy jak FluentValidation współpracuje z Swagger UI.

Swagger Programiści codziennie tworzą jakąś aplikację sieciową typu REST. Teraz nastaje pytanie, jak najlepiej zrozumieć jak dane API działa. Do tego mamy dokumentacje, ale jeśli pracujesz w szybkich, zamkniętych projektach to takiej dokumentacji może nie być.

Potem ktoś dziedziczy projekt i nie wie na co on patrzy.

Wypadałoby znać wszystkie metody, klasy typy zwracane, argumenty w danym API. Dołączyć do tego możliwość szybkiego uruchomienia danej metody z przykładami.

NLog Logowanie działania aplikacji. Jak wiedzieć w końcu, gdy coś nie działa. Mój blog jest napisany w C# i działa po ASP.NET CORE. Jak to jednak bywa z napisaną przez siebie aplikacją pojawiają się błędy więc do bloga dodałem mechanizm logowania błędów. W taki sposób znalazłem wiele dziwnych przypadków uszkodzonych wpisów w formacie XML, które rozwalały Parser. Znalazłem też źle zbudowaną przez ze mnie listę kursów. 

Poza tym w logach też widziałem jak ktoś próbował się nie raz włamać na bloga o 4 rano.

Logi są potrzebne nawet do taki projektów. W kontekście aplikacji produkcyjnych logi często są ostatnią deską ratunku, aby stwierdzić co nie działa dla pewnego dziwnego przypadku.

MailChimp W tym wpisie pokaże Ci co zrobiłem aby stworzyć swój własny newsletter na mojego bloga. Wybrałem MailChimp, ale wiesz mi próbowałem różnych rozwiązań, aby wybrać właśnie ten. Ten blog działa na ASP.NET Core 3.2 więc zobaczmy jak MailChimp API działa w C#?

Teraz każdy szanowany programista ma swój newsletter. No cóż, trzeba iść z duchem czasu, bo jeżeli chodzi o marketing programisty blog to zdecydowanie za mało. Jestem nawet świadomy, że newsletter to coś co powinien mieć jakieś 4 lata temu na moim blogu. 

Chociaż też warto zadać sobie pytanie po co Ci jest newsletter. Ma to sens, jeśli chcesz informować danego klienta o kampanii swojego produktu/kursu. 

Powiedzmy, że ktoś jest zainteresowany Twoim kursem programowania i poprzez newsletter nakręcasz go na zakup lu rozwiewasz jego wątpliwości.

Być może chcesz zaprosić paru użytkowników na cykl e-mail, w których zdradzasz jakiś sekret.

Dlatego o tym piszę? Słuchaj w roku 2020 (i później) zwykły newsletter o tym "co nowego na moim blogu" powoli nie wystarcza i warto się zastanowić po co Ci jest newsletter.  Istnieje nawet szansa, że informowanie swoich fanów o tym "co nowego na twoim blogu:" będzie skuteczniejsze w media społecznościowych niż poprzez newsletter.

Nie powiem, że zacząłem widzieć, że każdy blog programistyczny ma newsletter, ale posiadanie newsletter dla samego posiadania trochę mija się z celem.

Template1 Zawsze chciałem zrobić serię wpisów o Angularze i ASP.NET. W tym wpisie zobaczymy podstawowy szablon z Visual Studio, który ma łączyć świat Angular i ASP.NET CORE. Chociaż w tym wpisie będzie używał nazwy ASP.NET, ponieważ już niedługo słowo CORE nie będzie miało znaczenia wraz z pojawieniem się .NET 5.0, który scali środowiska. Jednak może zostajemy przy ASP.NET CORE. Słowa kluczowe w SEO to mój problem.

Tutaj też pojawia się moja obawa.

Taki wpis wymaga ode mnie pracy, a nigdy nie wiesz, kiedy coś się zmieni. Przynajmniej z tego, co widzę szablon Angulara z 2017 i z 2020 nie wiele się różnią poza tym, że szablon z 2020 roku został odchudzony.

To daje mi nadzieje, że jak czytasz to z przyszłości to ten wpis będzie użyteczny.

Świat ASP.NET się zmienia dosyć szybko, ale dobra wiadomość jest taka, że styl MVC wciąż w nim jest od 9 lat. Nie musisz się więc martwić, że ta wiedza pójdzie do kosza. 

Co do Angulara? Zrobiłem oddzielny wpis na temat jego historii (https://cezarywalenciuk.pl/blog/programing/co-to-jest-angular-historia-do-2020), ponieważ byłem ciekaw czy on ma gwałtowne zmiany w swoim kodzie. Odpowiedź brzmi : nie jest tak źle. Największa zmiana dotyczyła paczki @http, a tak pojawiają się tylko usprawnienia.

Mamy więc stronę serwerową : ASP.NET i mam także stronę kliencką Angular. Sprawdzimy podstawowy szablon z Visual Studio i hej może już programowałeś w tych technologiach wcześniej i chciałbyś zobaczyć co się zmieniło. 

Oto tematy w tym wpisie:

  • Co jest w tym szablonie
  • Jak wygląda back-end .NET CORE
  • Angular, czyli jak wygląda front-end

Najpierw stwórzmy ten szablon. Wybieramy projekt : ASP.NET Core Web Application.

Compression Ostatnio zacząłem się zastanawiać co mogę ulepszyć na swoim blogu. Pomyślałem od razu o SEO, czyli o pozycjonowaniu strony. Stworzyłem konto na serwisie skanującym mojego bloga i poza znanymi radami znalazłem fakt, że mój blog nie kompresuje jakichś danych.

Okazuję się, że od jakiegoś czasu przeglądarki wspierają kompresję danych przy każdym zapytaniu HTTP. Przeglądarki wysyłają pytanie do serwera czy dane mogą być skompresowane. Ty to przechwytujesz i wysyłasz spakowane dane.

Kompresja działa tak dobrze, że możesz obniżyć wielkość przesłanych danych do przeglądarki aż o 70%. 

To jest MEGA CUDOWNA zmiana, która nie tylko pomoże SEO twojej strony, ale także przyspieszy jej działanie dla użytkowników.

VsCode  W poprzednim wpisie dokonaliśmy fuzji aplikacji ASP.NET Core z Angular. Stworzyliśmy hybrydę aplikacji MVC  z SPA Angular. Jak podobny proces wyglądałby, gdybyśmy jednak chcieli do tego użyć Visual Studio Code.

Tym razem przy pomocy ASP.NET Core 2 stworzę aplikację REST, która zwróci mi listę gier. Angular pobierze te dane z usługi i wyświetli je na stronie.

Nie będę korzystał z gotowego szablonu ASP.NET Core 2 z Angular. Stworzymy wszystko od podstaw.

Fuzja Jako programista, który pracuje z najnowszymi trendami to oczywiste, że chcesz użyć Angular w swoich projektach ASP.NET.  Angular w przeciwieństwie do bibliotek jak jQuery wymaga wielu kroków. Czasy ściągania plików JS ze stron internetowych dawno minęły.

Te same kroki powinny działać nie tylko do aplikacji ASP.NET Core 2. Jest możliwe dołączenie Angulara do każdej aplikacji ASP.NET nawet do Web Forms. Ja jednak się skupię tylko na najnowszej odsłonie ASP.NET.

ASP.NET CORE ASP.NET Core w końcu grzebał się ze swojej wersji beta i istnieje w wersji 1.0.X. Czy warto się nim zainteresować? Na pewno, ponieważ wprowadza dużo zmian do frameworku ASP.NET MVC.

Udało się zebrać 11 powodów za tym frameworkiem, więc jest dużo zmian na lepsze. Z drugiej strony warto też pamiętać, że jest to wersja 1.0.X i ciężko stwierdzić czy framework dobrze by sobie poradził w środowisku produkcyjnym wielkiej firmy.

Moim zdaniem jednak warto zacząć swoją przygodę z programowaniem w ASP.NET Core, ponieważ ta technologia szybko dojrzeje i na pewno nie zostanie skasowana bądź zastąpiona czymś nowym.

Model RazorCzęść NR.4W poprzednim wpisie omówiliśmy jak ASP.NET MVC przy pomocy Routingu ustala, jaki kontroler powinien zostać użyty w zależności od adresu URL. W tym wpisie omówię kontrolery oraz rezultaty, jakie mogą być zwracane przez metody w kontrolerze. Omówimy krótko model oraz widok.

Mówiąc krótko po tym wpisie powinieneś zobaczyć, jak wszystkie elementy MVC ze sobą współpracują. 

RoutingCzęść NR.3 Nadszedł w końcu ten czas, aby na tym blogu napisać kurs o ASP.NET MVC. Wiem, że jest to kurs ASP.NET Core, ale przez większą cześć tego kursu będziemy mówili o ASP.NET MVC i o rzeczach, które już istnieją w starszych jego wersjach.

To co chcemy ostatecznie osiągnąć, to napisać aplikację WEB korzystając z ASP.NET MVC. W teorii jest możliwe stworzenie aplikacji ASP.NET używając tylko Middelware, ale po co wybierać taką trudna drogę.

MiddelwareCzęść NR.2 Najpierw zrozummy czym jest Middelware zanim przejdziemy dalej. W poprzednich wersjach ASP.NET zarządzania przepływami żądań HTTP nie było takie oczywiste i proste. Przykładowo w ASP.NET Web Form, które nie jest już wspierane przez Microsoft mieliśmy system zdarzeniowy, w którym łatwo można było się pogubić.

W ASP.NET Core proces przetworzenia żądania HTTP jest znacznie prostszy w obsłudze, jak się zaraz przekonasz.

Przykładowo wysyłamy żądanie strony poems poprzez adres URL. Gdy wpisujemy do przeglądarki adres strony,  wtedy najczęściej wysyłamy zapytanie HTTP typu GET. Jeżeli wypełniamy formularz będzie to żądanie typu POST.

Na razie nie ma to większego znaczenia. Co się dzieje z tym zapytaniem?

ASP.NET CoreCzęść NR.1 ASP.NET Core jest to nowy framework Microsoftu, który został zbudowany na nowo. Dlaczego został zbudowany na nowo? By był szybszy, bardziej elastyczny, nowoczesny i żeby działał na różnych platformach jak LINUX i OS X.

Skończyły się więc wymówki, by nie pisać w ASP.NET bo nie można tego uruchomić na Linux. ASP.NET Core jest frameworkiem z platformy .NET i będziesz go używał do tworzenia stron.

W tym kursie zbudujemy stronę internetową zaczynając od pustego projektu. W taki sposób, abym mógł  ci pokazać jak te wszystkie elementy ze sobą się łączą.

Zainstalujemy odpowiednie poboczne rozwiązania. Potem przyjrzymy się frameworkowi MVC.

JS MVCT4

Wcześniej omówiłem skrypt T4, który tworzy klasy na bazie kontrolerów ASP.NET MVC. Czy istnieje skrypt T4, który utworzy pomocniczy kod tylko po stronie JavaScript?

Na czym polega problem? Chodzi o ścieżki URL do akcji poszczególnych kontrolerów MVC.

Istnieje też problem z powtarzalnością kodu JavaScript wywołującym zapytania AJAX do serwera.

Taki skrypt istnieje i dzisiaj go omówię.

T4MVC W ASP.NET MVC w wielu miejscach podajemy informację o widokach, kontrolerach, skryptach JavaScript, stylach css pod postacią zwykłego napisu string.

Co prawda obecnie Visual Studio oferuje Intellisense co do tych odwołań, więc się nie pomylisz.

Jest to jednak wciąż zła praktyka.

#2 DataTable

W poprzednim wpisie zebraliśmy wszystkie pliki potrzebne do uruchomienia skryptu DataTable wraz ze stylami bootstrap.

Obecnie tabelka jest obudowana mechanizmem DataTable. Dzięki temu możemy filtrować i sortować dane po tej tabelce.

Tabelka ma jednak wpisane dane na stałe. Powstaje więc pytanie, jak dynamicznie dane przekazać do tabelki? Można to zrobić na wiele sposobów.

DebugCzęść NR.4 Potrafisz zbudować WEB API używając frameworka ASP.NET. Niestety to tylko początek. Po stworzenie WEB API musimy go przetestować. Wysyłać do niego żądania i sprawdzać wiadomości zwrotne

Istnieje parę narzędzi, które mogą ci pomóc w testowaniu twojego WEB API.

WebApiConfigCzęść NR.3 W poprzednim wpisie stworzyliśmy proste Web API. Z niego  możemy pobrać listę gier. Przykład z poprzedniego wpisu jest bardzo prosty,

Tak bardzo prosty, że nie poruszył kwestii konfiguracji API.

W tym wpisie nadpiszemy domyślne zachowanie frameworku ASP.NET WEB API. Zmienimy także ustawienia API w taki sposób, aby zwracała ona dane w formacie JSON dla każdej przeglądarki.

Web ApiCzęść NR.1Web API jest to aplikacja, która może być manipulowana przy użyciu protokołu HTTP. Protokół HTTP zawiera 4 metody (GET,POST,PUT,DELETE) i przy pomocy tych metod manipulujemy Web API. Protokół HTTP nie jest związany szczególnie z żadną platformą. Web API jest wykorzystywane przez wiele urządzeń z różnych platform.

Smart UI ASP.NET Web Forms i Visual Studio łatwo wprowadzają początkujących programistów w świat technologii webowych . Ktoś mógłby powiedzieć, że pisanie aplikacji w ASP.NET sprowadza się do przyciągania i upuszczania kontrolek do okna designer-a HTML. W ASP.NET każda strona HTML o rozszerzeniu pliku .aspx zawiera swój drugi plik z kodem pobocznym. W tym kodzie zawiera obsługę zdarzeń, dostęp do danych i logikę biznesową aplikacji.

Dla początkującego programisty te proste założenia znacznie przyspieszają naukę frameworka. Nie zmienia to jednak faktu, że ten domyślny styl programowania jest wadliwy i już dla średnio zaawansowanych aplikacji webowych tworzy następujące, poważne problemy.

XAML WstępZaktualizowałem system do Windows 8.1. Nie ma sensu robić długiej recenzji, ale dla przeciętnego użytkownika PC aktualizacja właściwie nie jest potrzebna. Obecnie dla mnie najważniejszych gadżetem Windows 8.1 jest odpicowana przeglądarka Internet Explorer 11 wraz z narzędziami developerskimi.

Pierwszy raz mam wrażenie, że to narzędzie jest na tyle intuicyjne by go używać zamiast FireBug w FireFox-ie lub Developer Tools w Chrome.

Bad RequestCałkiem niedawno w pracy napotkałem na dziwny błąd. Używam IIS Express do testowania własnej instancji DotNetNuke i z jakiegoś powodu z dnia na dzień przeglądarka Google Chrome zaczęła mi zwracać błąd “Bad Request – Request Too Lonq”. W aplikacji nic się nie zmieniło więc nie była to wina aplikacji.

SignalRPróbowałeś kiedyś napisać chat. Co ile sekund ma on wyciągać dane od serwera? Nie to z góry kiepski pomysł.

Lepszą techniką jest “long polling”. Otwieramy połączenie i utrzymujemy je otwarte zmuszając klienta (przeglądarkę) do czekania udając ,że dane połączenie rzeczywiście trwa długo.

Jeżeli połączenie jest zerwane wtedy połączenie jest otwierane ponownie po obu stronach(klient serwer). W przyszłość WebSockety  rozwiążą ten problem lepiej.

HightChartNowe bajery HTML 5 pozwalają na rysowanie złożonych zawartości bez użycia pluginów takich jak Flash czy Silverlight. Z punktu widzenia biznesowego prawdopodobnie chcielibyśmy w Canvas narysować jakiś wykres niż postać z anime.

Canvas i HTML 5 istnieją już od dłuższego czasu ,a to oznacza ,że już ktoś opracował gotowe biblioteki do rysowania takich wykresów.

JQuery

Po miesięcznej pracy nad Androidem w Eclipsie wróciłem do Visual Studio i ASP.NET. Po kilku godzinach pracy stwierdziłem ,że chyba zapomniałem jak się programuje. Do rozwiązania miałem prosty problem ,a ja uznałem ,że do jego rozwiązania jest potrzebny “UpdatePanel”. O to moja historia.

Zen Coding Po wpisie o “Less CSS” otrzymałem sugestie ,że powinien zainteresować się “Zen Coding”. Dlaczego nie? Pisanie div-ów trwa odrobinę za długo ,a Zen Coding to ciekawy sposób, który przyspieszy ten  proces wielokrotnie.

Zen Coding może być użyte  z Visual Studio dzięki dodatkowi Web Essentials.

UpdatePanelUpdatePanel to kontrolka, która w prosty sposób odświeża zawartości strony bez jej całkowitego przeładowywania. Jej popularność polega na tym ,że nie wymaga ona od programisty znajomości JavaScriptu, Ajax czy jQuery.

Zawartość jest zmieniana w C# po stronie serwera.

SessionJavaScript jest językiem klienckim i wywołuje się on po stronie przeglądarki.Naturalnie w JavaScript  nie możemy uzyskać dostępu do zmiennej sesyjnej  ASP.NET. Istnieją jednak pewne sposoby do uzyskania zmiennej sesyjnej i jej wyświetlenie po stronie JavaScript.

OfflineWpis ten jest wyjątkowo krótki. Jeżeli chcemy tymczasowo zablokować naszą witrynę tak aby użytkownik nie mógł uzyskać dostępu do jej zawartości nie musimy wcale dużo kombinować.

Nie potrzebujemy magicznego kodu w C# ,ani nie musimy modyfikować naszej strony w tym kierunku. Wiele osób odziwo o tym nie wie.Kosmita

ModuleStworzenie modułu w DotNetNuke nie jest takie proste ,a ta umiejętność jest esencją DotNetNuke. Istnieje wiele tutorialów opisujących jak  stworzyć moduł na DotNetNuka. Są nawet gotowe przygotowane wzory do tworzenia modułów.

Problem jednak polega na tym ,że te wzory mają w sobie dużo gotowych bajerów. Te bajery wymagają stworzenia odpowiednich procedur w bazie danych i tak dalej.

.RESXMechanizm lokalizacji dostępny w .NET  pozwala nam na stworzenie w łatwy różnej zawartości strony/aplikacji w zależności od kraju bądź kultury, w której użytkownik się znajduję.Edycja zawartości, jak i jej zarządzanie  jest dużo  łatwiejsze z plikami resx, nawet jeśli nie budujemy strony multi-językowej. 

jQuery W tym wpisie wytłumaczę jak uzupełnić kontrolkę rozwijanej listy przy użyciu jQuery i Ajax. Użyje metody strony ASP.NET (WebMethods) do przekazywania asynchronicznego informacji pomiędzy klientem i serwerem.

Dzięki użyciu rozwiązania WebMethods nie muszę deklarować oddzielnej usługi sieciowej .Co doskonalone zaspokaja specyficzne potrzeby istniejące tylko dla jednej strony ASP.NET.

Ajax Zwykle, gdy chcemy zrobić cokolwiek asynchronicznie w ASP.NET korzystamy z gotowego frameworku ASP.NET AJAX. Dzięki niemu mamy wciąż kontrole nad stroną używając tylko C# . Znajomość JavaScript i jQuery nie jest wcale wymagana w takich asynchronicznych scenariuszu.

Niestety takie rozwiązanie też ma swoje wady. ASP.NET AJAX nie jest wydajny. Jest on w końcu uniwersalny rozwiązaniem na problem asynchroniczności. Uniwersalność tworzy dużo kodu i procedur, które zwykle nie są potrzebne dla prostych rozwiązań.

ASP Roles W poprzednim wpisie stworzyłem proste uwierzytelnienie przy użyciu jednej klasy statycznej FormsAuthentication. Klasa w metodzie „FormsAuthentication.RedirectFromLoginPage” stworzyła ciasteczko użytkownika ,a w metodzie „FormsAuthentication.SignOut()” wylogowała wcześniej uwierzytelnionego użytkownika.

W teorii te proste funkcje wystarczają do stworzenia własnego systemu uwierzytelniającego, który polegałby tylko na wbudowanych mechanizmach zapisu stanu uwierzytelnienia ASP.NET.

DataPicker W aplikacjach web uzyskujesz różne informacje od użytkowników za pomocą textboxów i checkboxów. Często jednak musisz uzyskać informacje kalendarzowe od użytkowników, np. użytkownik w filtrowaniu rekordów danych w aplikacji web może użyć dat.

 

Jednak jak te dane uzyskać od użytkownika. Sprawa wydaje się prosta, wystarczy dać użytkownikowi textbox i dołączyć do niego jakąś prostą walidację. Tak, coś w tym stylu.

Wszystkie Kategorie