Im większy projekt tym więcej kontrolerów i widoków w solucji. Istnieje wiele sposobów na poddział projektu na kilka części. Nie zawsze jednak jest sens tworzenia nowych bibliotek i zwykle lepiej zastosować po prostu podział za pomocą przestrzeni nazw. “Areas” to po prostu wydzielenie kilku kontrolerów i widoków do osobnej przestrzeni nazw. Domyślnie wszystkie kontrolery znajdują się w folderze Controllers a widoki w Views. Przy dużych projektach jest to nieczytelne i trudne w utrzymaniu.
Strona głównaUżytkownik
psz750 | użytkownik
Praktycznie każdy jako-tako przemyślany system z jaką-taką architekturą zawiera “klasy z logiką”. Przez “jako-tako przemyślaną architekturę” rozumiem fakt, że cała logika nie siedzi bezpośrednio w kontrolerach czy innym tego typu bycie, a w dedykowanych… “miejscach”.
Architektura 3937 dni, 5 godzin, 24 minuty temu 307 źrodło rozwiń
If there is software, there have to be a bug. FIM 2010 as nice platform for identity management projects is not free from bugs of course, we have to live with them, wait for fixes to come and sometimes get to know how to handle them. This one is the latter case.
O kontraktach już kiedyś pisałem tutaj. Dziś z kolei zaprezentuję bardzo złą praktyką, czasami niestety jeszcze spotykaną tzn.:interface IDataFilter { IEnumerable
Sztuka programowania 4149 dni, 15 godzin, 8 minut temu 224 źrodło rozwiń
Kilka dni temu musiałem opublikować aplikację która korzystała z bardzo prymitywnej bazy danych, zdecydowałem się na SQL CE jako, że wszystko mam już in place i nic nie musiałem dodatkowo robić. Z SQL Lite sprawa jest prosta, ściągamy wersję dla .NET i tworzymy strukturę katalogów jak opisane zostało to tutaj. Z SQL CE było podobnie, w VS 2010 za pomocą jednej magicznej opcji wszystko, co potrzebowaliśmy trafiało w odpowiednie miejsce: W VS 2012, niestety opcja ta została usunięta, więc bardzo łatwo j...
Przy dużych zbiorach danych prezentowanych w kontrolce DataGridView może pojawić się problem z płynnością ich przewijania. Sposobem na wyeliminowanie tego efektu jest ustawienie właściwości DoubleBuffered na true. Jest to właściwość protected więc mamy dwie możliwości...
Niedawno Microsoft wypuścił bardzo interesującą bibliotekę: CLR Memory Diagnostics (w skrócie: ClrMD). Cudeńko to daje nam do rąk niemałą władzę: możemy z jej pomocą podpiąć się z kodu pod dowolny proces .NET i odczytać z niego masę interesujących informacji (jak chociażby wszystko co chcielibyśmy wiedzieć o aktualnym stanie sterty – Heap). Gdyby tego było mało, w ten sam sposób możemy z kodu analizować crash dumpy.
Microsoft z każdą wersją wprowadza pewne nowe elementy do języka, które teoretycznie powinny poprawić możliwości języka, jak komfort pracy programisty. Od wersji .net 4.0 wprowadzono nowy typ – dynamic. Jego użycie pozwala na wykonanie czynności, które będą dopiero znane w momencie wykonania aplikacji. W dużym skrócie oznacza to, że kompilator pozwoli na wywołanie dowolnej akcji na obiekcie bez zgłoszenia błędu. Kod zostanie bez problemu skompilowany, nawet, jeśli nie istnieje metoda do której się odwołu...
W poprzednim wpisie pokazałem kilka sposobów na wygenerowanie zbioru kolejnych liczb całkowitych. Dzisiaj zaprezentuję wykorzystanie tych danych w kilku przypadkach. Zacznijmy od przygotowania tabeli zawierającej 100 liczb, będzie ona używana w każdym z prezentowanych przykładów.
Bazy danych i XML 4206 dni, 6 godzin, 21 minut temu 149 źrodło rozwiń
Często podczas programowania w T-SQL pojawia się potrzeba skorzystania ze zbioru kolejnych liczb całkowitych z określonego zakresu. SQL Server nie posiada gotowej tabeli zawierającej takie dane, pozostaje opracowanie własnego rozwiązania.
Bazy danych i XML 4207 dni, 12 godzin, 14 minut temu 168 źrodło rozwiń
Konwertery – krótkie klasy i jednocześnie bardzo przydatne elementy, bez których bindowanie niektórych wartości w XAMLu byłoby bardzo kłopotliwe. Mają one zastosowanie w projektach typu Winodws Phone, Silverlight oraz WPF. Praktycznie w większości tego typu projektów mnożna od razu przekleić te najważniejsze.
Czasem, gdy walczymy o jak najszybszy czas odpowiedzi naszej strony musimy optymalizować jej dość dziwne elementy. W najnowszym magazynie .Net Curry autor, Omar AL Zabir w artykule zatytułowanym "Essential it admin skills for .net developers" w jednym z punktów pokazuje jak pozbyć się dodatkowych nagłówków wysyłanych przez IIS a dodawanych czy to przez niego samego czy też ASP.NET. Idea szczytna - każdy dodatkowy bajt kosztuje nas jakiś tam ułamek czasu zarówno po stronie serwera jak i przegląd...
O tym, czym jest redundacja wie chyba każdy programista. Każdy z nas wie również, że jest to zjawisko nieporządane i w większości wypadków lepiej mu zapobiegać. Ten post przeznaczę na opis przykładowego zjawiska powtórzeń w zapytaniach LINQ spotykanego w sytuacjach codziennych oraz prostym i czytelnym ich rozwiązaniu, o którym nieraz zapominamy.
Sztuka programowania 4222 dni, 8 godzin, 14 minut temu 246 źrodło rozwiń
Po mojej prezentacji o unit testach na 4Developers dostałem pytania typu “skąd uczyć się o testach?”, “jak zacząć?”, “jak poszerzyć wiedzę?”. Oto zatem moje rekomendacje Pluralsight (200 minut jest za darmo – trial – za resztę trzeba zapłacić, ale warto wykupić sobie chociaż miesięczny abonament za ~30$) Test-First Development Part I – podstawy unit testów, całkiem OK ale raczej wyłącznie dla nowicjuszy; na pewno super na start Test-First De...
Dzisiaj króciutka notka, ale mam nadzieję, że komuś przyda się. Załóżmy, że mamy kolekcję zawierającą np. DateTime. Naszym zadaniem jest zwrócenie maksymalnej wartości. Za pomocą LINQ łatwo to zrobić:DateTime[] dateTimeList=/.../; DateTime maxValue = dateTimeList.Max(); Niestety, w sytuacji gdy kolekcja zawiera 0 elementów dostaniemy wyjątek: “Sequence contains no elements”. Potrzebujemy funkcji MaxOrDefault, która niestety nie istnieje. Mamy do dyspozycji FirstOrDefault, SingleOrDefault, ale nie ma o...
Jeśli jest źle, i wiadomo że jest źle, to jest dobrze. Bo może być tylko lepiej. I czas na zmiany. Najważniejsze, aby być zadowolonym z siebie. Czerpać radość i satysfakcję z codziennych obowiązków i nie czuć się “gorszym” względem otoczenia. Wykorzystywać ogromne możliwości rzucane przez naszą profesję. Kilka lat temu miałem niemały kryzys odnośnie swojej roli w z...
Miałem ostatnio okazję implementować własny provider claimów do SharePointa. Jak prawie całe API SharePointa, ta kupa kupy woła o pomstę do nieba. Postanowiłem wykorzystać okazję i zaprezentować jak to złe API mogłoby wyglądać, gdyby ktoś w teamie odpowiedzialnym za “dev-experience” tego kolosa miał trochę oleju w głowie. Ale najpierw kilka słów wprowadzenia, czyli przedstawienie problemu.
Podczas korzystania z obiektu CollectionView w widoku, oprócz samej prezentacji kolekcji często mamy także dodatkowe kontrolki powiązane z właściwościami aktualnie wybranego elementu. Standardowym podejściem przy realizacji tego zadania jest utworzenie w klasie ViewModel właściwości udostępniającej aktualnie wybrany element kolekcji, a następnie zdefiniowanie w kontrolkach wiązań do interesujących nas właściwości tego elementu.
Miało być tak pięknie. Zawód-programista. Spełnienie marzeń i nadziei. A tymczasem… Bury poranek, szaruga i dziki wicher. Deszcz zacina poziomo, zdaje się zostawiać bruzdy na polikach. Wtaczasz się sfatygowany do biura, składasz parasol… i masz ochotę zakopać się pod stertą suchych liści i tam przeczekać do emerytury. Opatrzności, zno...
Franz w “Psach” powiedział: “nie lubię Ruskich”. Ja teraz mówię: “nie lubię regionów”. Regiony to te małe śmierdziuchy rozpoczynane dyrektywą #region i kończone dyrektywą #endregion. To te potworki co pozwalają klasę z kilkoma tysiącami linii zwinąć do kilku linii, grupując kod choćby w bezsensowny sposób, i spełnić tym samym całkiem sensowną zasadę “klasa powinna mieścić się na jednym ekranie”. Moje podejrzenie jest takie, ż...