Wprowadzenie Wzorce projektowe mają na celu rozwiązanie najczęściej spotykanych problemów związanych z pisaniem kodu. W przypadku warstwy prezentacji można wykorzystać m. in. następujące rozwiązania: MVC, MVP czy Model-View-ViewModel. Ze względu na mechanizm wiązań (binding), programistom WPF oraz Silverlight, polecany jest wzorzec MVVM – jest to technologia umożliwiająca bardzo łatwą implementację wzorca.K...
Do you find yourself repeating the same code fragments in your application layer over and over again? Get request, authorize user, validate request , maybe push to audit log, perform some operations, catch exceptions, log them, then commit/rollback transaction – all of these repeated in 90% of your application layer methods? Anyway, it is a case for me. Repeating such things is basically waste of time, money, energy and it is error/mistake prone, especially if performed by many developer...
Architektura 4215 dni, 23 godziny, 5 minut temu 138 źrodło rozwiń
YUI Compressor od Yahoo! to z pewnością narzędzie dobrze znane każdemu webmasterowi, który szanuje cierpliwość użytkowników swojej witryny;-) Dotychczas ta przydatna biblioteczka kojarzyła się głównie z JAVĄ, która ostatnimi czasy nie ma zbyt dobrej prasy. Warto jednak wiedzieć, że na szczęście istnieją całkiem przyjemne alternatywy. Jedną z nich jest właśnie port biblioteki YUI Compressor dla .Net. Zasadniczo jest to nieduże rozszerzenie, ale oferujące wszystkie potrzebne opcje kompresji oraz spore moż...
Architektura 4226 dni, 17 godzin, 26 minut temu 212 źrodło rozwiń
Świat się zmienia. Obecnie moc obliczeniowa nie jest takim problem jak kiedyś, co chyba najlepiej odzwierciedla pewnego rodzaju stagnacja na rynku komputerowym. Podobnie sprawa ma się z przestrzenią dyskową. Kiedy sobie przypomnę mój pierwszy komputer, w którym dysk miał 20MB, to pamiętam że miałem dylemat - instalować Windowsa 3.1, czy zainstalować więcej gier;-) Trochę inne były wtedy to czasy. Pamiętam również, że gdzieś pod koniec lat 90-siątych na dobre rozpoczęła się walka formatów do kompresji. P...
Architektura 4239 dni, 17 godzin, 41 minut temu 252 źrodło rozwiń
Zawód programisty to jeden z tych, w których powiedzenie nabiera szczególnego znaczenia. Tworząc oprogramowanie niejednokrotnie stanąłem przed problemem, który został przez kogoś już wcześniej rozwiązany, dlatego tylko jeśli na czymkolwiek się to od razu sięgam do wujka Google. Podobnie sprawa ma się w przypadku pewnych schematycznych rozwiązań. Tworząc specjalne klasy do obsługi logowania, bazy danych, czy kolekcji, trzeba liczyć się z tym, że ktoś już coś podobnego wcześniej zrobił. Jeśli określone ...
Architektura 4246 dni, 17 godzin, 19 minut temu 343 źrodło rozwiń
Można powiedzieć, że temat tego wpisu powstał na poczekaniu, ponieważ na początku miałem zamiar pisać o czym innym. Dzisiejszy tekst miał dotyczyć tworzenia silnych nazw, ale po małym stwierdziłem, że chyba nie jestem ekspertem od tematów powiązanych z szyfrowaniem, dlatego odpuściłem sobie ten wątek (osoby zainteresowane tematem odsyłam do ciekawego posta, którego znalazłem podczas własnego zgłębiania tematu). Ponieważ miałem nieodpartą ochotę napisać jednak dziś coś o programowaniu, naprędce wymyśliłe...
Architektura 4284 dni, 23 godziny, 3 minuty temu 571 źrodło rozwiń
Jeżeli korzystasz z NHibernate i Json.NET i chcesz bezpośrednio serializować obiekty biznesowe pobrane z bazy danych przy użyciu NHibernate do formatu JSON to bardzo szybko napotkasz na problem w postaci wyjątku: Error getting value from 'ReadOnly' on 'NHibernate.Proxy.DefaultLazyInitializer'. Problem ten powstaje w momencie gdy próbujesz serializować encję pobraną przez NHibernate, która posiada niezainicjowane wiązania z innymi encjami (obiekty proxy do obsługi lazy loading). Klasa serializująca prze...
Architektura 4297 dni, 7 godzin, 52 minuty temu 116 źrodło rozwiń
Jedną z ogromnych zalet programowania obiektowego jest to, że raz napisany kod możemy łatwo rozszerzyć o dowolne konstrukcje, lub stworzyć zupełnie coś nowego na jego podstawie. W tym przypadku chodzi mi głównie o kwestię dziedziczenia, która ma swoje wady i zalety. W tym przypadku bardziej chciałbym skupić się na tych pierwszych. Dziedziczenie nie zawsze jest do końca dobrym rozwiązaniem, ponieważ w C# możemy rozszerzać tylko jedną klasę (ale za to na szczęście możemy implementować dowolną ilość interf...
Architektura 4325 dni, 10 godzin, 18 minut temu 165 źrodło rozwiń
Tworząc duże projekty niejednokrotnie musiałem stworzyć szereg małych klas, których głównym zadaniem było chwilowe przechowywanie określonych danych i przekazywanie ich pomiędzy obiektami. Nie niosły one więc ze sobą żadnej wartości dodanej, a sam ich żywot był raczej krótki. Kilka, kilkanaście klas tego typu, potrafi dość w skuteczny sposób zabałaganić nawet najlepiej zorganizowany projekt. Jeśli wrócimy do niego za jakiś czas, zaczniemy sobie z pewnością zadawać pytanie - po co ta, czy tamta klasa? ...
Architektura 4343 dni, 9 godzin, 26 minut temu 149 źrodło rozwiń
As .NET developer I’m about to face the problem of using it in a quite complex system. I took some up front effort to prepare some concept of handling nested DB operations and transactions management. I’m not an Entity Framework specialist (nor enthusiast) but the potential of this technology (the result of factors like MS marketing or community activity) shouldn’t be overlooked. Though I have faced a problem of EF which won’t appear in HelloWorld scenarios but will get very hard to ove...
Architektura 4353 dni, 3 godziny, 50 minut temu 81 źrodło rozwiń
Implementing RAII (Resource Acquisition Is Initialization) in C# using Castle.DynamicProxy and how to proxy iterator (IEnumerable).
Architektura 4403 dni, 14 godzin, 11 minut temu 71 źrodło rozwiń
Odwołam się do wpisu Tworzenie własnej ConfigurationSection. W tamtym podejściu tylko czytałem z configuracji. Teraz chcę pokazać że do konfiguracji można też zapisywać z poziomu kodu.
Architektura 4420 dni, 4 godziny, 24 minuty temu 61 źrodło rozwiń
Jednym z bardziej charakterystycznych zadań, którego implementację można wykazać w szeregu różnych aplikacji dostępnych na rynku, jest praca wykonywana w stałych określonych interwałach czasu. Przykładów nie trzeba daleko szukać, ponieważ wystarczy spojrzeć choćby na aplikacje mobilne, o których trochę na tym blogu się pisze. W przypadku smartfonów, zjawisko to widoczne jest w aspekcie synchronizacji. Sprawdź statusy na Facebooku co 3 godziny, ściągnij wiadomości RSS co 6 godzin, aktualizuj kalendarz co ...
Architektura 4477 dni, 4 godziny, 49 minut temu 170 źrodło rozwiń
Tydzień temu w pierwszym poście poświęconym synchronizacji, przedstawiłem Wam trzy kluczowe zagadnienia związane z tym tematem. I choć lock, Monitor oraz Mutex pozwalają nam rozwiązać naprawdę dużą liczbą problemów dotyczących wielowątkowości, to warto wiedzieć, że jest to tylko część programistycznego orężu w jaki wyposażył nas Microsoft. Dziś chciałbym Wam przedstawić cztery kolejne klasy, które powinny uzupełnić temat rozpoczęty tydzień temu i zasadniczo wyczerpać kwestię synchronizacji. Bez zbędnego ...
Architektura 4483 dni, 16 godzin, 18 minut temu 349 źrodło rozwiń
Kilka dni temu zainicjowałem cykl postów związanych z wielowątkowością. Rozpocząłem dość standardowo, bo od wyjaśnienia istoty tego zagadnienia i przedstawienia prostych wątków. Wiedza zawarta w tamtym wpisie, powinna w wielu przypadkach okazać się wystarczająca - szczególnie jeśli w naszej aplikacji mamy tylko jeden wątek dodatkowy, który stworzony jest tylko po to by odciążyć wątek główny. Takie proste rozwiązanie nie będzie jednak zawsze do końca wystarczające. Problemy pojawią się w sytuacji gdy wąt...
Architektura 4490 dni, 13 godzin, 35 minut temu 353 źrodło rozwiń
Od jakiegoś czasu dostępny jest dokument opublikowany przez Microsoft Patterns & Practices nad którym pracowała cała rzesza community w tym i nasz Szymon Pobiega – wielkie więc gratulacje! :) może ja ślepy albo głuchy ale dowiedziałem się o tym dopiero teraz :) Tak czy siak, cały dokument jest dostępny niestety jedynie w formacie stron HTML na stronach MSDN – nie ma żadnego docx, pdf czy innego formatu o ile mi wiadomo.
Architektura 4494 dni, 5 godzin, 10 minut temu 109 źrodło rozwiń
Nie wiem jak Was, ale mnie osobiście irytuje zdarzenie w którym na górnej belce aplikacji pojawia się napis , a sam program wygląda jakby się gdzieś po drodze pogubił... Generalnie taki stan rzeczy może być spowodowany wieloma różnymi aspektami, choć zasadniczo w tym przypadku najczęściej można wskazać dwie przyczyny. Trzeba niestety tu otwarcie przyznać, że w głównej mierze są one spowodowane źle napisanym kodem przez programistów tychże aplikacji. Po pierwsze, w każdym programie może po prostu pójść c...
Architektura 4494 dni, 14 godzin, 32 minuty temu 118 źrodło rozwiń
W poprzednim poście podałem prostą implementację zdarzeń opartych na słabych referencjach. Zachęcam najpierw do przeczytania poprzedniego wpisu bo bez niego będzie ciężko zrozumieć dzisiejszy post. Dziś implementacja zaproponowana na blogu Paul Stovell’a:publicsealedclass WeakEventHandler
Architektura 4548 dni, 13 godzin, 40 minut temu 131 źrodło rozwiń
Jestem zafascynowany framworkiem PRISM, czytam, oglądam i piszę jakieś przykładowe aplikacje z wykorzystaniem tej biblioteki. Prism ułatwia tworzenia modularnych i dynamicznych systemów, dostarcza mechanizm do rozwiązywania zależności (Unity Container), umożliwia dynamiczną zmianę zachowania aplikacji poprzez wczytywanie dodatkowych modułów z katalogu lub aktualizację pliku konfiguracyjnego aplikacji - to tylko część z błyszczących bajerów. Prism wspiera Silverlight, WPF czy Windows Phone 7 oraz mocno ...
Architektura 4560 dni, 6 godzin, 28 minut temu 397 źrodło rozwiń
Ponad dwa lata temu, popełniłem wpis na temat operacji na kolekcjach w C#. Post ten ku mej uciesze, wciąż cieszy się sporą popularnością, dlatego też postanowiłem napisać niejako jego kontynuację. Gdy dwa lata temu pisałem tamten wpis, wciąż dominującą wersją frameworka .Net, była ta oznaczona wersją 2.0. Dziś sytuacja się trochę zmieniła i przynajmniej w moim odczuciu, coraz więcej osób korzysta z wersji 3.5 i 4.0, a na horyzoncie jest już .Net 4.5, który pojawi się w pełni wraz z Windowsem 8 i Visual ...
Architektura 4581 dni, 18 godzin, 32 minuty temu 296 źrodło rozwiń