Możliwość używania delegatów w C# to fajna rzecz. Przyjemne jest zwłaszcza definiowanie ich "w locie", czyli bez konieczności tworzenia zupełnie nowej funkcji. Takiego delegata nazywamy wówczas anonimowym:
Strona głównaUżytkownik
sp33d | użytkownik
WiX: Tworzenie logów - problem i rozwiązanie
Implementując warstwę biznesową za pomocą DomainModel lub ActiveRecord uzyskujemy bardzo rozdrobniony interfejs. Ponadto stworzone obiekty biznesowe zawierają logikę odnoszącą się tylko do konkretnej encji. W poprzednich postach pokazałem prostą klasę Client, implementującą wzorzec DomainModel. Przedstawiona klasa mogła wykonywać tylko operacje dla konkretnego, jednego klienta. W systemie jednak często będziemy musieli brać pod uwagę zbiór encji. Przykładowo może być potrzeba zwrócenia zbioru klientów, d...
Architektura 5334 dni, 11 godzin, 52 minuty temu 633 ź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.
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 5333 dni, 7 godzin, 56 minut temu 98 źrodło rozwiń
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...
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...
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 5333 dni, 4 godziny, 11 minut temu 89 źrodło rozwiń
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 5332 dni, 6 minut temu 33 źrodło rozwiń
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:
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ć...
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 5331 dni, 3 godziny, 30 minut temu 105 źrodło rozwiń
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 5330 dni, 51 minut temu 26 źrodło rozwiń
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...
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...
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...
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.
Oryginalny post: The Rise and Fall of Homo LogicusAutor: Jeff Atwood Pośród całej apodyktycznej dumy, którą zaobserwowałem wśród programistów, prawdopodobnie największym grzechem ze wszystkich jest to, iż uważamy siebie za typowych użytkowników. Obsesyjnie używamy komputerów, wiele wiemy o tym jak one działają, nawet udzielamy rad przyjaciołom i rodzinie. Jesteśmy ekspertami. Któż mógłby lepiej zaprojektować oprogramowanie niż my? Większość programistów nie zdaje sobie sprawy z tego, jak bardzo odstaj...
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 5327 dni, 23 godziny, 55 minut temu 40 źrodło rozwiń
Ten artykuł pochodzi z serii przygotowań do egzaminu 70-503: Windows Communication Foundation. Mechanizm śledzenia (ang. tracing), wykorzystaywany w WCF oparty jest o klasy, które możemy znaleźć w przestrzeni nazw System.Diagnostics. Zakładamy, że mamy pewną aplikację, która dostarcza informacje na swój temat, mamy też coś, co jest zainteresowane otrzymywanie informacji o tym, co aplikacja robi. To coś, co nasłuchuje to tak zwany listener, a może nim być aplikacja konsolowa, okienkowa, dziennik zdarzeń (...
Programowanie rozproszone 5325 dni, 45 minut temu 53 źrodło rozwiń