I wreszcie nadeszła czwórka
Niespełna pół roku później, 18 listopada 2009 roku na konferencji PDC w Los Angeles, Microsoft ogłosił publiczną wersję beta Silverlight 4. Jest to produkt przełomowy pod względem liczby oczekiwanych funkcjonalności - zaimplementowano ok. 70% tych, które zgłosili użytkownicy przez stronę http://silverlight.uservoice.com/. Pomimo tego, wtyczka Silverlight zajmuje nadal poniżej 5 MB, instalacja trwa około 10 sekund. W nowej wersji aplikacje ładują się 30% szybciej, a ich prędkość działania wzrosła prawie dwukrotnie. Oprócz wspieranych wcześniej przeglądarek, dodano oficjalne wsparcie dla Google Chrome.
Wśród nowych cech znalazły się między innymi: wsparcie dla drukowania, obsługa kamer internetowych i mikrofonów, obsługa schowka, „drag & drop" dla plików przeciąganych do aplikacji, obsługa prawego przycisku myszy, osadzanie stron HTML wewnątrz aplikacji Silverlight, multicasting dla mediów oraz wsparcie offline dla zabezpieczeń DRM.
Dodano także obsługę uwierzytelnienia dla klas pozwalających na połączenia sieciowe, bogatą kontrolkę RichText do edycji tekstu z wielopoziomowym "Undo", pełne wsparcie dla zaawansowanych formularzy z walidacją danych. Wprowadzono także możliwą elewację uprawnień dla aplikacji działających poza przeglądarką - mogą one teraz nie tylko uzyskać dostęp do systemu plików, ale również korzystać z obiektów COM - przez co na przykład aplikacja Silverlight może wykorzystać funkcje pakietu Office.
Nowe cechy adresują trzy główne grupy tematyczne:
- Aplikacje Biznesowe
- Media
- Aplikacje działające poza przeglądarką
W dalszej części artykułu zostaną omówione krótko najważniejsze nowe cechy Silverlight 4, które wzbogacają możliwości w każdej z powyższych kategorii.
Aplikacje biznesowe
Drukowanie
Według http://silverlight.uservoice.com/ możliwosć drukowania z poziomu aplikacji Silverlight była najbardziej oczekiwaną funkcjonalnością. W wersji czwartej wprowadzono obiekt PrintDocument, który po wywołaniu metody Print() wyświetla znane dobrze użytkownikom okno wyboru drukarki.
private void PrintButton_Click(object sender, RoutedEventArgs e)
{
PrintDocument pd = new PrintDocument();
pd.DocumentName = "Dokument do wydruku";
pd.Print();
}
Aby wysłać dokument do druku należy obsłużyć zdarzenie PrintPage obiektu PrintDocument. Wewnątrz niego wystarczy przekazać właściwości e.PageVisual obiektu PrintPageEventArgs element, który chcemy wydrukować. Może być nim dowolny obiekt z XAML, który dziedziczy po klasie UIElement - obiekt bitmapy jak i dynamicznie lub statycznie utworzone drzewo XAML (widoczne lub ukryte). Model zdarzeń pozwala na oprogramowanie stronicowania.
Obsługa prawego przycisku myszy
Dodano nowe zdarzenie - MouseRightButtonDown pozwalające obsłużyć prawy przycisk myszy wewnątrz aplikacji Silverlight. Dotychczas po kliknięciu prawym przyciskiem w przestrzeń aplikacji, użytkownik zawsze musiał zobaczyć standardowe menu odsyłające go do konfiguracji Silverlight (patrz zdjęcie poniżej).
Jeśli w zdarzeniu MouseRightButtonDown oznaczona zostanie właściwość e.Handled (klasy MouseButtonEventArgs) jako true, standardowe menu nie zostanie wyświetlone. Zamiast niego użytkownik ujrzy menu kontekstowe zaprojektowane graficznie w dowolny sposób przez programistę. Dla uproszczenia można skorzystać z pomocniczej klasy Popup.
Drag & drop
Silverlight 4 umożliwia obsłużenie scenariuszy przeciągania plików bezpośrednio z systemu operacyjnego do aplikacji (zarówno działającej wewnątrz jak i poza przeglądarką). Wystarczy oznaczyć właściwość AllowDrop obiektu layout, który ma obsługiwać funkcjonalność przeciągania. W kodzie obsługi zdarzenia Drop dla layoutu należy pobrać z właściwości e.Data obiekt IDataObject, na którym następnie powinna zostać wywołana metoda GetData(). IDataObject.GetData() zwraca listę obiektów FileInfo po której iterując uzyskujemy strumienie do plików. Pozwalają one dowolnie wykorzystać zawartość przeciągniętych plików wewnątrz aplikacji Silverlight.
void LayoutRoot_Drop(object sender, DragEventArgs e)
{
IDataObject data = e.Data;
foreach (FileInfo fi in data.GetData())
{
FileStream stream = fi.Open(...)
}
}
Obsługa kamer internetowych i mikrofonu
Możliwe jest wykorzystanie dowolnego źródła dźwięku lub wideo w aplikacji, jeśli użytkownik wyrazi na to zgodę. Po wywołaniu metody:
if (!CaptureDeviceConfiguration.AllowedDeviceAccess)
{
CaptureDeviceConfiguration.RequestDeviceAccess();
// (...)
}
else
{
// (...)
}
użytkownik zostanie zapytany czy zgadza się na udostępnienie kamery i mikrofonu:
Po uzyskaniu akceptacji wystarczy skorzystać z obiektu CaptureSource i jego metod: otworzyć komunikację z urządzeniem poprzez Start(), dokonać np. zrzutu ekranu do obiektu WritableBitmap poprzez wywołanie metody AsyncCaptureImage a na koniec zamknąć komunikację wywołując Stop(). To oczywiście najprostszy scenariusz - bardziej zaawansowany przykład mógłby wykorzystywać tzw. Pixel Shadery do dynamicznej manipulacji obrazem z kamery czy wykonywania innych oczekiwanych operacji na przechwyconym materiale.
Klasa CaptureDeviceConfiguration pozwala również na wyświetlenie użytkownikowi listy dostępnych urządzeń i wybranie tego, z którego powinna skorzystać aplikacja.
Obsługa schowka
Dostęp do schowka również wymaga uzyskania zgody od użytkownika. Kiedy już zostanie ona wyrażona, możliwe jest w sposób programowy skopiowanie lub odczytanie danych ze schowka wykorzystując metody statyczne GetText() i SetText() klasy Clipboard.
Kontrolka RichTextArea
Zaawansowana kontrolka, która pozwala wizualnie edytować tekst. Umożliwia m.in.: wykorzystywać hiperłącza i zagnieżdżoną grafikę, modyfikować wygląd czcionek, itp. Kontrolka wspiera także oba kierunki pisania tekstu (tzw. BIDI) oraz wielopoziomowe „Undo".
Usprawnienia w Data Binding
Silverlight 4 wprowadza znaczące usprawnienia w bindowaniu danych. Możliwe jest teraz bindowanie do instancji obiektów DependencyObject, indekserów String, określenie w sposób deklaratywny sposobu formatowania obiektu String, wartości domyślnych, grupowanie elementów kolekcji. Visual Studio 2010 znakomicie wspiera Data Binding w aplikacjach Silverlight - operacje takie jak zastosowanie konwertera do obiektu string (kiedy zawiera URI) na grafikę czy widok master / detail dla danych można teraz „wyklikać".
Bardzo ciekawe są także nowe możliwości walidacji danych. Po implementacji interfejsu INotifyDataErrorInfo lub IDataErrorInfo przez nasz obiekt biznesowy uzyskujemy automatyczne sprawdzanie poprawności danych w warstwie interfejsu użytkownika.
Multicasting i UDP
Przestrzeń nazw System.Net.Sockets w Silverlight 4 wspiera komunikację typu multicast poprzez protokół User Datagram Protocol (UDP). Pozwala ona w sposób wydajny przesyłać wiadomości do bardzo dużej liczby klientów i dobrze się skalować.
Uwierzytelnianie w komunikacji sieciowej
Dodano wsparcie dla wszystkich typów uwierzytelniania w komunikcji sieciowej (np. klasy WebClient). Wspierane jest zarówno uwierzytelnianie NTLM, Digest jak i Basic. Możliwe jest przekazanie danych użytkownika przy pomocy klasy NetworkCredential lub skorzystanie z domyślnych danych uwierzytelniających ustawiając właściwość UseDefaultCredentials klasy WebClient na true.
Ładowanie





Dyskusja
dodaj komentarz