W poprzednim poście pokazałem jak stworzyć prosty Message Inspector, wyświetlający nagłówek lub wiadomość SOAP. Dzisiaj zajmiemy się podłączeniem zaimplementowanej klasy do usługi. Najładniejszym moim zdaniem rozwiązaniem jest implementacja behaviour’a, który następnie dołączy zaimplementowany message inspector. W przyszłości planuje napisać osobny post o behaviorach i ich zastosowaniu w WCF. Z punktu widzenia message inspector wystarczy wiedzieć, że behaviory służą do rozszerzania funkcjonalności np. en...
Programowanie rozproszone 4448 dni, 5 godzin, 45 minut temu 36 źrodło rozwiń
Nie jestem jedyny, który ma problemy z wydajnością VS 2010, w szczególności kiedy karta graficzna w kompie na którym odpalany jest VS 2010 do mocnych nie należy. Na szczęście istnieje jedna mała ukryta opcja w ustawieniach VS 2010, która powinna pomóc wam z problemami wydajnościowymi – mi na Windows XP 32bit pomogła.
Czasami istnieje potrzeba sprawdzenia czy baza danych jest dostępna na serwerze Ms SQL Server. W tym celu można wykorzystać widok sys.databases, na którym można wykonać select'a i sprawdzić czy dana baza danych występuje na liście (np. „select * from sys.databases”). Zobaczmy jednak, jak to zrobić przy pomocy SMO.O SMO, czyli SqlServer Management Objects pisałem już wcześniej we wpisie dot. zagadnienia jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer Management Objects i SqlBulkCopy), więc ...
Bazy danych i XML 4450 dni, 28 minut temu 48 źrodło rozwiń
Co to jest?!?!?!. Kiedyś otrzymałem mail o takim właśnie tytule, a zawierający fragment mojego kodu. Kod ten, przyznam szczerze, zbyt elegancki nie był, ale napisałem go w sytuacji rodzaju "Masz to napisać na wczoraj". Ważne, że działał i robił to co miał robić. Nie jestem człowiekiem, który uważa swój kod za święty i sądzę, że umiem przyjąć krytykę, ale ten mail nie spodobał mi się z kilku powodów.
Celem mojego pierwszego wpisu dotyczącego NHibernate było krótkie wprowadzenie w świat tego ORM’a. Dziś przyszedł czas na trochę praktyki. Zaczniemy od prostej konfiguracji aplikacji (konsolowej), aby ta mogła połączyć się z bazą danych oraz automatycznie utworzyć w niej przykładową tabelę. Wykorzystamy do tego celu bibliotekę Fluent NHibernate, dzięki której, w przeciwieństwie do standardowej konfiguracji wykorzystującej pliki XML znanej z oryginalnego Hibernate’a, skonfigurujemy wszystko z poziomu kodu...
Bazy danych i XML 4450 dni, 28 minut temu 175 źrodło rozwiń
Po opublikowaniu dzisiejszego posta kolega Paweł zgłosił mi, że mój blog nie działa – ładowanie strony kończyło się wyjątkiem: „HTTP Error 400. The request is badly formed”. Zdziwiłem się, ponieważ u mnie działał bez zarzu...
Paint.NET jest aplikacją, której chyba nikomu nie trzeba przedstawiać. Sam również bardzo często korzystam z tego programu. Brakowało mi w nim jednak wsparcia dla plików Photoshopa (psd). Czasami potrzebuję „wyłączyć” jakąś warstwę i zapi...
Bardzo wiele wejść na bloga odnotowuje z zewnętrznych serwisów. Prym wśród nich wiodą develway.pl oraz dotnetomaniak.pl (kolejność przypadkowa). Postanowiłem, więc bardziej "otworzyć" się na te serwisy, a przy okazji jeszcze na parę innych. A to wszystko za pomocą tak zwanych... Sexy Bookmarks
Używając Message Inspector możemy modyfikować wiadomości przychodzące i wychodzące zarówno po stronie serwera jak i klienta. Wystarczy zaimplementować dwa interfejsy: IClientMessageInspector oraz IDispatchMessageInspector. Ich definicja wygląda następująco:publicinterface IClientMessageInspector { void AfterReceiveReply(ref Message reply, object correlationState); object BeforeSendRequest(ref Message request, IClientChannel channel); } publicinterface IDispatchMessageInspector { object AfterR...
Programowanie rozproszone 4450 dni, 10 godzin, 20 minut temu 45 źrodło rozwiń
Witam w drugiej części wpisu, poświęconej tworzeniu stron w oparciu o technologię ASP.NET MVC 2. Żeby nie przedłużać, przedstawię plan działań na dziś, a wygląda on następująco: Dodanie klasy rozszerzającej nasz model Osoby Dodanie metody Create Dodanie metody Edit Dodanie metody Delete Po zrealizowaniu powyższych czynności, nasza aplikacja będzie prezentować już jakiś sensownych poziom:) Dziś trochę przyśpieszymy tempo więc będzie trochę mniej prowadzenia za rękę, bo poprzedni wpis powinien dać już ...
Rozważmy architekturę w której na początku ładujemy dane do cache a następnie na poszczególnych stronach wyświetlamy dane zbuforowane. Przyspieszy to oczywiście znacząco działanie aplikacji. Jednym z podejść jest załadowanie danych w momencie startu aplikacji (plik global). Rozwiązanie dobre jednak metoda Application_Start jest wywoływana tak naprawdę w momencie otrzymania pierwszego zapytania – czyli w sytuacji gdy pierwszy użytkownik naszego serwisu próbuje otworzyć stronę. Taki użytkownik doświadczy n...
Czy zastanawialiście się kiedyś jak dodawać parametry doSqlCommand? Klasa ta zawiera pole Parameters typy SqlParameterCollection, na którym możemy wykonać między innymi metodę AddWithValue(string, object). W internecie jak i w dokumentacji w nazwach parametrów na początku jest zawsze użyty znak “@”. Przy okazji jednego z projektów musiałem odpowiedzieć sobie na pytanie: Czy muszę zadbać o “@” przy nazwie parametru? Nie zastanawiając się długo postanowiłem, zgodnie duchem empiryzmu, sprawdzić co się stani...
Bazy danych i XML 4454 dni, 1 godzinę, 58 minut temu 145 źrodło rozwiń
W jednym z poprzednich artykułów pokazałem jak zintegrować platformę Azure z PHP. Czas na Jave!: http://msdn.microsoft.com/pl-pl/library/java-oraz-platforma-azure?id=rss
Programowanie rozproszone 4454 dni, 13 godzin, 58 minut temu 36 źrodło rozwiń
Kilka dni temu opublikowany został najnowszy numer (02/2011) magazynu SDJournal. Spośród wszystkich artykułów chciałbym szczególnie polecić jeden, którego tematyka jest mi ostatni czasy bardzo bliska. Mam tu na myśli artykuł NHibernate vs Entity Framework. Frameworki ORM dla platformy .NET autorstwa Agnieszki Polak oraz Przemysława Krysztowiaka...
Jakiś czas temu był na tym blogu wpis dotyczący GridView i TemplateField, czyli sposobu wygodniejszą wizualizację i edycję danych tabelarycznych. W ten sposób łatwo można zamienić skomplikowane numeryczne identyfikatory (pochodzące z kluczy obcych) na dropdown-listy przedstawiające dane z innych tabel. Jednak co się stanie, gdy nasza kolumna z identyfikatorami dopuszcza wartości puste (NULL)? Otóż pojawi się wtedy „błąd serwera w aplikacji ....”. Zobaczmy jak sobie można z tym poradzić.Załóżmy, że pierwo...
W ramach przygotowania do dalszej pracy podjąłem zamiar zwiększenia jakości tworzonego kodu. Narzędzi zwiększających produktywność programisty jest oczywiście wiele. Osobom znającym już jednak podstawy, na początek, polecam zapoznanie się z programem FxCop. Jest to darmowe narzędzie od Microsoftu służące do przeprowadzania statycznej analizy kodu (oczywiście osoby dysponujące wersjami Visual Studio innymi niż Express nie...
Po przerwie związanej ze świętami, mam nadzieję, że blog wróci do dawnej formy… W bazach danych wykorzystuje się zwykle jako wartości kluczy głównych i obcych liczby całkowite – INT. Drugim podejściem (mniej popularnym) jest wykorzystanie globalnych identyfikatorów GUID. Jaka jest tak naprawdę różnica? Skupmy się na zaletach i wadach każdego z nich. Zaczynamy od typów całkowitych (int). Zalety: -bardzo mały rozmiar (tylko 4 bajty), -naturalna postać – każdy kolejny wiersz to sekwencja ...
Bazy danych i XML 4456 dni, 5 godzin, 21 minut temu 137 źrodło rozwiń
Jakiś czas temu pisałem na temat jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer Management Objects i SqlBulkCopy). W takim przypadku, gdy kolumna w tabeli w DataSet'cie ma ustawioną właściwość AutoIncrement, to należy w kolumnie w SQL serwerze ustawić Identity na true, oraz IdentityIncrement i IdentitySeed na odpowiednie im wartości (AutoIncrementStep i AutoIncrementSeed) pochodzącej ze źródłowej kolumny z tabeli z DataSet'a. Niestety w takim przypadku, podczas późniejszego ładowania dany...
Bazy danych i XML 4457 dni, 9 godzin, 21 minut temu 73 źrodło rozwiń
Autor: Kilka dni temu w poście Statystyka… zapowiedziałem, iż postaram się zaproponować kawałki kodu, które umożliwią włączenie statystyk dla zapytań LINQ to SQL. Zadanie okazało się trochę trudniejsze niż myślałem, ale udało się coś osiągnąć. Zobaczmy jak.Rozwiązanie Naïve Pierwsze co przychodzi na myśl to proste rozszerzenie obiektu DataContext o nasze metody. Mniej więcej tak: publicstaticclassDataContextExt { publicstatic T WithStatistics
Bazy danych i XML 4457 dni, 9 godzin, 21 minut temu 43 źrodło rozwiń
Nie… w tym wpisie nie będzie o statystyce odwiedzin bloga i innych podobnych rzeczach, o których można dziś na wielu blogach (u mnie o tym będzie może następny wpis :)). Będzie o klasie o której pewnie niewielu z was wcześniej wiedziało. Do wczoraj nie wiedziałem także i ja. Poznajcie – SqlStatistics. Klasa jest internal sealed tak więc czemu o niej cokolwiek piszę? A no ponieważ do samej klasy dostać się nie możemy natomiast do danych przez nią zbieranych już tak. Śledząc jej zależności Reflector’em zau...
Bazy danych i XML 4459 dni, 12 godzin, 24 minuty temu 95 źrodło rozwiń