Кросс платформенность
В следующей таблице отражена совместимость Silverlight различных версий с браузерами и операционными системами.
ОС/Браузер | IE 6 SP1 | IE 6 SV1 | IE 7 | IE 8 | Firefox | SeaMonkey | Safari | Konqueror | Opera | Google Chrome |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista/2008 | - | - | 1.0, 2.0, 3.0 | 2.0, 3.0 | 1.0, 2.0, 3.0 | 2.0 | 1.0, 2.0; через NPAPI | - | Неофициально | 2.0 |
Windows XP/2003/Home Server | - | 1.0, 2.0, 3.0 | 1.0, 2.0, 3.0 | 2.0, 3.0 | 1.0, 2.0, 3.0 | - | 1.0, 2.0; через NPAPI | - | Неофициально | 2.0 |
Windows 2000 | 2.0 | - | - | - | 2.0 Неофициально | - | 2.0; через NPAPI | - | Запланирована | - |
Windows Mobile 6 | 2.0 | - | - | - | - | - | - | - | - | - |
Mac OS 10.4/10.5 PowerPC | - | - | - | - | 1.0 | - | 1.0 | - | Запланирована | - |
Mac OS 10.4/10.5 Intel | - | - | - | - | 1.0, 2.0 | - | 1.0, 2.0 | - | Запланирована | - |
Асинхронная коммуникация
Приложение Silverlight изначально предназначено для работы через веб соединение. Через веб соединение происходит обращение к данным, файлам, картинкам, веб-сервисам и т.д. Веб соединение может быть очень медленным. И если не предпринять специальных шагов, то каждый раз при нажатии кнопки, будет замедление и "торможение" работы элементов управления и всего приложения.
Вот пример как это сделать при обращении к ленте новостей агентства Рейтер:
private void FeedsReuters() { Uri url = new Uri ("http://feeds.reuters.com/reuters/oddlyEnoughNews?format=xml"); WebClient client = new WebClient(); client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompleted); client.DownloadStringAsync(url); } void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { XDocument xmlHeadlines = XDocument.Parse(e.Result); //Обработка результата XML документа }
Вызов веб-сервиса происходит асинхронно DownloadStringAsync, когда сервис возвратит данные отработает метод DownloadStringCompleted, возвращая результат, как DownloadStringCompletedEventArgs. Результат показан на рис.2.1
Если отключить соединение с интернетом или в случае, когда сервер недоступен, приложение не "зависнет", а будет работать дальше, но выдавать исключения отсутствия соединения. Такая ситуация показана на рис.2.2.
В "Работа вне браузера и с web-сервисами" "Работа Silverlight с базами данных" представлен еще один пример асинхронных вызовов.