piątek, 21 grudnia 2007

WPF: DIGGING DEEPER - post długi, dłuuuugi !

Ostatnio z kolegami bawiliśmy się w zgadywanie zagadek z soków "Tarczyn", więc zagadkowa atmosfera udzieliła mi się na dobre i postanowiłem również na swoim blogu od czasu do czasu ją wykorzystywać, by nie było monotonnie. Poniżej pierwsza partia różnych problemów i zagadnień z WPF, które sformułowałem dla odmiany w postaci pytań (a dlaczego tak, a dlaczego by nie? o gustach nie dyskutuje sie). Źródło odpowiedzi na nie wszystkie ujawnię w jednym z następnych postów.

1. Różnice w wykonywaniu aplikacji WPF na Windows Vista a Windows XP/2003
2. Jakie metody faktycznie są wywoływane, gdy ustawiamy w XAML dependency property?
3. Jakie są piorytety przy ustalaniu wartości dependency property?
4. Istota "działania" attached properties
5. Co to są komendy i jakie komendy są wbudowane w TextBox?
6. Czy zawartością Tooltip-a musi być tekst?
7. Czy hostowanego HTML-a w kontrolce Frame można obrócić?
8. Co TextBox w WPF zaczerpnął z MS Word?
9. Zasadnicza różnica między LayoutTransform a RenderTransform
10. Czy wszystkie elementy FrameworkElement wspierają transformacje?
11. Czy Grid może sam pilnować, aby dwie kolumny miały zawsze taką samą szerokość, nawet gdy użytkownik będzie jedną z nich zmieniać?
12. Co się stanie jak WrapPanel umieścimy w ViewBox?
13. Jak tworzymy w Visual Studio aplikację WPF standalone, to gdzie ukryła się metoda Main?
14. Trzy sposoby nawigowania w aplikacji WPF
15. Która z kombinacji przejścia WPF->WPF, WPF->HTML, HTML->HTML, HTML->WPF nie powoduje odnotowania w dzienniku nawigacji?
16. Jaki jest związek między PageFunction a Page?
17. Czy w WPF-ie możemy bezpośrednio korzystać z Task Dialog i Aero Glass?
18. Jaka kombinacja wartości propercji Window: AllowsTransparency, WindowStyle i Background pozwoli stworzyć nam okno o dowolnym kształcie zamiast prostokątnego?
19. Jaki proces odpala XBAP?
20. Dwa sposoby przekazywania parametrów do XBAP
21. W jakim elemencie HTML możemy hostować luźny XAML?
22. Do czego może być przydatny LocBaml?
23. Czy element z logicznych zasobów użyty w wielu miejscach, może w każdym z nich wystąpić w innej instancji?
24. W jakiej kolejności (w drzewie logicznym, aplikacji, systemie) poszukiwany jest zasób o danym kluczu?
25. Co to jest PropertyPath i gdzie znajduje zastosowanie?
26. W przypadku jakiego bindingu 1 czy 2-kierunkowego nie zadziała odłączenie bindingu przy jawnym ustawieniu propercji?
27. Czy możemy zrobić binding do swojej propercji i propercji rodzica?
28. Co jest niezwykłego w kolekcji ObservableCollection?
29. Czym różnią się propercje Items i ItemsSource w ListBox? Czy można z nich jednocześnie korzystać?
30. Czy źródłem bindingu może być propercja niebędąca dependency property?
31. Czy celem bindingu może być propercja niebędąca dependency property?
32. Do czego może być przydatna w ListBox propercja DisplayMemberPath?
34. Co może ułatwić developerowi propercja IsSynchronizedWithCurrentItem w przypadku korzystania z kilku ListBox-ów i tego samego źródła bindingu?
35. Sytuacja z pytania 34: Jeśli wszystkie kontrolki ListBox są z wielokrotnym wyborem, to gdy w pierwszej z nich wybierzemy dwa elementy, to czy również dwa elementy zostaną automatycznie wybrane w pozostałych listach?

CDN (ciąg dalszy nastąpi?)

czwartek, 13 grudnia 2007

ASP.NET 3.5 Extensions Preview - z bliska (2)

Pozostałe nowości może nie są tak rewolucyjne, ale z pewnością przydatne i ułatwiające życie:

ASP.NET AJAX - dodana możliwość tworzenia punktów historii w przeglądarce po asynchronicznym wywołaniu, zarządzanie historią po stronie serwera i klienta

ASP.NET Silverlight - dwie kontrolki:
- MediaPlayer - player z predefiniowanym interfejsem w XAML i code-behind w JavaScript (z szeroką możliwością customizacji)
- Silverlight - do łatwego osadzania XAML-a z JavaScriptem lub kodem zarządzanym

środa, 12 grudnia 2007

ASP.NET 3.5 Extensions Preview - z bliska

Pod adresem http://quickstarts.asp.net/3-5-extensions/ jest dostępna dokumentacja do ASP.NET 3.5 Extensions Preview. Całkiem przystępna. Pierwsze wrażenia po lekturze trzech pierwszych rozdziałów ...

ADO.NET Data Services (dawniej codename "ASTORIA") - specjalizowane usługi WCF pozwalające na dostęp do danych z encji, z przekazywaniem parametrów w adresach URL (np. http://site/data.svc/Customers('ALFKI')/Orders - wszystkie zamówienia klienta o id 'ALFKI'). Protokołem jest zwykły HTTP, a dane są przesyłane w formacie JSON lub AtomPub. Z usług tych można korzystać z poziomu JavaScript (ASP.NET AJAX) lub zarządzanego klienta.

ASP.NET Dynamic Data - równie ciekawy feature, pozwala na dynamiczne generowanie stron na podstawie metadanych z bazy. Na podstawie typów bazodanowych generowane są tabelki z odpowiednimi kontrolkami (do widoku i edycji) i walidatorami. Oczywiście bardzo wiele szablonów można customizować ...

ASP.NET MVC - gwóźdź programu, praktyczna realizacja znanego wszystkim ze studiów wzorca projektowego model-view-controller. Modelem tutaj jest klasa komunikująca się ze źródłem danych, widokiem - moduł renderujący interfejs usera w HTML (strony ASP.NET), a kontrolerem klasa dziedzicząca po klasie Controller z akcjami (metody z atrybutem [ControllerAction]). Każda interakcja jest przychwytywana przez kontroler, każdy URL zapytania jest mapowany na klasę kontrolera i daną akcję (reguły są umieszczone w tablicy routingu). W tym procesie istotną rolę odgrywa UrlRoutingModule (moduł HTTP) i MvcHandler (handler HTTP). W akcji kontrolera można przekazać dane do widoku. Stosując podejście z MVC zdecydowanie łatwiej testować aplikację. Dlaczego dopiero teraz MVC pojawia się w ASP.NET?

c. d. n

wtorek, 11 grudnia 2007

Microsoft zasypuje wciąż ...

Microsoft zasypuje wciąż nowymi frameworkami i rozszerzeniami. Właśnie ukazała się wstępna wersja rozszerzeń do ASP.NET 3.5 - jest dostępna pod adresem http://asp.net/downloads/3.5-extensions/. W skład ASP.NET 3.5 Extensions wchodzą następujące elementy:
- ASP.NET AJAX Improvements
- ASP.NET MVC
- ASP.NET Dynamic Data Support
- ASP.NET Silverlight Support
- ADO.NET Data Services

Tak więc nie można się nudzić ...

poniedziałek, 10 grudnia 2007

WCF 3.5 i WPF 3.5 - skok w bok

W weekend zrobiłem jednak skok w bok i poczytałem sobie dokładniej o zmianach w WCF i WPF w .NET 3.5.

Wprowadzone do WCF nowe elementy takie jak workflow services, durable services, web programming model, wcf syndication (Atom 1.0, RSS 2.0), integracja z ASP.NET AJAX czy obsługa nowych specyfikacji WS-* z pewnością zasługują na poświęcenie im należytej uwagi.

Również w WPF spotkamy kilka nowych ciekawostek, z czego najbardziej zainteresowała mnie możliwość tworzenia wtyczek (add-ins). Niestety nic nie jest idealne, istnieją pewne ograniczenia dla WPF w tych wtyczkach, wynikające z przyjętej architektury. Niemniej jednak sprawą na pewno warto się zainteresować.

piątek, 7 grudnia 2007

ADO.NET Entity Framework Beta 3 na Mikołaja

Dziś grudnia dnia szóstego Microsoft zrobił prezent i udostępnił ADO.NET Entity Framework w wersji beta 3 wraz z narzędziami dla Visual Studio 2008, dokumentacją i przykładami (oryginalne ogłoszenie znajduje się tu). No cóż, w takim razie w praktyce przyjrzę się już nowej wersji ...

czwartek, 6 grudnia 2007

LINQ: oddalenie

Książka Introducing Microsoft LINQ napisana przez P. Pialorsi i M. Russo niewątpliwie stanowi dobre wprowadzenie do technologii LINQ (na bazie wydania beta). Jedynie pierwszy rozdział IMHO powinien być dedykowany nowym elementom C# 3.0 i VB 9.0. Po zapoznaniu się z nimi każde zapytanie LINQ nabiera od razu sensu.

Następne rozdziały to oczywiście opis różnych odmian LINQ:
- LINQ to Objects
- LINQ to ADO.NET (LINQ to SQL, LINQ to DataSet, LINQ to Entities)
- LINQ to XML (z wspomnieniem o LINQ to XSD)
a także ADO.NET Entity Framework.

Poszczególne rodzaje LINQ wydają się całkiem dokładnie przedstawione, w tym różne pułapki i zachowania mające wpływ na wydajność. IMHO jedynie opis ADO.NET Entity Framework i LINQ to Entities wydaje się miejscami trochę ogólny.

No cóż, trzeba się tym wszystkim jeszcze trochę więcej "pobawić" w praktyce, ale to uczynię posługując się już finalną wersją Visual Studio 2008 i .NET 3.5. Może wyjdą przy okazji jakieś różnice, więc będzie ciekawiej -:)

niedziela, 2 grudnia 2007

LINQ: VB.NET 9 lepszy niż C# 3.0 ?

C# zawsze był traktowany jako flagowy język platformy .NET. Jednak w przypadku LINQ to Visual Basic w wersji 9 zawiera więcej innowacji w zakresie składni. Sprawa dotyczy LINQ to XML. Otóż w najnowszym Visual Basic możemy posługiwać się danymi XML zapisanymi w ... postaci XML (patrz kod powyżej).

W weźle drugiego albumu możemy zaobserwować podstawianie wartości zmiennej t, XML jest budowany w czasie wykonania. Wizualnie kojarzy mi się to z osadzaniem kodu na stronach ASP.NET bez code-behind.

W przedstawionym kodzie widzimy wybranie wszystkich wezłów potomnych Album za pomocą nawiasów "< >" oraz atrybutu z pojedynczego węzła przy użyciu @. Czyż nie jest to fajne udogodnienie?

Również tutaj nie ma żadnych cudów -:) Kompilator zamienia XML na odpowiednie obiekty XDocument, XElement i XAttribute, a "< >" i @ odpowiednio na wywołania metod Elements i Attribute. Lecz czy właśnie rzeczy osiągnięte takimi prostymi sposobami nie są piękne?

sobota, 1 grudnia 2007

Druga część mojego artykułu o Cardspace na codeguru.pl

Na portalu codeguru.pl został zamieszczony artykuł mojego autorstwa Wprowadzenie do Cardspace – cz.II. Zachęcam do jego przeczytania.

Silverlight: gra niczym "Milionerzy"

...
Nie będzie już Silverlight 1.1
...
Ponieważ będzie ... Silverlight 2.0 !!!


Tytuł jednego z newsów na jednym z portali był tak sformułowany, że zapowiadał niebyt Silverlight 1.1. Zanim przyczytałem treść newsa pomyślałem, że to może koniec rozwoju tej technologii. Na szczęście wszystko się wyjaśniło i będziemy mieć od razu Silverlight 2.0 (sytuacja dla mnie zupełnie jak swego czasu w "Milionerach" Urbańskiego - sic!). Zmiana numeru wersji wydaje się sensowna, bo w następnym wydaniu planowane jest wiele nowych "features". Publiczna beta ma się ukazać w pierwszym kwartale 2008 i ma zawierać:
- WPF UI Framework: rozszerzalne kontrolki, zarządzanie layout'em, 2-way binding, wsparcie dla szablonów i skórek (ma być zachowana kompatybilność z podzbiorem WPF 3.5)
- nowe kontrolki: typowe znane z formularzy (textbox, checkbox, radiobutton, itd), zarządzające layout'em (StackPanel, Grid, itd), o częstej funkcjonalności (TabControl, Slider, ScrollViewer, ProgressBar, itd), do obsługi danych (DataGrid, itd)
- bogatą komunikację sieciową: REST, POX, RSS, WS-*, wsparcie dla dostępu cross domain
- bogatą bibliotekę klas: klasy podstawowe (kolekcje, IO, generyki, wątki, globalizacja, XML, local storage, itd), LINQ for XML i integracja z HTML DOM API

Spośród wymienionych elementów, najbardziej się cieszę z kontrolek (do tej pory prawie ich nie było!), paneli, gridów oraz szablonów i skórek. To jest to czego wyraźnie brakowało w dotychczasowych wersjach Silverlight, w tym 1.1 Alpha. Dzięki kontrolkom Silverlight będzie użyteczny do budowy formatek w aplikacjach o biznesowej funkcjonalności, dla różnych przeglądarek i bez potrzeby instalowania frameworka przez klientów. I będzie to - jak się wydaje - znacznie lepsza opcja od dotychczasowych rozwiązań Microsoftu w zakresie "smart client" (stare niebezpieczne ActiveX, zarządzane kontrolki Windows Forms .NET hostowane w IE i wymagające instalacji frameworka po stronie klienta, WPF XBAP hostowane w IE i Firefox (od .NET 3.5) - jednak wciąż wymagające frameworka u klienta)