8. 8
Как правильно, Windows RT или WinRT?
Windows RT
Редакция Windows 8 для
планшетов с процессорами ARM
Поддерживает только Windows
Store приложения
WinRT (Windows Runtime)
Программная оболочка для
Windows Store приложений
9. 9
Metro UI == Modern UI
Metro UI
Стиль оформления пользовательского
интерфейса от компании Microsoft
Modern UI
Новое название Metro UI, так как бренд Metro
оказался занят
10. 10
Что же мы пишем?
Metro Apps
Modern Apps
Windows 8 Apps
Windows Store Apps
Universal Apps
WinRT Apps
13. 13
Распространение приложений
Windows Store
Side Loading 1
• ключ 100$ для неограниченного количества
устройств
Side Loading 2
• Windows 8 Pro или Enterprise
• в домене со специальной политикой
Ежемесячное обновление Developer License
21. 21
Prism.StoreApps (ViewFirst)
На уровне ViewModel
NavigationService.Navigate("MainPage", "arg");
На уровне View
<storeApps:VisualStateAwarePage
storeApps:ViewModelLocator.AutoWireViewModel="true">
22. 22
MugenMvvmToolkit (ViewModel First)
На уровне ViewModel
using (var vm = GetViewModel<FirstViewModel>())
{
vm.DisplayName = "First";
await vm.ShowAsync();
}
На уровне View
магия конвенции именования
24. 24
Flyout (ViewModel First)
На уровне ViewModel
var vm = Manager.Resolve<AddProductFlyoutViewModel>();
if (await vm.ShowAsync())
{ //Add product to store
}
На уровне View
<AppBarButton
child:FlyoutView.FlyoutToken="AddProduct" />
25. 25
SettingsFlyout (ViewModel First)
На уровне ViewModel
var vm = Manager.Resolve<AppSettingsFlyoutViewModel>();
vm.ShowIndependent = true;
await vm.ShowAsync();
На уровне View
магия конвенции именования
26. 26
SOAP-сервисы
Windows Store
• Есть поддержка SOAP сервисов
Windows Phone 8.1
• System.ServiceModel больше не
поддерживается
• Промежуточный REST сервис
• А что, если без него обойтись?
27. 27
Аналог «Add Service Reference»
• Реализован базовый класс SoapClientBase
• По WSDL генерируем код при помощи SvcUtil
• Анализируем его с помощью Reflection
• Строим модель при помощи CodeDom
• Генерируем код SoapClient
30. 30
Сгенерированный интерфейс
public interface ITestService
{
Task<Operation1Response>
Operation1Async(Operation1Request request);
Task<Operation2Response>
Operation2Async(Operation2Request request);
}
public class Operation1Request { }
public class Operation1Response { }
public class Operation2Request {
public int arg;
}
public class Operation2Response {
public string Operation2Result;
}
31. 31
Сгенерированная реализация
public partial class ITestServiceClient : SoapServices.SoapClientBase,
ITestService
{
public virtual Task<Operation1Response>
Operation1Async(Operation1Request request)
{
return CallAsync<Operation1Request, Operation1Response>
("http://tempuri.org/ITestService/Operation1", request);
}
public virtual Task<Operation2Response>
Operation2Async(Operation2Request request)
{
return CallAsync<int, Operation2Response>
("http://tempuri.org/ITestService/Operation2", request.arg);
}
}
32. 32
Что готовит Windows 10
Валидация сейчас
• Есть IDataErrorInfo, INotifyDataErrorInfo
• В Binding нет ValidatesOnDataErrors и
ValidatesOnExceptions
• Решение – велосипед (Prism, Mugen, …)
В Windows 10
• UI конпоненты получат свойство
ValidationState и коллекцию ValidationErrors
33. 33
Резюме
Недостатки
Привычного может не быть
– DynamicProxy
– Валидация
В новой версии чего-то
может не стать
– SoapClient для Windows
Phone 8.1
Достоинства
Портированы популярные
.NET библиотеки
Реализованы библиотеки UI
компонентов
Можно создавать сложные
бизнес-приложения
– Системы отчетности