Autor: Ostatnio mam trochę zaległości, więc i ten news już trochę opóźniony, ale jeśli ktoś jeszcze nie wie, to jakiś czas temu uruchomiony został nowy agregator blogów związanych z technologią .NET, a mianowicie: "dotNetNews.pl - nowości ze świata .net". Autorzy nowego portalu wiedzą, że istnieją podobne dostępne aplikacje, ale tą wyróżniać ma lepsze porządkowanie wiadomości pod względem czasu. Autor portalu w ramach wstępniaka pisze: "Brak uporządkowania pod względem dat powoduje, że osoba, która oder...
W dzisiejszym wpisie pojawi się pierwszy z trzech artykułów opisujących sposoby dostępu do danych. Na pierwszy ogień pójdą niewymagającego aktywnego połączenia z źródłem danych, następnie w środę pojawi się artykuł o klasach wykorzystujących aktywne połączenia, a na koniec w piątek pojawi się artykuł o pracy z plikami xml. Ale zanim przejdziemy to omawiania poszczególnych zagadnień z dzisiejszej lekcji, to napiszę jak w łatwy sposób sprawdzać sobie afekt naszych poczynań. Aby w łatwy sposób wyświetlić da...
W poprzednich postach przedstawiłem wzorce projektowe warstwy biznesowej: skrypt transakcji (transaction script), moduł tabeli (table module), aktywny rekord (active record) oraz model domeny (domain model). Napisałem, że dwa ostatnie wzorce posiadają bardzo rozdrobniony interfejs i nie nadają się bezpośrednio do użycia w rozproszonej aplikacji. Dla przypomnienia, AR oraz DM polegają na stworzeniu klasy dla każdej (lub prawie każdej w przypadku DM) tabeli w bazie danych. Przykładowo system sprzedaży posi...
Architektura 4677 dni, 21 godzin, 32 minuty temu 81 źrodło rozwiń
Dzisiaj spróbujemy stworzyć pierwszy workflow. Co prawda, nic praktycznego nie będzie wykonywał, ale pokaże kilka mechanizmów, które można wykorzystać w workflow. Zasada działania przykładowego workflow wzorowana jest na przykładzie z MSDN:Jako parametr wejściowy podajemy liczbę całkowitą,Workflow sprawdza wartość liczby. Jeśli jest mniejsza niż 2000, kończy działanie wysyłając e-mail. W przeciwnym razie, wymagana jest akceptacja wprowadzonej wartości. Użytkownik musi po prostu wywołać pewnie zdarzenie –...
Autor: "Na początku przygody z Inversion of Control, a także dość długo później, moje wykorzystanie dostępnych kontenerów ograniczało się właściwie do ręcznego zarejestrowania wszystkich interfejsów, wszystkich interesujących mnie implementacji oraz zdefiniowaniu zależności w postaci parametrów konstruktora. Działało. Ostatnio korzystając z okazji postanowiłem podejść do problemu inaczej. Moim celem było zminimalizowanie czynności prowadzących do uzyskania żądanego efektu - "minimum friction development...
Architektura 4678 dni, 22 godziny, 48 minut temu 158 źrodło rozwiń
LINQ jest potężnym rozszerzeniem .NET, umożliwiającym nam wykonywanie zapytań na kolekcjach obiektów co za tym idzie wybranie elmentu o ID 10 z kolekcji procownicy, staje się banalnie proste. Jednakże by LINQ zadziałało to musi istnieć jakiś provider, który przetłumaczy dane zapytanie na określony język - LINQ2SQL, LINQ2nHibernate itp. itd. Takich rozszerzeń jest masa i Charlie stara się trzymać ich listę up-to-date. Czy są to wszystkie aktualnie dostępne providery? Na pewno nie, jednakże lista jest pok...
Bazy danych i XML 4680 dni, 16 godzin, 28 minut temu 37 źrodło rozwiń
Istnieje parę rozwiązań pozwalających na realizacje CI dla projektów .NET . Duża ich część jest normalnie płatnym oprogramowaniem, często są dostępne też darmowe wersje demo.
Omawiając warstwę biznesową wydaje mi się, że warto wspomnieć o technologii WWF. Kilka postów wcześniej pisałem o tzw. silniku reguł biznesowych. Chodziło o zdefiniowanie reguł oraz przepływu informacji w systemie. Jako przykład można podać wysyłanie zamówienia. Proces składa na pewno z kilku etapów takich jak aktualizacja bazy danych, wysłanie e-mail’a z potwierdzeniem do klienta oraz np. wywołanie metody usługi sieciowej (może to być WCF magazynu). Po kilku miesiącach może okazać się, że scenariusz ni...
Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET. Dzisiaj porozmawiamy sobie o podstawach javascript, o bibliotece Microsoft AJAX, pokażemy jak użyć jej po stornie klienta do kontroli serwera :)Tworzenie własnego skryptu Istnieją trzy podstawowe “modele” definiowania skryptów:zdefiniować kod skryptu po stronie klienta na stornie sieci WEB, lub atrybut odniesienia do gotowego pliku (.js) . użyć klasy ClientScriptManager do dynamicznego definiowania skytpów. użyć kontrolki ScriptManager do z...
ILMerge – dołączanie zewnętrznych bibliotek Rzadko kiedy przy dużych przedsięwzięciach zdarza się trzymanie całego kodu w jednym projekcie (używam tu nomenklatury Visual Studio: solution/project). Duże części kodu używanego w wielu miejscach mogą zostać wydzielone do odrębnych assemblies (tłumaczenie tego słowa jako “zgromadzenie” nie jest zbyt fortunne, dlatego nie będę się bawił w słowotwórstwo i pozostanę przy angielskiej nazwie). Również typowa aplikacja .NET składa się z assembly wykonywalnej (zawi...
Ten artykuł pochodzi z serii przygotowań do egzaminu 70-503: Windows Communication Foundation. Jak zapewne zauważyliście z wcześniejszych lekcji, siła WCFa pochodzi między nimi z możliwości zmiany parametrów “transmisji” bez zmiany ani jednej linijki kodu, rekompilacji, … Od tego mamy przecież plik konfiguracyjny. Możemy sobie napisać jedną aplikację, którą będziemy używać w wielu instancjach jednocześnie i wcale nie będą sobie przeszkadzać. O tym było w poprzednich lekcjach. Dziś pokażę jak stworzyć so...
Programowanie rozproszone 4682 dni, 17 godzin, 24 minuty temu 22 źrodło rozwiń
Ostatnio poznaję kontener DI Autofac i baaardzo mi się on podoba - nie tylko nazwa, funkcjonalność także. Ten post rozpoczyna paczkę kilku ciekawych (mam nadzieję:) ) postów pokazujących, jak przy pomocy Autofac zbudować "samoskładającą się" aplikację.
Architektura 4683 dni, 20 godzin, 3 minuty temu 105 źrodło rozwiń
W celu wyjaśnienia zasady działania asynchronicznych stron, najpierw przyjrzyjmy się jak wygląda standardowe zapytanie do serwera. Klient wysyła żądanie HTTP do serwera np. typu GET w celu uzyskania danej strony www. Następnie serwer używa tzw. puli wątków (thread pool). Po prostu przydziela wątek z puli każdemu nadchodzącemu żądaniu. Tworzenie (a raczej odtwarzanie) wątków z puli jest szybkie (o tym już pisałem kiedyś), jednak liczba wątków jest ograniczona. W przypadku gdy serwer będzie musiał obsłużyć...
Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET. W dzisiejszym wpisie opowiemy sobie o tworzeniu interaktywnych formularzy za pomocą wbudowanych kontrolek AJAX. Wprowadzenie do ASP.NET AJAX Używanie AJAX na naszych stronach ma na celu polepszenie obsługi strony, stworzenie jej bardziej elastyczną itp. W ASP.NET dostajemy kilka możliwości obsługi AJAX’a. Którą z nich wybierzemy zależy od tego, czego w danej chwili potrzebujemy. Poniżej elementy, dzięki którymi możemy obsługiwać ajax w asp:
Ten artykuł pochodzi z serii przygotowań do egzaminu 70-503: Windows Communication Foundation. Konfiguracja punkty wyjściowego (ang. endpoint) po stronie klienta przypomina tą, którą określa się w serwisie. Tak zwane ABC konfiguracji serwisu to address, binding, oraz contract. Konfiguracja może zostać przeprowadzona w sposób deklaratywny – z wykorzystaniem plików konfiguracyjnych, lub imperatywnie – przez kod. Przykładowa deklaracja w postaci znaczników XML: 1: W C# będzie to wyglądało następująco: 1...
Programowanie rozproszone 4684 dni, 16 godzin, 39 minut temu 29 źrodło rozwiń
W poprzednim poście opisałem wzorzec repozytorium. Jak już wspomniałem, repozytorium może różnić się implementacją w zależności od encji. W skrajnych przypadkach może być jedno repozytorium na jedną encję (Order – OrderRepository, Product – ProductRepository itp). Tworzenie każdego repozytorium ręcznie w zależności od przetwarzanej encji jest dość niewygodne. Przydałby się jakiś globalny mechanizm na tworzenie obiektów na podstawie typu encji. Dobrym rozwiązaniem problemu jest implementacja wzorca serv...
Architektura 4685 dni, 20 godzin, 44 minuty temu 89 źrodło rozwiń
Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET. Web Parts są komponentami z częścią funkcjonalności, które można osadzić na stronie i zarządzać nimi. Web Party dają użytkowników swobodę w zarządzaniu wyglądem strony (głównie elementami funkcjonalnymi jakie znajdują się na stronie). ASP.NET posiada zcentralizowany mechanizm do zarządzania obsługą Web Partów. Klasy związane z Web Partami znajdują się w przestrzeni nazw System.Web.UI.WebControls.WebParts. Najważniejsze elementy z tej przest...
Xna 4.0 – kosmetyczne zmiany w konstrukcji projektu Jeśli mamy jakiekolwiek doświadczenia z Xna tworząc nowy projekt nie powinniśmy się zdziwić, ale za to raczej w większości z nas docenimy kosmetyczne zmiany w organizacji projektu. Moim zdaniem pomocne w poprawieniu przejrzystości projektu. Po pierwsze referencje. W Xna 4.0 jest więcej Assemblies rozbitych z poszczególną funkcjonalnością. Przy istniejącym projekcie z poprzednich wersji jest to jedna z rzeczy, która na dzień dobry nie pozwoli nam skompi...
Jak już wspominałem kilka postów temu, ponowna lektura części Strategic Design z książki Erica Evansa pomogła mi usystematyzować swoją aktualną wiedzę na temat DDD. Dziś chciałbym się z Wami podzielić dalszą częścią mojego odkrycia. Warstwa możliwości (capabilities) świetnie nadaje się do tworzenia encji warstwy operations. O co chodzi? Jakiś czas temu Udi Dahan pisał o tym, że nie powinniśmy tworzyć korzeni agregatów. Jego post wykorzystuje przykład sklepu internetowego. Za...
Architektura 4686 dni, 29 minut temu 95 źrodło rozwiń
Data końca projektu jest dla freelancera bardzo ważna. To dzień, w którym może świętować swój, bądź co bądź, sukces. To dzień, po którym może zacząć czytać nową książkę. Dzień, po którym wreszcie może pograć na komputerze. W oczekiwaniu na zapłatę wyjść na browar czy do kina. Albo planować kolejny projekt. Ostatni dzień kawowo-redbullowo-bezsennego maratonu.