– A feedback-nél természetesen nem Is Good-ot akartam írni, hanem It’s Good-ot
– , illetve a videó végén elfelejtettem megmutatni, hogy miként lehet a feedback-et betölteni Blend-be… íme ilyen egyszerűen:
Július 9.-én megjelent a Silverlight 3.0 végleges verziója. A dolog érdekessége, hogy mindösszesen egyetlen beta verzió volt belőle (ellentétben a 2.0-val, ahol 2 (+1 alpha)), amelyet 4 hónapig hagytak élni a redmondiak, így kevesebb, mint 8 hónap alatt sikerült kiadniuk egy verziót az Ezüstfényből.
Nézzük először a linkeket:
Visual Studio Tools for Silverlight 3 (Visual Studio 2008 + SP1)
http://go.microsoft.com/fwlink/?LinkID=143571
Developer Runtime (VS Tools for SL3 tartalmazza!)
– Win http://go.microsoft.com/fwlink/?LinkID=150228
– Mac http://go.microsoft.com/fwlink/?LinkID=150227
End User Runtime (továbbra is csak 4,69mb!!!!)
http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0
Expression Blend 3 + SketchFlow RC
http://go.microsoft.com/fwlink/?LinkID=157184
.NET RIA Services 2009 July Preview
http://go.microsoft.com/fwlink/?LinkId=144609
Deep Zoom Composer
http://go.microsoft.com/fwlink/?LinkID=157112
Silverlight Toolkit
http://codeplex.com/silverlight
Offline Documentation
http://go.microsoft.com/fwlink/?LinkID=144350
Breaking Changes Documentation (SL2 és SL3 között!)
http://go.microsoft.com/fwlink/?LinkID=157078
Az VS Tools for SL3 programmal kapcsolatban két dologra szeretném felhívni a figyelmeteket. Az egyik, hogy a telepítő letörli a VS Tools for SL2-t!
Emiatt a telepítés után csak SL3-as projekt templatek közül lehet válogatni. A VS2010-nél már lesz lehetőség arra, hogy az SL2 és az SL3 békésen megéljen egymás mellett. Viszont a jelenlegi VS beta meg nem támogatja teljes körűen a SL3 RTW verzióját, csak úgy, mint a .NET RIA Services-t sem!
Akinek esetleg szüksége lenne mindkét verziójú Silverlight-re VS08 mellett, annak ajánlom figyelmükbe Tim Heuer alábbi blog post-ját:
http://timheuer.com/blog/archive/2009/07/17/build-silverlight-2-and-3-apps-with-visual-studio-2008.aspx
A másik dolog, amire felhívnám a figyelmetek az az, hogy SL3-nál VS08-ban már nincsen a xaml-hez preview nézet!! Ez mondjuk nem is akkora nagy veszteség, hiszen általában pár órányi munka után bedobta a törülközőt a megjelenítő rendszer. VS2010-nél viszont már egy nagyon jól használható WYSIWYG editort kapunk majd. Emellett a Properties ablaknak is újból lesz értelme, illetve a Document Outline ablakban pedig megnézhetjük majd a vezérlők hierarchikus elrendezését.
Még mielőtt belevágnánk az SL3 újdonságaiba egy gyors kérdés: Miért nem néz ki mindegyik telepítő így?
A teljesség igénye nélkül nézzük meg milyen új dolgok kerültek bele a Silverlight 3.0-ba!
3D támogatás
Ez már nagyon kellett volna a 2.0-ás verzióba is, de onnan sajnos kimaradt. Az örömünk persze így sem teljes, ugyanis ez csak perspektivikus 3d, vagyis transzformációk segítségével keltünk térbeli hatást. Tehát nincsenek 3d-s modellek, nincsenek kamerák, stb. vagyis még mindig nagyon messze áll a WPF-es 3d-től, de ettől függetlenül egész jól használható! (A legújabb flash verzióban már full 3d támogatás van mellesleg…)
Pixel Shader Effect
Ezek olyan effektek melyekkel egyszerűen be tudjuk szürkíteni a képeket (grayscale), el tudjuk tüntetni a piros szemeffektust, tükröződést tudunk létrehozni, stb.. A dolog lényege, hogy egy algoritmus segítségével megadjuk azt, hogy az egyes pixelek miként jelenjenek meg. Ezeket az algoritmusokat egy úgy nevezett HLSL (High-Level Shader Language) segítségével írjuk le egy ps kiterjesztésű fájlban. Ezek lefordításához a DirectX SDK-ra van szükségünk.
Alapban két effekt található meg az SL-ben: a DropShadow és a Blur.
Média támogatás bővülése
Új codec-ek: H.264, AAC (audió), MPEG-4! Emellett FULL HD (1080p) támogatást is kapott végre az Silverlight 3, (SL2 csak a 720p-t tudta!). Ezeken felül pedig még belekerült egy úgynevezett Smooth Streaming is, ez egy adatív streaming algoritmus, amely teljesítményben alázza a flash-es társát. Persze ehhez van némi megkötés is, a médiák lejátszásához a szerver oldalon üzemelnie kell az IIS 7 Media Services-nek!
Ajánlom mindenki figyelmébe ezt a kis demo alkalmazást:
http://www.iis.net/media/experiencesmoothstreaming
BasedOn Style
Pont a múlt heti tanároknak tartott Silverlight-os tanfolyamon merült fel egy olyan kérdés, hogy ha van egy globálisan (Application.Resources), illetve egy oldal szinten (Usercontrol.Resources) tárolt azonos nevű stílusom, akkor a kettő összemosódik vagy pedig az alacsonyabb szinten lévő jut érvényre. Nos erre a kérdésre az a válasz, hogy az oldal szintű fog érvényre jutni, nem fog összemerge-lődni a két stílus. SL3-ban viszont már van erre is lehetőség, még pedig az úgynevezett BasedOn tulajdonság segítségével. Pontosabban itt azt mondjuk meg, hogy minden beállítást (Setter tageket) örököljön meg a paraméterként megadott stílustól az adott style objektum.
Easing Animáció
Amikor KeyFrame típusú animációkat készítünk, akkor lehetőségünk van arra, hogy befolyásoljuk az interpolációs görbét, annak érdekében, hogy minél realisztikusabban tudjunk egy-egy animációt elkészíteni. (Pl.: egy autó nem egyből 200km/h-ról indul, hanem nulláról és egyre gyorsabban éri el a maximális sebességét.) Ezekhez a KeySpline tulajdonságokat használtuk. Ezzel sajnos csak nagyon egyszerű „mozgásokat” tudtunk leírni (pl.: Easing In, Easing Out), ezért az SL 3.0 bekerültek úgynevezett Easing függvények (egyből 33db), annak érdekében, hogy sokkal valósághűben tudjunk „mozgásokat” készíteni. Néhány példa: Bounce, Circle, Elastic, stb..
Out of Browser támogatás
Talán ez a legérdekesebb az összes újdonság közöl. A dolog lényeg, hogy a Silverlight-os alkalmazásunkat fel tudjuk telepíteni a desktop-unkra és onnan tudjuk futtatni, anélkül, hogy a böngészőt elindítanánk. Fontos: A lementett verzió nem egyenlő azzal, hogy offline módban fut az alkalmazás, SŐT… arra is van lehetőségünk, hogy ha a „fenti” verzió megváltozik, akkor a „lokálisan” nálunk feltelepített SL progi automatikusan frissüljön!
Még egy dologra felhívnám a figyelmeteket, aki esetleg ezt a feature-t használta már az SL3 beta1-ben az nézze át újból az ehhez tartozó leírásokat, ugyanis sok mindent átneveztek, illetve megváltozott.
(Röviden a változások:
1) Deployment.ApplicationIdentity helyett Deployment.OutOfBrowserSettings
2) Lett egy új WindowSettings régió is, ahova átkerült a Title tulajdonság, illetve itt még meg lehet azt is adni, hogy a telepíthető verziónak mekkora legyen a mérete!
3) Nincsen többé szükség az AppManifest kézi módosítgatására, a Silverlight-os projekt tulajdonság ablakán keresztül is ugyanezt megtehetjük egy grafikus felület segítségével!)
LocalConnection
Ez a szolgáltatás arra való, hogy két azonos gépen futó Silverlight-os alkalmazás egymással tudjon kommunikálni. Ehhez mindösszesen két osztályra van szükségünk egy LocalMessageSender-re, illetve egy LocalMessageReceiver. A küldőnek a SendAsync metódust kell meghívnia, a fogadónak pedig a MessageReceived eseményre kell feliratkoznia.
Bitmap Caching + GPU használat
A képeknél most már van arra lehetőségünk, hogy gyorsítótárazzuk őket, annak érdekében, hogy ne kelljen mindig újból és újból lerenderelni az egész képet. Fontos nem csak az Image és MediaElement vezérlőnél használható ez, hanem egész objektum fáknál is, melyet a rendszer képes elmenteni képként és ezeket már be tudja cachelni. (Ehhez a szintén új WriteableBitmap osztályt használja a háttérben!)
Ha már a képeknél/animációknál/médiánál tartunk akkor érdemes megemlíteni azt is, hogy most már lehetőségünk arra is, hogy a lebegő pontos számításokhoz ne csak a CPU-t használjuk fel, hanem a GPU-t is. Ehhez plug-in szinten az EnabledGPUAcceleration-t true-ra kell állítani!
Element to Element Binding
SL 2.0 esetén adatkötésnél, ha arra volt szükségünk, hogy egy adott tulajdonság értékét egy másik vezérlő valamelyik tulajdonságával összekapcsoljuk, akkor azt csak csúnya gányolással lehetett megoldani (UserControl-hoz felveszünk egy új property-t, amely az új értéket szolgáltatja, és megvalósítjuk az INotifyPropertyChanged interfészt). Szerencsére SL 3.0-ban már van lehetőségünk direktbe ilyen típusú adatkötésre. Egyszerűen csak annyit kell tennünk, hogy az adatkötésnél megadjuk az ElementName-et is, amely annak a vezérlőnek nevét szabja mely, amelynek valamely tulajdonságát összeakarjuk kötni ezzel a bizonyos tulajdonsággal.
Validáció
Aki SL 2.0-ban írt üzleti alkalmazást az igazán nagyra fogja értékelni ezt a feature-t, ugyanis végre van validációs rendszer!!!! És nem csak kódbeli támogatást kapunk hozzá, hanem alapból vizuális megjelenítést (figyelmeztetést) is érvénytelen adatok esetén. Őszintén, nekem ez az egyik kedvenc újdonságom, ez már nagyon kellett volna SL 2.0-ba, de végre valahára megkaptuk. Hipp-hipp-hurrá!!!
Navigáció
Itt is van a másik nagyon fontos újdonság, amelynek szerintem alapból már az 1.0-ban is benne kellett volna lennie! Na mind1, a lényeg hogy van, és nagyon is használható. Két dologról kell mindenféleképpen beszélnünk a navigációs framework esetén: Frame+Page, illetve a DeepLinking+Routing.
Kezdjük először az első párossal! MS-nél a navigációt úgy gondolták el, hogy van egy alap oldalunk (ez a Frame), amelybe majd dinamikusan betöltünk contenteket (ezek pedig a Page-k). Kicsit hasonlít a koncepció az ASP.NET-es Master Page/Content Page párosra. Ha át akarunk navigálni egy másik oldalra, akkor azt meg tehetjük deklaratív módon (HyperlinkButton vezérlő NavigationUri + TargetName tulajdonságok segítségével), illetve imperatív módon is (this.MainFrame.Navigate(Uri source))!
Az oldalak közötti navigáció nagy mérték leegyszerűsíthető, ha nem a lapok teljes elérési útjára kell mindig hivatkozunk, hanem csak egy hozzájuk rendelt alias-ra. Ezt a technikát hívjuk Routing-nak, ehhez a Frame UriMapper tulajdonságát kell beállítani! (Természetesen van lehetőség alkalmazásszintű routingtábla definiálásra is!)
Végül pedig ejtsünk még néhány szót a DeepLinking-ről. A technika lényege az, hogy az alkalmazásunk egyes belső állapotaihoz (pl.: melyik lap van éppen megjelenítve) hozzárendelünk egy kódot. Ezt a kódot pedig úgy tudjuk megadni a böngészőnek, hogy az SL alkalmazást hosztoló aspx/html oldal címe után odaírjuk a következőt: #/MegjelenítettLapNeve. Így már használhatjuk a böngésző előre és hátra gombjait, elmentjük könyvjelezőként az alkalmazásunkat egy adott „fázisban” (újbóli betöltés esetén innen fog indulni az alkalmazásunk, nem a főoldalról!), stb..
Vezérlők
SL 3.0-ba bekerült egy jó pár hasznos és kevésbé hasznos vezérlő is. Ezeken nem szeretnék most egyesével végig menni mi mire jó, csak egyet szeretnék közülük kiemelni: DataForm. Ez egy rendkívül hasznos vezérlő, az ASP.NET DetailsView/FormView-nek felel meg körülbelül, csak kicsit felturbózva. Nagyon egyszerűen és jól használható vezérlő, ajánlom mindenki a figyelmébe!
Mellesleg jegyzem meg, hogy a Silverlight Toolkit-tel együtt, már több mint 100 Silverlight-os vezérlő érhető el a Microsoft jóvoltából!
(http://msdn.microsoft.com/en-us/library/cc645072(VS.95).aspx)
Néhány SL 3.0 újdonságaival foglalkozó oldal:
http://silverlight.net/getstarted/silverlight3/default.aspx
http://silverlight.net/learn/videocat.aspx?cat=12
http://msdn.microsoft.com/en-us/library/dd772166(VS.95).aspx
http://weblogs.asp.net/scottgu/archive/2009/07/10/silverlight-3-released.aspx
http://timheuer.com/blog/archive/2009/07/10/silverlight-3-released-what-is-new-and-changed.aspx
http://silverlight.net/blogs/jesseliberty/default.aspx
http://zoltanarvai.spaces.live.com/blog/cns!51C821AE48394A3D!448.entry
Microsoft ASP.NET Internals
Szerző: George Shepherd
About The Book
A comprehensive reference outlining the underpinnings of Microsoft’s Web application environment
Learn how to fully exploit the critical components and rich capabilities of the ASP.NET framework, without scouring blogs for information or enduring hours of trial and error. This comprehensive book offers developers the insights they need—including established architecture patterns—to create better, stronger, faster Web sites and Web-based applications Web services.
The book offers readers the guidance they need to take advantage of ASP.NET right away, and outlines the evolution and future of the technology.
Game Programming with Silverlight
(Szerző: Michael Snow)