WeakReference i cache Zacznijmy od tego, co to jest cache? Za Wikipedią: Pamięć podręczna (ang. cache) – mechanizm, w którym część spośród danych zgromadzonych w źródłach o długim czasie dostępu i niższej przepustowości jest dodatkowo przechowywana w pamięci o lepszych parametrach. Ma to na celu poprawę szybkości dostępu do tych informacji, które przypuszczalnie będą potrzebne w najbliższej przyszłości. Na początek trochę interfejsów (kontraktów). Dane odc...
Architektura 4595 dni, 3 godziny, 5 minut temu 223 źrodło rozwiń
Dzisiaj pokażę, jak od strony programistycznej wygląda AppDomain. Zwykle tworzymy aplikację host, która trzyma referencje do kilku AppDomain. Stwórzmy najpierw aplikację konsolową wyświetlającą po prostu tekst:namespace ConsoleApplication3 { class Program { staticvoid Main(string[] args) { while (true) { Console.WriteLine(AppDomain.CurrentDomain.FriendlyName); System.Threading.Thread.Sleep(2000); } } }...
Architektura 4597 dni, 13 godzin, 5 minut temu 125 źrodło rozwiń
Komenda preprocesora #if DEBUG i problemy z utrzymaniem (rename).
Architektura 4598 dni, 10 godzin, 24 minuty temu 183 źrodło rozwiń
Ilu z nas wracając do starego kodu (napisanego wczoraj/ tydzień temu/ miesiąc temu) krzywi się patrząc na bałagan, który po sobie pozostawił? W zasadzie prościej będzie chyba zapytać komu się to nie zdarza. Otóż amerykańscy naukowcy znaleźli na to sposób. No dobra może nie amerykańscy, ale skrót jest z angielskiego - SOLID, rozkłada się on na pięć czynników, a każdy z nich jest znowu jakimś skrótem.
Architektura 4600 dni, 11 godzin, 34 minuty temu 244 źrodło rozwiń
W .NET istnieje twór zwany AppDomain. W systemie operacyjnym mamy kilka podobnych pojęć takich jak proces czy wątek. AppDomain w dużej mierze przypomina proces – służy do izolowania aplikacji bezpośrednio niezwiązanych ze sobą. Dwa różne procesy mają przede wszystkim różną przestrzeń pamięciową. Adres zmiennej w procesie A, odnosi się już do innego obszaru w procesie B – alokacja zaczyna się w różnych miejscach. Z tego względu uruchomienie nowego procesu jest czasochłonną operacją i wiąże się z alokacją...
Architektura 4600 dni, 14 godzin, 23 minuty temu 256 źrodło rozwiń
O liczbach losowych Napiszmy prosty program, który rzuca 10 razy kostką. class Program { static void Main(string[] args) { for (int i = 0; i < 10;="" i++)="" console.writeline(gen.next(6)="" +="" 1);="" }="" }="" teraz="" program="" już="" działa="" zgodnie="" z="" oczekiwaniami.="" widzimy,="" że="" zmiana="" polegała="" na="" tym,="" że="" teraz="" mamy="" jeden="" generator,="" generujący="" kolejne="" liczby.="" w="" czym="" kilka="" generatorów="" jest="" ...
Architektura 4620 dni, 3 godziny temu 231 źrodło rozwiń
autor: Niedawno uczestniczyłem w Study Group poświęconej architekturze aplikacji organizowanym przez Łódzką grupę profesjonalistów IT & .NET, gdzie przedstawiałem prezentację p.t. "Rozszerzalne aplikacje w .NET (czyli MAF i MEF)". Tych, którzy chcieliby się zapoznać z prezentacją lub kodem źródłowym, który powstał podczas prezentacji, zapraszam do obejrzenia mojej prezentacji umieszczonej na portalu SlideShare.
Architektura 4629 dni, 7 godzin, 48 minut temu 132 źrodło rozwiń
mijagiC# W życiu każdego programisty przychodzi moment (dość szybko ), kiedy zwykłe zmienne przestają być wystarczające. Potrzebujemy „miejsca” na przechowywanie porcji danych. W rozwiązaniu tego problemu pomogą nam tablice. Najprościej mówiąc tablica to zarezerwowany obszar w pamięci (zestaw zmiennych), tego samego typu, który jest podzielony na tzw elementy.Tablice jednowymiarowe Tablice jednowymiarowe, jak sama nazwa wskazuje mają tylko jeden wymiar, a ich reprezentacje fizyczną możemy sobie wyob...
Architektura 4639 dni, 23 godziny, 30 minut temu 200 źrodło rozwiń
autor: Nie dawno (patrz wpis: „Rozszerzanie aplikacji .NET (czyli plugin'y, add-in'y, MAF, MEF, itp. ...)”) wspomniałem na tym blogu o Managed Aadd-in Framework (zwanego również System.AddIn lub MAF), przyjrzyjmy się bliżej temu rozwiązaniu. Naszą przygodę z MAF zacznijmy może od powrotu to pokazanego wcześniej rysunku, który zaczerpnięty został z MSDN: Muszę przyznać, że musiałem się chwilę zastanowić, gdy go pierwszy raz zobaczyłem. Przedstawia on tzw. pipeline, czyli ścieżkę prowadzącą przez poszcze...
Architektura 4639 dni, 23 godziny, 30 minut temu 105 źrodło rozwiń
Z biegiem lat, mam nieodparte wrażenie, że doba staje się coraz bardziej krótsza. Brakuje mi czasu na wiele różnych rzeczy. Obojętnie czy jest to pisanie kodu, czytanie książek, czy też nauka. Problem ten dotyczy również bloga, dlatego też spróbuję rozwiązać go w pewien sposób, wprowadzając nowy rodzaj tekstów oznaczonych tagiem Szybkie porady. Głównym zadaniem wpisów oznaczonych takim znacznikiem, będzie rozwiązanie pewnych, jasno określonych problemów. Teksty tego typu mogą pojawić się właściwie w każd...
Architektura 4645 dni, 10 godzin, 46 minut temu 165 źrodło rozwiń
W poprzedniej notce pokazałem jak przy pomocy bardzo prostego interfejsu IRepository oraz QueryObject można zrealizować warstwę dostępu do danych. W zalezności od wielkości projektu może się okazać, że ciut brakuje funkcjonalności. Co zatem robić? Z założenia nie chcemy już więcej zmieniać naszego interfejsu. Jak więc przykładowo wykonać operację pobrania rekordu z bazy i ustanowienia na nim blokady? W bazowej implementacji nie mamy takiej metody... i nie będziemy jej dodawać do interfejsu. Na szczęście...
Architektura 4645 dni, 22 godziny, 56 minut temu 110 źrodło rozwiń
Jestem właśnie w trakcie lektury "Czystego kodu" Roberta C. Martina (polecam wszystkim programistom). Chciałbym podzielić się pewnym spostrzeżeniem autora tej książki. Otóż jako zupełne przeciwieństwa stawia on kod obiektowy oraz kod proceduralny operujący na strukturach danych. Zasadnicza różnica polega na tym, że klasy ukrywają swoją implementację komunikując się ze światem zewnętrznym wyłącznie przez metody, podczas gdy struktury danych mają zupełnie jawną postać, przez co nie potrzebują żadnych metod...
Architektura 4648 dni, 9 godzin, 1 minutę temu 224 źrodło rozwiń
W poprzednim wpisie chciałem pokazać jak w dłuższej perspektywie opasłe obiekty repozytoriów są mało użyteczne i nie spełniają swoich teoretycznych założeń. Mimo to jednak postanowiłem zostawić w swojej infrastrukturze interfejs IRepository
Architektura 4655 dni, 2 godziny, 39 minut temu 218 źrodło rozwiń
O to jest pytanie. Używać czy nie używać Repository Pattern? Ostatnio troszkę się nad tym zastanawiałem i doszedłem do solidnego wniosku: tak i nie. :) Wiadomo, że ktoś zawsze powie: "to zależy". A ja mu przytaknę. W malutkim projekcie nie ma sensu. W większym? Chcąc być purystą powinienem zrealizować cały dostęp do danych poprzez wartwę realizowaną na bazie Repository Pattern. Czy to ma sens? Co jeśli chcę tylko wyciągnąć imię i nazwisko ostatnio dodanego użytkownika? Czy na prawdę muszę pisać te wszys...
Architektura 4660 dni, 8 godzin, 32 minuty temu 267 źrodło rozwiń
Trzeci z serii artykułów, w których pokażę swój pomysł na ożenienie WPF, Silverlight i Windows Phone. Przedstawiam tutaj działającą, prostą architekturę pozwalającą na komunikację wszystkich 3 klienckich platform z serwerem przy pomocy socketów.
Architektura 4662 dni, 21 godzin, 22 minuty temu 58 źrodło rozwiń
Drugi z serii artykułów, w których pokażę swój pomysł na ożenienie WPF, Silverlight i Windows Phone. Przedstawiam w nim zarys komunikacji dwustronnej klient/serwer - serwer/klient przy pomocy socketów.
Architektura 4662 dni, 21 godzin, 22 minuty temu 65 źrodło rozwiń
.NET pozwala na tworzenie aplikacji na wiele platform. To pierwszym z serii artykułów, w których pokażę swój pomysł na ożenienie WPF, Silverlight i Windows Phone. W tym znajdziecie trochę ogólnej teorii oraz informację o sposobach współdzielenia plików.
Architektura 4662 dni, 21 godzin, 22 minuty temu 115 źrodło rozwiń
Zachęcam do kolejnego artykułu, tym razem o wzorcu MVVM: http://msdn.microsoft.com/pl-pl/library/wprowadzenie-do-wzorca-projektowego-model-view-viewmodel-na-przykladzie-aplikacji-wpf.aspxExplore posts in the same categories:Patterns & Practices, WPF
Architektura 4668 dni, 19 godzin, 16 minut temu 920 źrodło rozwiń
Nieprawidłowa obsługa wyjątków może przynieść więcej problemów niż pożytku. O obsłudze błędów można byłoby napisać artykuł, jednak w poście chciałbym skupić się wyłącznie na kilku aspektach. 1. Pierwszym problemem jest fakt, że część programistów używa wyjątków do sytuacji po prostu niewyjątkowych. Jak sama nazwa mówi, wyjątek powinien być zastosowany gdzie może zdarzyć się coś niespodziewanego. Spójrzmy więc na poniższy fragment:int number; try { number =int.Parse(text); } catch { numbe...
Architektura 4679 dni, 22 godziny, 20 minut temu 462 źrodło rozwiń
Czy kiedykolwiek zdarzyło się Wam spotkać z aplikacją, która podczas przetwarzania jakiś bardziej złożonych i czasochłonnych operacji, swoje okno w sposób, który skutecznie blokował Waszą pracę? Czy nie zdarzało się Wam również w takich sytuacjach ujrzeć pełny optymizmu napis Brak odpowiedzi? Podejrzewam że każdy z Was, przynajmniej raz spotkał się z taką sytuacją. Być może część z Was przeklinała system operacyjny, choć w istocie to nie była do końca jego zasługa. Bardziej winny w takiej sytuacji był...
Architektura 4698 dni, 29 minut temu 137 źrodło rozwiń