Moduł tabeli (TM – table module) jest również wzorcem proceduralnym (podobnie jak TS). Rozwiązuje jednak podstawowy problem TS – brak zdefiniowania metody podziału logiki biznesowej na klasy. W przypadku TS sam wzorzec nie określał ile klas należy stworzyć. Wszystko zależało od programisty. Mógł on stworzyć jedną klasę zarządzającą zarówno zamówieniami jak i produktami. Moduł tabeli mówi po prostu, że należy stworzyć osobną klasę dla każdej tabeli w bazie danych. Czyli w przypadku gdy mamy tabele “Orders...
Strona głównaUżytkownik
http://vveasel.myopenid.com/ | użytkownik
Architektura 5344 dni, 5 godzin, 43 minuty temu 86 źrodło rozwiń
Dzisiaj przyszedł czas na pierwszy wzorzec obiektowy – aktywny rekord(AR). Zaczynamy od diagramu klas: W przeciwieństwie do poprzednich wzorców, każda klasa definiuje fragment logiki biznesowej. Obiekty klas występują w relacji jeden do jednego względem wierszy w tabeli. Klasa Order będzie zawierała zatem logikę dla konkretnego zamówienia a nie dla zbioru zamówień. Klasy tworzymy zwykle dla każdej tabeli z bazy danych a ich instancje jak już wspomniałem dla każdego przetwarzanego wiersza. Warto po...
Architektura 5343 dni, 9 godzin, 51 minut temu 168 źrodło rozwiń
Artykuł omawiający przykładową implementację ONP (Odwrotna Notacja Polskia) w C#.
Natknąłem się na kolejną ciekawą parę wzorców. W odróżnieniu od poprzednio opisywanej, tym razem para ma charakter dwóch konkurencyjnych rozwiązań tego samego problemu. To dla mnie interesująca nowość: do tej pory wzorce kojarzyły mi się z podejściem: problem - rozwiązanie (+ konsekwencje). W tym wypadku problem ma dwa równorzędne rozwiązania (przynajmniej tak wynika z lektury rozdziałów). No i wydaje mi się, że z tą równorzędnością jest problem... Direct Authentication zakłada, że każda usługa przech...
Programowanie rozproszone 5597 dni, 22 godziny, 30 minut temu 29 źrodło rozwiń
Jest to wzorzec z grupy porządkujących logiczny warstwy inwentarza (?) [inventory] usług. Pozostałe dwa z tej grupy to Entity Abstraction i Process Abstraction. Wszystkie trzy wzorce pomagają zidentyfikować różne grupy odpowiedzialności w "kandydatach na usługi". Skutkuje to wydzieleniem współnych zakresów odpowiedzialności do nowych usług lub łączeniem usług odpowiadających za ten sam aspekt rozwiązania. Utility Abstraction zajmuje się konkretnie funkcjonalnością wykorzystywaną we wszystkich fragm...
Programowanie rozproszone 5596 dni, 11 godzin, 43 minuty temu 32 źrodło rozwiń
Chciałbym przybliżyć Wam dwa interfejsy związane z AJAX-em i ASP.NET a mianowicie IPostBackEventHandler oraz ICallbackEventHandler. W skrócie opiszę do czego możemy je wykorzystać i w jaki sposób.
Na wstępie chciałbym zaznaczyć, że w żadnym razie nie jestem ekspertem od DDD. Ja się wciąż i dopiero uczę i moje posty z serii "Mentoring DDD" są wyrazami tegoż procesu (samo)kształcenia. Dlaczego więc "mentoring"? Ano dlatego, że wspieram Domain Driven Design w mojej firmie poprzez konsultacje, pomoc duchową i cielesną. Staram się przewidywać problemyi zdobywać wiedzę na temat sposobów ich rozwiązania zanim się pojawią. Nie posiadam jednak (jeszcze) tej wiedzy w postaci przetworzonej w trwałe połączeni...
Architektura 5609 dni, 16 godzin, 44 minuty temu 80 źrodło rozwiń
Bartłomiej Szafko: O tym, że można wykryć czy .NET albo dowolny inny pakiet jest zainstalowany pisałem w jednym z poprzednich wpisów. Pisałem również, że z poziomu MSI nie można odpalać instalacji innych pakietów. Dzisiaj pokaże jak szybko stworzyć bootstrappera do plików MSI. W tym celu będę używał bootstrappera znanego z ClickOnce. Pierwszym krokiem jest wyedytowanie pliku .wixproj i ...
W zasadzie konkurs "Na najlepszy .... projekt", na portalu SourceForge.net trwa już od jakiegoś czasu, ale dzisiaj kolejna wersja Żółwika :) (TortoiseSVN) przypomniała mi o nim. Chyba wielu z nas korzysta z repozytoium Subversion (SVN) i klienta na platformę Windows: TortoiseSVN.Chyba warto docenić wysiłek autorów TortoiseSVN i zagłosować na to narzędzie w kategoriach "Najlepszy projekt" i "Najlepsze narzędzie dla programistów". Głosujmy więc!!
Dziś zajmę się dość powszechnym wydaje się problemem, a mianowicie tworzeniem dokumentacji dla oprogramowania. Zwykle owa dokumentacja powstaje dopiero pod koniec tworzenia oprogramowania, nie ma na nią za wiele czasu i oczywiście "chcemy to zrobić tak, by się nie narobić" :). W takim momencie chyba każdemu przychodzi na myśl wykorzystanie jakiegoś edytora (np. Microsoft Word lub OpenOffice Writer). Dlaczego? Bo łatwo i wiele osób wie jak Word'a obsługiwać, jak sformatować tekst, je...
Kolejny odcinek o Reflectorze i MVC, tym razem opowieść spod znaku "przecież to NIE MOŻE nie działać!". Oczywiście bezlitosna rzeczywistość twierdziła inaczej i jak zwykle w takich wypadkach bywa – to ona była górą. Zobaczmy cóż takiego się stało... Jak zwykle dla uproszczenia stworzę bezsensowny projekcik specjalnie pod ten scenariusz, aby każdy mógł w prosty sposób odtworzyć cały proces. Praktyki stosowane podczas implementacji wcale nie muszą być godne naśladowan...
Chyba każdy kto próbował tworzyć "programistycznie" dokumenty docx (z wykorzystaniem OpenXML Format SDK lub bez SDK) na pewno spotkał się z problemem, że nie wiadomo jakich elementów użyć i jak je poustawiać, by uzyskać oczekiwany efekt. Niestety w dokumentacji opisane są co oznaczają poszczególne elementy, ale brakuje przykładów lub dokładniejszych opisów ich wykorzystania. Na szczęście jest pewna pomoc, którą można wykorzystać. Przypomnijmy sobie jak zbudowany jest oparty o format Open XML? ...
“Reference in the manifest does not match the identity of the downloaded assembly MójProgram.exe.” no i klops. Zaczynając jednak od początku, projekt nad którym pracuję obecnie to solution z blisko 30-toma projektami, część w C# a część w VB.NET. Po podniesieniu VS2005 do VS2008 okazało się, że nie można opublikować nowej wersji za pomocą ClickOnce (używając programu MageUI). Jedyna rzecz, która się zmieniła to struktura plików sln i proj ponieważ Framework został bez zmiany (2.0) zatem gdzie leży proble...
Chyba każdy, kto pisał kiedykolwiek aplikacje wielowątkowe, które swoje wyniki prezentowały na kontrolkach WinForms spotkał się z następującym wyjątkiem: System.InvalidOperationException occurred, Message="Cross-thread operation not valid: Control 'MainForm' accessed from a thread other than the thread it was created on.", Source="System.Windows.Forms" Powyższy wyjątek pojawia się, gdy chcemy zmodyfikować zawartość kontrolki z innego wątku, niż ona została wytworzona. W prostszych słowach można powiedz...