środa, 20 stycznia 2010

No i Visual Studio 2010 Beta 2 sie popsuło. Samo :-(

UntitledZ tego co pamiętam, to zostało mi jeszcze ok 130 dni testów. Będę żądał zwrotu pieniędzy lub wymiany na nowe.

czwartek, 14 stycznia 2010

Mój ASP.NET MVC stack


Postanowiłem spisać technologie, biblioteki, które używam w pracy z projektami ASP.NET MVC, ewentualnie “nowinki”, które zostały przetestowane w boju, ale ze względu na silną obsadę czekają na lepsze czasy i napewdno niedługo zostaną przeze mnie ponownie użyte. Oto one, zaczynająć od "pierwszego składu":


Architektura

  1. S#arp Architecture: podstawowy stack, który zawiera w sobie wszystko to, co potrzebne jest do stworzenia aplikacji ASP.NET MVC. Korzysta z Castle.Windsor co podmieniam na Ninject.
  2. NHibernate, doskonale wszystkim znany ORM
  3. Linq2SQL, tam gdzie nie ma NHibernate :-)
  4. Fluent Nhibernate biblioteka konfiguracji NHibernate bez konieczności użycia plików XML oparty o konwencję / Fluent Interfaces.
  5. Ninject jako lekki framework DI / IoC.
  6. MVCContrib: projekt rozszerzający standardową funkcjonalność dostępną w gołym ASP.NET MVC
  7. jQuery, jQuery UI, jQuery plugins: biblioteka javascript, zbiór kontrolek JS, chyba każdemu znana.

Poczekalnia

  1. Entity Framework 4, jako zamiennik NHibernate. Zauważyłem, że EF idzie w całkiem fajną, ciekawą stronę umożliwiając MDD, dobrze integruje się z VS. Myślę, że niedługo będzie poważną alternatywą dla NHibernate.
  2. Spark View Engine, jako zamiennik standardowego view engine. Fajne rozwiązanie PartialViews, daje mniejszy bałagan w kodzie widoku.
  3. FubuMVC, framework implementujący wzorzec Front Controller
  4. MVCTurbine: “The whole purpose of MVC Turbine is to speed your MVC development by having the plug-in handle all churn of the runtime and allow you to focus on what your application needs to do, rather than how to do it.”

Coś byście dorzucili? :-)

środa, 13 stycznia 2010

Wzorzec “POST Redirect GET” w ASP.NET MVC

Jednym z największych problemów w aplikacjach internetowych jest podwójne przesłanie danych za pomocą metody POST na szczęście prawidłowo korzystając z mechanizmów ASP.NET MVC można się przed tym obronić – ale o tym za chwilę. Na początek krótkie wyjaśnienie tego w czym cały problem.

Wyobraźmy sobie formularz w którym podajemy: Numer karty kredytowej, datę jej ważności, kwotę w eurogąbkach, którą przelewamy na konto oraz przycisk “Wyślij”, czyli standardowy mechanizm płacenia za płatne treści (taaak wiadomo jakie :-) ) w Internecie.  Formularz w oparciu o metodę POST prześle dane do serwera, gdzie zostanie odpalona jakaś skomplikowana logika, którą nie będziemy się teraz przejmować. Efekt jest taki, że na naszym koncie mamy mniej eurogąbek niż mieliśmy jeszcze minutę temu. Wszystko pięknie, ale po drodze coś mogło pójść nie tak i nie otrzymaliśmy informacji zwrotnej, że przelew się udał. Co gorsza strona może prosić o odświeżenie znanym chyba każdemu użytkownikowi, najczęściej niepoprawnie zaimplementowanych stron, komunikatem:

com

Co zrobi przeciętny użytkownik? Tak: kliknie przycisk Prześlij ponownie. I to kosztowny błąd, bo na jego koncie jest dwa razy mniej eurogąbek.

Problem z formularzami wykorzystującymi metodę POST pojawia się gdy:

  1. Odświeżamy stronę.
  2. Zapisujemy stronę do Zakładek przeglądarki internetowej.

Rozwiązanie: PRG

Wzorzec projektowy PRG polega na:

  1. Przesłaniu formularza w sposób standardowy metodą POST.
  2. Przekierowanie, a ściślej mówiąc, zwrócenie kodu 303 / 302.
  3. Zażądanie załadowania “nowej” strony z użyciem GET.

PRG i ASP.NET MVC

Jak to się powinno zrobić w ASP.NET MVC? Służy do tego: znana chyba każdemu – a niestarty często nie do końca przez wszystkich zrozumiana metoda - RedirectToAction wraz z TempData przechowujący dane pomiędzy żądaniami.

[HttpPost]
public ActionResult Edit(InputData input)
{
if (ModelState.IsValid)
{
//jakas logika...
TempData["ResultMessage"] = "Transfer eurogabek zakonczony!";
return RedirectToAction("index");
}

return View(input);
}




Tak zaimplementowana logika nie spowoduje ponownego przesłania danych przy odświeżeniu strony i to właśnie tak powinny być zaprojektowane formularze korzystające z POST.

czwartek, 10 grudnia 2009

TIP: SQL Management Studio Express Error 29506


Kiedy próba zainstalowania SQL Management Studio Express (thank's God It's freeware) kończy się błędem 29506, to znaczy, że instalujesz leciwe już oprogramowanie na systemie operacyjnym z obsługą UAC, kiedy to producenci tego oprogramowania dopiero snuli plany o UAC...
Więc co by się pozbyć tego breakpointa:

1. Uruchom polecenie CMD jako Administrator.
2. Uruchom instalator z poziomu CMD czyli: C:\SQLManagement.msi (lub coś w ten deseń).

Thanks Google...

środa, 28 października 2009

Pomocne w testowaniu witryn na wielu przeglądarkach


Jedną z trudniejszą z rzeczy z jaką spotyka się każdy web developer jest dostosowanie działania witryny i jej optymalizacja wynikająca ze zróżnicowania dostępnych przeglądarek. Każdy spotka się prędzej czy później z piekłem przeglądarek wynikającym z ich wojny o rynek :-) Aktualny ranking firmy Gemius na temat popularności przeglądarek internetowych w naszym kraju przedstawia się następująco:

  1. Firefox 3.x 48,97%
  2. Internet Explorer 7.x 17,23%
  3. Internet Explorer 6.x 9,34%
  4. Internet Explorer 8.x 7,74%
  5. Opera 9.x 5,49%

Do tego dochodzą różne konfiguracje wymienionych wyżej przeglądarek takie jak ustawienia javascript, flash, różne rozdzielczości ekranu itd.

Oto kilka przydatnych narzędzi w testowaniu witryn na wielu przeglądarkach i ich konfiguracjach, które zarazem nie zamienią naszego komputera w śmietnik.

Browsershots.org Robi zrzuty ekranowe podanego przez nas adresu www. Zalety: prostota, długa lista obsługiwanych przeglądarek Wady: czasami trzeba czekać na wyniki kilkanaście minut, witryna musi być dostępna publicznie, niektóre maszyny testujące potrafią się zawieszać. Dodatkowo w sieci istnieje wiele innych witryn o podobnym działaniu: np. komercyjny i rozbudowany CrossBrowserTesting.com.

Internet Explorer Application Compatibility VPC Image Zestaw obrazów VPC systemu operacyjnego WindowsXp wraz z zainstalowanymi przeglądarkami Internet Explorer w wersji 6, 7, 8 (do wyboru). Zalety: otrzymujemy podręczne środowisko testowe, Wady: trzeba mieć odpowiednie zasoby sprzętowe na uruchomienie kilku maszyn wirtualnych. VPC działają jeszcze do stycznia 2010 r.

Expression Web Super Preview Umożliwia podgląd wyrenderowanej witryny z poziomu programu Microsoft Expression Web. Zalety: zintegrowanie podglądu witryny z procesem tworzenia. Wady: wymagany Expression Web

Firefox IE View Wtyczka do przeglądarki Firefox umożliwiająca przełączanie silnika renderującego z/na Internet Explorer-a. Zalety: szybkość działania.

czwartek, 22 października 2009

PG.NET XXII Spotkanie grupy


Chciałbym Was zaprosić na XXII spotkanie Poznańskiej Grupy .NET, które odbędzie się w czwartek 29 października 2009 w siedzibie firmy Cognifide (Aleja Wielkopolska 4, Poznań). Będę na nim prezentował bardzo przydatne narzędzie jakim jest NDepend. Oprócz mojej prezentacji nie zabraknie nowinek ze świata .NET, które przedstawi Marek Błotny. Na koniec będzie o Silverlight 3, Blend 3, .NET RIA Services o czym opowie nam Marcin Kruszyński.

Szczegółowa agenda:
18:00 - 18:10 Wstęp
18:10 - 18:30 Nowinki ze Świata .NET (Marek Błotny)
18:30 - 19:00 NDepend (Dariusz Tarczyński)
19:00 - 19:15 Przerwa
19:15 - 21:00 Silverlight 3, Blend 3, .NET RIA Services - najciekawsze cechy (Marcin Kruszyński)

Udział w spotkaniu jest bezpłatny, a rejestracja uczestników znajduje się tutaj: Rejestracja.

EDIT @ 2009.10.30
Prezentację oraz materiały do niej można pobrać stąd

wtorek, 6 października 2009

PG.NET XXI Spotkanie grupy


Gościem XXI spotkania (2009-10-08 19:00, Aleja Wielkopolska 4, siedziba firmy Cognifide) Poznańskiej Grupy .NET będzie Bartosz Nyczkowski, który pracuje w Microsoft, w grupie, która jest odpowiedzialna na wydajność serwerowych wersji Microsoft Windows.

Oto zagadnienia, które omówi:
- Jak wygląda cykl życia projektu w przypadku Microsoft Windows?
- W jaki sposób jest testowana wydajność systemu?
- Jak od strony praktycznej wygląda praca nad usprawnieniami?
- Jak wygląda współpraca z klientami?

Rejestracja na spotkanie