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ę.

T4MVCW 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 boostrap.

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 lokalizacja 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.