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...
Strona głównaUżytkownik
Damian | użytkownik
Architektura 5333 dni, 19 godzin, 23 minuty temu 81 ź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.
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ć...
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 5341 dni, 22 godziny, 20 minut temu 98 ź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.
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 5343 dni, 2 godziny, 16 minut temu 633 źrodło rozwiń
Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET. Dzisiaj powiemy sobie o używaniu tkz. skórek, motywów. Jak zdefiniować różne typy wyglądu strony które później możemy wykorzystywać w zależności od upodobań użytkownika czy też narzuconych przez nas zasad. Można oczywiście zdefiniować na poszczególnych stronach oddzielne wyglądy itd. ale jest to podatne na błędy i byśmy powielali kod. Tutaj z pomocą przychodzą nam właśnie tytułowe “tematy” ;) Motywy poprawiają spójność naszej witryny, zaosz...
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:
Może nas czasami najść ochota na nazwanie jakieś zmiennej czy klasy słowem kluczowym, zarezerwowanym w C#...
Ten artykuł pochodzi z serii przygotowań do egzaminu 70-503: Windows Communication Foundation. A co jeśli mamy serwis, który nie ma nic wspólnego z WCF’em? Nie ma najmniejszego problemu, żeby takie serwisy wykorzystać w aplikacji klienckiej. Taki standardowy serwis udostępnia nam tylko definicję w postaci WSDL, odpada więc tworzenie klas proxy przez ChannelFactory lub ręcznie. Zostaje nam tylko użycie polecenia svcutil lub dodanie referencji serwisu do projektu w Visual Studio.Standardy Tak jak w przypad...
Programowanie rozproszone 5349 dni, 23 godziny, 33 minuty temu 32 źrodło rozwiń
Xna ze względu na wykorzystanie na Windows Phone Series staje się automatycznie coraz bardziej atrakcyjną platformą do tworzenia aplikacji. Przy okazji ogłoszeń na MIX10 coraz więcej osób związanych z rozwojem tej technologii wyeksponowało swoje nazwisko. Warto śledzić co piszą w sieci, znalazłem parę interesujących odnośników do ich blogów: http://blogs.msdn.com/shawnhar/ – Shawn Hargreaves – deweloper w grupie Xna, polecam jego prezentację na MIX10 na ...
Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET. W dzisiejszej lekcji mowa będzie o dwóch rzeczach a mianowicie: Master Pages oraz Content Pages.Czym jest Master Page Najprościej mówiąc Master Page jest to jakaś główna część naszej strony, która pozostaje niezmienna, w której możemy umieścić jakąś wspólną funkcjonalność strony. Np. layout, który ma jakiś top, stopkę i menu. Wrzucamy to w master page bo jest to część która nie zmienia się na naszej stronie. Wymienny jest tylko środek layou...
Co jakiś na różnych forach, grupach dyskusyjnych, blogach, zebraniach czy przy okazji jakiś wykładów przewija się temat wyższości jednego języka programowania nad drugim. Częstym argumentem w tej "konstruktywnej" debacie jest wydajność tych języków w przypadku kawałków kodów, które powinny robić mniej więcej to samo. Jednak czy robią to samo, w ten sam sposób?
Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET. Śledzenie stanu użytkownika, przechowywanie jego danych jest bardzo ważnym elementem w naszych aplikacjach. Nie jest to oczywiście problem tylko aplikacji webowych ale również “okienkowych” ;) My jednak dzisiaj skupimy się na rozwiązaniach dla pierwszego typu oprogramowania ;) A konkretnie omówimy sobie następujące mechanizmy: View state, Hidden fields, Cookies oraz Query string. Są dwa sposoby na zarządzanie informacjami. Wszystko możemy ...
Ten artykuł pochodzi z serii przygotowań do egzaminu 70-503: Windows Communication Foundation. Wiemy już jak utworzyć serwis w WCF, oraz jak go hostować. Teraz musimy nauczyć się jak z nich korzystać – konsumować. Zaczniemy od omówienia mechanizmów tworzenia obiektów proxy, oraz jak przez nie porozumiewać się z naszą usługą.
Programowanie rozproszone 5347 dni, 16 godzin, 57 minut temu 71 źrodło rozwiń
Pod jednym z moich ostatnich postów pojawił się komentarz zawierający m.in. taką treść: "Chyba potrzebuję mentora, który mógłby rzucić temat, a następnie sprawdzić jego realizację. Czy znajdzie się jakiś chętny? (...) nauka przez fun tworzenia. Ale czy to aby dobra droga?" Za mentora się bynajmniej nie uważam, ale pomyślałem - co tam, może być ciekawe doświadczenie. Kilka miesięcy temu podobny tekst wyczytałem na forum CodeGuru - wówczas też zgłosiłem się na ochotnika do takiej roli. Ale temat umarł po d...
Nowoczesne aplikacje web’owe często wymagają obsługi wielu języków. Silverlight podobnie jak ASP .NET wspiera mechanizm globalizacji za pomocą zasobów (resources files). Pliki zasobów są tak naprawdę zwykłymi plikami XML. Stanowi to ogromną zaletę – za pomocą zewnętrznego narzędzia odpowiednie osoby mogą przygotować tłumaczenie interfejsu. Najpierw należy stworzyć główny plik zasobów. Zawiera on tłumaczenia dla domyślnego języka. W przypadku gdy użytkownik pochodzi z kraju, którego język nie jest obsłu...
Silverlight 5348 dni, 17 godzin, 35 minut temu 60 źrodło rozwiń
W ubiegłym tygodniu odbyła się w Las Vegas wielka coroczna konferencja MIX. Mój ziom JJ miał okazję znajdować się właśnie tam już drugi rok z rzędu. Nasze zeszłotygodniowe konwersacje skłoniły mnie do poważniejszego zastanowienia się nad konferencjami programistycznymi... oraz sensem fizycznego udziału w tych wydarzeniach. Efekt owych rozmyślań przedstawiam poniżej.
Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET. W poprzednim wpisie zostały opisane mechanizmy zarządzania stanem aplikacji po stronie klienta. Natomiast dzisiaj, przeczytasz o sposobach utrwalania stanu aplikacji po stronie serwera. Czasami bywają sytuacje, w których przechowywanie stanu aplikacji po stronie klienta jest złym rozwiązaniem. A to ilość danych przesyłanych do klienta jest zbyt duża, a to ze względów bezpieczeństwa dane lepiej nie powinny być przesyłane przez Internet lub p...
Na codeplex jest świetny projekt autorstwa Kenta Boogarta pozwalający na definiowane konwerterów w XAMLu.