Silverlight Architecture Overview
Încă sunt uimit de numărul de blog post-uri de la Microsoft care menţionează de Silverlight. Aseară am văzut un lucru foarte bun. Silverlight va fi suportat în curând şi de Opera (care este pe departe browser-ul meu preferat). Am citit aici anunţul şi apoi am şi văzut O-ul de la Opera pe deja celebra hartă de development pe Silverlight cu o notă mică pe care scrie "soon".
Lucian mi-a luat-o înainte prin anunţarea promisiunii lui Miguel de Icaza despre Silverlight-ului pe Mono (şi nici nu a ezitat să mă anunţe pe IM).Ce trebuie înţeles de aici? Că Lucian ştia dinaintea mea?
Nu. Trebuie înţeles că Miguel de Icaza a rămas impresionat de Silverlight după prezentările de la MIX.
Vreau astăzi să scriu câte ceva despre detaliile tehnologiei Silverlight, pentru că în primul meu post despre WPF/E am promis că voi face asta mai târziu.
Ok, să vorbim despre partea de arhitectură.
Primul lucru este această hartă. Aici este concentrat tot ceea ce am eu de gând să scriu.
În linii mari, Silverlight este formată din două mari părţi (+ installer-ul şi componenta de update, care apropos face update automat):
- Core Presentation Framework. Aceasta este aşa numitul stripped WPF, deci conţine componente şi servicii orientate UI şi interacţiune. Adică: input, controale lightweight pentru web, componente media, digital rights management (
), text, animaţii, etc.. Şi un DOM API pentru XAML (ţineţi minte când încărcam dinamic un obiect XAML?).
- Un subset al .NET Framework-ului, care conţine librării şi componente de bază, dynamic language compilation şi un CLR (şi un DLR).
- Installer-ul şi componenta de update.
O diagramă mai sugestivă:
Ce este cu galben aparţine Silverlight 1.1 (celebru pentru DLR).
Principiul pe care fucţionează este acelaşi (pe care l-am menţionat de la bun început). XAML-ul reprezintă legătura dintre partea de prezentare şi .NET Framework. XAML-ul poate fi manipulat folosind acest DOM API din JavaScript sau din orice limbaj (adică C#, Managed JScript, IronPython, Ruby) în versiunea 1.1.
Despre ce nu am zis aproape nimic este de .NET Framework în Silverlight.
- Partea de date. Avem integrat LINQ si XLinq pentru acces la date, plus este şi suport de serializare şi XML (normal)
- Base Class Library. Un set de clase de bază în .NET Framework, incluzând manipulare de string-uri, expresii regulate, reflection, colecţii, etc...
- Networking. Suport pentru servicii web, un obiect de tip Browser, acces la RSS, un obiect HTTP request şi response
- Common Language Runtime. The usual... garbage collection, management de memorie, excepţii şi type safety
- Dynamic Language Runtime. This is big. Avem suport pentru compilarea dinamică şi execuţie a scripturilor scrise în limbaje gen Phyton şi, cel mai tare, suport gen plug-in pentru extinderea Framework-ului în a suporta şi alte limbaje.
Alte facilităţi interesante ar fi Isolated Storage, safe file management pentru upload de fişiere. Un lucru foarte util şi care chiar l-am folosit este HTML interaction, care permite acces la HTML DOM-ul paginii curente. Merge şi invers, când un script poate accesa obiecte publice and stuff din aplicaţia noastră (Greasemonkey anyone?).
Alte lucruri ar mai fi JavaScript Object Notation care permite apelarea serviciilor web ASP.NET din JavaScript şi POX, care permite apelarea serviciilor web simple XML.
Cei interesaţi de DLR, pot asculta acest podcast de pe Channel9. Are jumătate de oră, şi este un "interviu" la telefon cu John Lam, care a lucrat mult în Ruby înainte să lucreze la Microsoft (şi aicolo tot în Ruby lucrează
).
Cam atât.
Referinţele sunt whitepaper-urile de pe silverlight.net.
În loc de încheiere, cu dedicaţie pentru cei care au fost la prezentările mele de la Academic Tour şi se mirau de ce puneam atât de mult accent pe Media Integration Layer şi tot menţionam de Don Box la WCF, fiţi atenţi ce zice Don Box:
"In Indigo (WCF), the rocket science is in IChannel and Message.
In Avalon (WPF), the rocket science is in the Media Integration Layer (MIL)."
Later Edit:
Am trecut de 10.000 de vizitatori (unici?). YEY!!
Technorati tags: WPF, tutorials