W poprzedniej części zapoznaliśmy się z pojęciem "mock". Dzisiaj krok po kroku napiszemy pierwszy test jednostkowy z wykorzystaniem ASP.NET MVC, nUnit oraz RhinoMocks. Do dzieła.
Strona głównaUżytkownik
Paweł Łukasik | użytkownik
Obsługa zasobów aplikacji na platformie .NET jest bardzo prosta, zwykle wykorzystywany jest element typu "Resource", który można dodać do projektu, a następnie można przechowywać "w nim" różne inne elementy, jak: napisy, obrazki, ikony lub inne pliki. Wspomniany element typu Resource do obsługi zasobów, które są przez niego obsługiwane wykorzystuje klasę System.Resources.ResourceManager, dodatkowo tworzy on plik z kodem (np. w c#), który w sposób automatyczny udostępnia wybrane zasoby. Czasami wygodniej...
Pierwszy post z cyklu przygotowania systemu do wykorzystania mocków przy testach jednostkowych.
Architektura 5630 dni, 20 godzin, 9 minut temu 88 źrodło rozwiń
W jaki sposób pokonać ograniczenia standardowego protokołu inwentarza usług, nie łamiąc przy tym zgodności ze standardami? Wzorzec Canonical Protocol zaleca wykorzystania jednego, standardowego, protokołu do komunikacji między usługami w ramach jednego inwentarza. Domyślnie oczywiście, protokołem tym są jakiegoś rodzaju usługi webowe (Basic WS, WS-*, REST), jednak nie jest to twarde wymaganie. Niezależnie od wyboru standardowego protokołu, mogą zdarzyć się sytuacje, kiedy jest on z jakichś przyczyn ni...
Programowanie rozproszone 5630 dni, 20 godzin, 9 minut temu 28 źrodło rozwiń
Jedną z nowości która ukazała się przy okazji wydania najnowszej wersji Silverlight 3.0 jest budowa prototypu aplikacji przy pomocy tzw. SketchFlow (w wolnym tłumaczeniu "szkic przepływu"). Taka możliwość pojawiła w dzięki wydaniu nowej wersji programu Expression Blend 3, która to wspiera tworzenie tego typu aplikacji. W niniejszym artykule spróbuje opisać podstawowe funkcje jakie daj nam to rozwiązanie, zbudujemy prosty prototyp aplikacji oraz wygenerujemy dla niego dokumentację. Ale o co tu chodzi? ...
Przygotowanie serwisu dla systemu operacyjnego Windows jest przy użyciu Visual Studio (VS) bardzo proste. Wystarczy tylko utworzyć nowy projekt na podstawie szablonu "Windows Service" lub do istniejącego projektu dodać nowy element typu "Windows Service". Następnie należy zaimplementować metody...
Programowanie rozproszone 5631 dni, 21 godzin, 12 minut temu 180 źrodło rozwiń
Maciej Aniserowicz: Drugi raz w ciągu kilku dni przytrafiły mi się kłopoty podczas wykorzystania metody Convert.ChangeType(). Scenariusz jest bardzo prostu: mam wartość pobraną skądś-tam (baza danych, http request czy cokolwiek innego) reprezentującą znany mi typ, jednak przechowywaną w postaci stringa. Wszystko śmigało jak trzeba dopóki traktowałem w ten sposób zwykłe liczby i daty. Jakiś czas temu wpadł mi tam Guid, co skończyło się wyjątkiem InvalidCastException. Teraz z kolei to samo p...
Mono to otwarta implementacja środowiska .NET tworzona przez Novella – działa na linuxach i mac os. Z ostatnich wiadomości: Microsoft obiecał, że nigdy nie będzie ścigał projektu mono o licencję, można przeczytać o tym na blogu Miguela, to może umocnić pozycję tego projektu, do tej pory niespecjalnie było wiadomo czy MSFT pozwie novella i zmusi do zamknięcia, więc raczej nie pod...
W jaki sposób rozwiązanie oparte o usługi może dostarczyć interaktywny interfejs użytkownika? Rozwiązaniem jest specjalna usługa Mediatora, która jest umieszczana pomiędzy kodem interfejsu użytkownika, a rzeczywistą usługą dostarczającą funkcjonalności biznesowej. Mediator jest odpowiedzialny za dostarczanie użytkownikowi informacji o stanie zainicjowanego przez niego procesu oraz o wszelkich zdarzeniach występujących w trakcie jego działania. Mediator może być zrealizowany na dwa sposoby: jako sp...
Programowanie rozproszone 5639 dni, 23 godziny, 56 minut temu 40 źrodło rozwiń
W jaki sposób usługa bezstanowa może brać udział w interakcjach wymagających przechowywania stanu? Rozwiązaniem (jednym z wielu możliwych) jest przesyłanie informacji o stanie w wymienianych przez usługę komunikatach. Tradycyjne rozwiązanie problemu polega na przechowywaniu stanu w instancji usługi. Jego słabą stroną jest blokowanie zasobów serwera (głównie pamięci) przez tymczasowo nieaktywne instancji usługi czekające na dalszy ciąg interakcji. Jeśli nie możemy zrezygnować z przechowywania stanu ...
Programowanie rozproszone 5642 dni, 21 godzin, 34 minuty temu 24 ź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 5639 dni, 23 godziny, 56 minut temu 32 źrodło rozwiń
Artykuł omawiający przykładową implementację ONP (Odwrotna Notacja Polskia) w C#.
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...
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 5641 dni, 10 godzin, 42 minuty temu 29 źrodło rozwiń
To właściwie dwa wzorce: Capability Composition oraz Capability Recomposition. Pierwszy z nich rozwiązuje problem usługi, która w celu wykonania swojego zadania potrzebueje logiki, która nie mieści się w jej zakresie odpowiedzialności. Aby problem rozwiązać, można poszerzyć zakres odpowiedzialności usługi, jednak prowadzi to do duplikacji logiki. Innym, lepszym i poprawnym, rozwiązaniem jest włączenie wywołania innej usługi jako elementu realizacji logiki tej pierwszej. Właściwie wydaje się to zup...
Programowanie rozproszone 5644 dni, 4 godziny, 51 minut temu 16 źrodło rozwiń
Postanowiłem robić notatki z książki. Może kogoś zachęcą lub zniechęcą do czytania. Celem wzorca Service Facade jest zmniejszenie powiązania między kontraktem usługi, a jej logiką. Oczywiście logiczne powiązanie logiki do kontraktu jest zjawiskiem jak najbardziej pozytywnym (powiązanie odwrotne jest negatywne, skutkuje zwykle wyciekiem technicznych szczegółów logiki do kontraktu i często jest wynikiem automagicznego generowania WSDL-a z kodu). Czasami jednak zmniejszenie stopnia powiązania logiki do k...
Programowanie rozproszone 5643 dni, 15 godzin, 8 minut temu 46 źrodło rozwiń
Wzorzec memento pozwala na przechwycenie stanu obiektu i zachowanie go gdzieś na zewnątrz tego obiektu, dzięki czemu może być on później odtworzony....
Architektura 5654 dni, 4 godziny, 9 minut temu 220 źrodło rozwiń
Jak w większości systemów budowanych w oparciu o DDD, tak i w naszym natrafiliśmy w końcu na problem poprawności obiektów modelu domeny. Na samym początku ograniczyłem się do przekazania programistom informacji, że dobry obiekt modelu powinien być zawsze poprawny. Pomyślałem, że jest to dobre pierwsze przybliżenie. Szczegółami zajmiemy się później. Szczegóły te miały, według moich przewidywań, dotyczyć walidacji zależnej od kontekstu, która sprawia, że Jeffrey Palermo nie wierzy w zasadę "always valid"....
Architektura 5650 dni, 18 godzin, 26 minut temu 63 źrodło rozwiń
Regiony w Visual Studio to byt bardzo przydatny. Biorąc je za pewnik – bardzo łatwo lekceważyć ich wkład w organizację i przejrzystość kodu. Szczególnie mocno docenia się je, gdy przyjdzie korzystać z IDE które ich nie oferuje. Kilka lat temu musiałem napisać projekt w Javie i, nie interesując się zbytnio milionem dodatków do Eclipse, po prostu odpaliłem środowisko i zacząłem pisać. Staram się nie nadużywać regionów, bo często są one oznaką złego designu aplikacji, ale...