Ten post jest pierwszym z cyklu poświęconego architekturze systemów informatycznych. Zaczynamy od wyjaśnienia pojęć logiki biznesowej i logiki aplikacji na przykładzie małej aplikacji ASP.NET MVC. Więcej na temat MVC w kolejnym artykule. Już teraz zapraszam. Uczestnicząc w dyskusjach zarówno w życiu zawodowym jak i wirtualnym spotykam się z myleniem wymienionych w tytule artykułu pojęć, bądź używaniem ich zamiennie...
Architektura 3663 dni, 2 godziny, 43 minuty temu 886 źrodło rozwiń
Jak wiemy Microsoft powołał projekt udostępnienia kodu źródłowego .NET-a. O czym można poczytać na tym blogu .NET. Są tam opisane szczegóły dotyczące motywów działania, jak i planów na przyszłość, które są obiecujące. Zachęcam do przeglądania tego udostępnionego kodu i nauki programowania poprzez podpatrywanie rozwiązań stosowanych przez kolegów z zespołu tworzącego .NET. Osobiście od jakiegoś czasu używam poniższych stron do badan...
W ASP.NET MVC do dyspozycji jest dość mało popularny atrybut Bind, który pozwala określić zachowanie bindingu pomiędzy modelem a widokiem. Załóżmy, że mamy następujący model:publicclass Person { publicstring FirstName { get; set; } publicstring LastName { get; set; } publicstring Email { get; set; } } Następnie napiszemy prostą akcję, zwracającą model do widoku:public ActionResult Create() { var person=new Person(); return View(person); } Widok stanowić będzie prosty formularz:@using ...
Dzisiejszy wpis o książkach, z których miałem okazję korzystać w ciągu ostatnich 12 miesięcy. Niektóre pozycje są warte polecenia, inne mniej, a niektóre w ogóle. Z książkami jest jeden podstawowy problem – bardzo szybko się starzeją...
Zapewne większość z Was miała do czynienia z aplikacjami pisanymi przy wykorzystaniu ASP.NET MVC. Zapewne pracowaliście nad jakimś projektem, im bliżej końca, tym co raz częściej wkradają się błędy, aplikacja jest na tyle duża, że łatwo wstawić przez przypadek do widoku jakieś duperele, jest mnóstwo resource’ów, które bardzo ciężko ogarnąć, mapowanie view-model to jakiś koszmar. Brzmi źle? Wcale nie musi tak być. Oto kilka porad (subiektywnych), w jaki sposób możemy uniknąć bałaganu:
Sztuka programowania 3946 dni, 1 godzinę, 14 minut temu 406 źrodło rozwiń
MVC)MJLeave a comment Dzisiaj krótki wpis, ale wydaje mi się, że wart uwagi. W zeszłym tygodniu po raz pierwszy miałem do czynienia z dodatkiem do VS 2012 – Razor Generator. I mówiąc szczerze – jestem bardzo pozytywnie zaskoczony. W wielkim skrócie jest to rozszerzenie umożliwiające kompilowanie plików .cshtml. W praktyce wygląda to w ten sposób, że pod widokiem znajduje się klasa o nazwie Widok.generated.cs. Przy każdej zmianie w widoku, następuje automatyczna zmiana w kodzie tej klasy, przez co nie je...
Quartz.NET to biblioteka, tzw. scheduler służący do cyklicznego wykonywania zadań. Z grubsza rzecz ujmując, konfiguracja pracy Quartz.NET sprowadzania się do tworzeniu obiektów job/trigger w celu uruchomienia określonego zadania (kodu) w zaplanowanym czasie. Do dyspozycji mamy pojedyncze (SimpleTriggerImpl dla danego DateTime) oraz cykliczne uruchamianie zadań (CronTriggerImpl w oparciu o wyrażenia cron, ang. cron expressions). Wizualizacja DateTime nie jest wyzwaniem. W Internecie można zna...
Co chwila w .NET zaskakuje mnie nowa rzecz. Na twarzy pojawia się uśmiech politowania, a w głowie myśl, "gdybym to ja wiedział wcześniej..." ;) Tak było z @Html.Action(...) (o tym jeszcze napiszę), tak jest teraz z MetadataType...
Wpis ma na celu przybliżyć różnice pomiędzy najbardziej popularnymi architektonicznymi wzrocami projektowymi.
Architektura 4097 dni, 1 godzinę, 4 minuty temu 1016 źrodło rozwiń
Piękno ASP.NET MVC polega na tym, że prawie wszystko można wymienić, zamienić, przetestować… tyle tylko, że Ci goście z Microsoftu uwielbiają internal-e. Wszysko co się da dają jako internal a może nawet więcej. No i tyle byłoby z testowalności, ale do rzeczy. Piszę własny ControllerFactory ale nie zupełnie od zera. Chcę standardowej funkcjonalności ale też chcę ładować jak pluginy z luźnych dll-ek. Nic prostszego, wystarczy trochę zmodyfikować DefaultControllerFactory i jeśli standardowe...
Introduction to MVC In the last few years a software architecture changed very heavily. From desktop (forms) application which were very popular in Windows XP users move to SOA and now completely start using web based solution hosting in a cloud. Of course such evolution is not something bad, just the opposite in my opinion because web based application are highly scalable, better secured and available from each place in the Earth where user has an Internet connection. Such a big changes in software ...
Almost in each modern website project one of the feature is suggesting user possible items to select when he start typing one of them. Such functionality is done by using control named autocomplete. Under the hood it consists of at least three elements:UI control which allow user to type some text - mainly this in HTML input of text typeServer-side function which serves data to be auto-completedClient-side logic (written in JavaScript) which , by using AJAX, send request to the server asynchronously and...
Ostatnio napisałem jak możemy odebrać pingback z innego serwisu/strony. Teraz pora na to byśmy my poinformowali inną stronę, że linkujemy do niej. Samo w sobie wysyłanie nie jest skomplikowane, jednak to kiedy wysłać pingback może stanowić nie lada problem. Na przykład dodajemy post, który ma się wyświetlić 30 kwietnia, kiedy więc powinniśmy wysłać pingback? Przy dodaniu? Nie da rady bo go jeszcze nie ma widocznego, przez co nie ma jak zweryfikować czy pingback pochodzi z naszego źródła. Przy pierws...
Co to jest pingback? Jest to rodzaj notyfikacji dotyczącej umieszczenia linku do danego źródła w tekście. Notyfikację tę my możemy zarówno wysłać jak i otrzymać. Dziś napiszę jak my możemy odebrać taki pingback i co musi zostać spełnione, zaś następnym razem opisze sposób wysyłania takiej notyfikacji. To co będziemy potrzebować (choć nie jest to konieczne) to biblioteka XML-RPC.NET – ułatwi nam ona znacząco implementację – gdyż komunikacja odbywa się poprzez XML-RPC, oczywiście dla hardcorów istni...
Jakiś czas temu dostałem w swoje ręce nowiutką "Pro ASP.NET MVC4" Apress'a. Znajdują się w niej działy 13 i 14 poświęcone routingowi. Są tam zaprezentowane ciekawe testy oraz podkreślone jest ich znaczenie w całej aplikacji. Nawet jeśli pomija się testowanie innych części, test routingu jest wręcz wskazany. Schematy URL mogą stać się szybko bardzo skomplikowane i łatwo jest o nagłe, nieoczekiwane i niepożądane zachowania. Ostatnio postanowiłem także bliżej zapoznać się z frameworkiem Nsubstitute. Jes...
W drugiej części artykułu o tym jak stworzyć własny MembershipProvider i RoleProvider rozpoczynamy od utworzenia w głównym katalogu projektu folderu o nazwie Infrastructure, a w nim dwóch plików: MyMembershipProvider.cs i MyRoleProvider.cs.
Artykuł omawia tworzenie własnego MembershipProvidera i RoleProvidera w ASP.NET MVC. Możemy oczywiście skorzystać z bazy ASPNETDB stworzonej przez Microsoft, ale warto się zastanowić czy jest to najlepszy sposób gdy mamy własne wyobrażenie tabel w bazie danych przechowujących użytkowników i role albo korzystamy z Entity Framework i Code First - wówczas do projektowanej bazy możemy dodać tabele z ASPNETDB, ale przy każdej zmianie którejś z klas modelu zostaną one usunięte jeśli dziedziczymy po klasie Drop...
Trochę wybranych informacji z tematyki tandemu ASP.NET MVC i HTML5. ASP.NET MVC do udostępniania danych zamiast WCF, jeszcze łatwiej używać danych JSON z poziomu klienta HTML/JSwłasny dependency resolver (np. oparty o Unity.MVC3 zapewniający odpowiednie disposowanie obiektów związanych z aplikacją web) //kontroler do udostępniania danych w JSON, nie dla widoku HTML/CSS public class DataServiceController: Controller { IAppointmentRepository _appointmentRepository; //zasilanie z IoC public DataServi...
Ciekawostka: jak uzyskać RouteData z czystego URLa? Nie taka prosta sprawa... Ale najpierw: po co? Tutaj odpowiedź banalna: aby umożliwić wykorzystanie opisanego niedawno mechanizmu w sytuacji, gdy mamy całą strukturę menu zdefiniowaną na zewnątrz aplikacji (np. w bazie danych). Struktura taka mogłaby zawierać wygodne pary kontroler/akcja (+ew. area) i wtedy nie ma problemu, ale jeśli jest inaczej - to trzeba się uciec do tematu niniejszego posta.
Kompilowanie widoków zaoszczędza dużo czasu na sprawdzanie poprawności działania aplikacji. Niestety sam proces kompilacji wydłuża się i to znacznie. Dlatego szukałem sposobu, aby można było kompilować wybiórczo: z widokami lub bez. Niestety nie ma prostego przełącznika w Studio ani wbudowanego skrótu klawiaturowego. Na szczęście trafiłem przypadkiem na stary już post pewnego Marka J. Millera, gdzie zwyczajnie pokazuje jak uzależnić kompilację widoków od konfiguracji trybu kompilacji. Studio skompiluje w...