Posted on 3. May 2018

Новое имя UWP Community Toolkit: Windows Community Toolkit

Уже в следующем обновлении UWP Community Toolkit будет переименован на Windows Community Toolkit. Это действительно большой шаг в развитии инструментария и сообщества.

Впервые инструментарий был выпущен более полутора лет назад с 26 различными функциями. С тех пор Microsoft добавили пять новых пакетов в девять новых выпусков, каждый из которых включает в себя новые элементы управления, помощники, службы, расширения, объектные модели и многое другое – большинство из элементов поступает сразу из сообщества. Сегодня существует более 100 различных функций. Вы можете сравнить количество элементов управления (и категорий) на примере приложения с первоначальной версии:

UWP Community Toolkit Sample App (версия 1.0)

UWP Community Toolkit Sample App (версия 2.0)

Когда Microsoft выпустили UWP Community Toolkit, было много отзывов о добавление возможности для разработчиков, поделиться компонентами инструментария с другими инфраструктурами, такими как WPF, WinForms, Xamarin, .NET Core и другими. С помощью сообщества, в версии 2.0 Microsoft идентифицировали компоненты, которые могли быть учтены в библиотеках .NET Standard, и создали новые пакеты .NET Standard для того, чтобы все разработчики могли воспользоваться преимуществами работы сообщества. Сегодня многие из сервисов, помощников и парсеров являются кросс-платформенными и могут использоваться везде. Более того, Microsoft продолжает работать над тем, чтобы добавить еще больше преимуществ.

 

Главная цель сообщества – привлечение большего количества разработчиков, поэтому, начиная со следующей версии Windows Community Toolkit, Microsoft предоставят возможность другим Windows разработчикам, работающим на Windows 10 платформе, использовать все преимущества компонентов инструментария. Таким образом, новое имя привлечет всех Windows разработчиков.

Microsoft с энтузиазмом работает над следующим обновлением инструментария, которое планируется на конец мая. Работа над обновлением доступна для всех, и Microsoft приглашает всех разработчиков принять участие и внести свой вклад. Чтобы начать работу с самым грандиозным обновлением уже сегодня, посетите GitHub репозиторий и погрузитесь в код. Или, если Вы предпочитаете работать с NuGet пакетами, они будут опубликованы для предварительного просмотра в NuGet перед конференцией Microsoft Build. Microsoft будет обновлять документацию и пример приложения одновременно, пожалуйста, обратите внимание, что это пакеты предварительного выпуска, и они могут измениться в окончательной версии. 

Чтобы присоединиться к беседе в Twitter, используйте хэштег #windowstoolkit. Microsoft также будут рады видеть Вас на конференции Microsoft Build 2018!



Posted on 18. May 2017

Announcing Project Rome iOS SDK

Project Rome – это платформа для обеспечения беспрепятственного межсетевого и кросс-платформенного использования.  Цель Project Rome очень проста - работа пользователя с приложением не должна быть привязана к одному устройству больше, чем данные, которые должны привязываться к одному устройству. Ваши приложения, также как и ваши данные, должны перемещаться вместе с вами.

Раньше это означало переход между устройствами при сохранении одного пользовательского интерфейса на другом устройстве Windows. Несколько месяцев назад функции Project Rome были расширены на платформу Android, что позволяет вам начать сеанс пользования приложением на телефоне Android и продолжить его на ПК с операционной системой Windows, на Xbox One или даже в Surface Hub.

На сегодняшний день, поддержка Project Rome также доступна для платформы iOS. Здесь вы можете скачать Project Rome SDK для iOS.


Рассмотрение музыкального приложения Contoso

Пример Contoso Music хорошо показывает сценарии работы пользователя с приложением на разных устройствах.

Это приложение для потоковой передачи музыки UWP, которое работает на нескольких устройствах Windows, привязанных к одной и той же учетной записи Microsoft (MSA). Используя Project Rome, приложение работает таким образом, чтобы пользователь, передающий песню на ПК с ОС Windows, мог передать эту песню на свой Xbox. После этого, он всегда может переместить текущий плейлист на свой Windows Phone перед тем, как выйти на пробежку.

Расширение для iOS

Представим себе, что, основываясь на успехе версий Windows и Android, разработчик создает iOS-версию Contoso Music. Изучая его телеметрию через несколько месяцев, видим, что все приложения успешны также, как и его версии для Windows и Android. Однако в отзывах пользователей есть общая тема: Пользователи затрудняются с переключением между устройствами. Итак, планируем добавить такую возможность, чтобы пользователь могу слушать музыку на iPhone через наушники, а затем войти в гостиную и незамедлительно переключиться на воспроизведение той же музыкальной композиции через свой Xbox, подключенный к качественным динамикам.

С Project Rome iOS SDK мы можем создать мост между устройствами iOS и устройствами Windows в два этапа:

 

  • RemoteSystems API позволяет приложению обнаруживать устройства Windows, которыми владеет пользователь. RemoteSystems API позволит приложению Contoso Music обнаруживать эти устройства в той же сети или через облако.
  • После обнаружения устройств, RemoteLauncher API  запустит приложение Contoso Music на другом устройстве Windows.

 

Как это работает?

Чтобы переключиться с воспроизведения музыки с устройства iOS на устройство Windows, приложение должно распознать другое устройство. Для этого требуется использование MSA OAuth, чтобы получить разрешение на запрос для устройств, а затем обнаруживать дополнительные устройства, как показано на диаграмме ниже.


 

 

 

// Asynchronously initialize the Rome Platform.
  // Pass in self as class implements the CDOAuthCodeProviderDelegate protocol.
  [CDPlatform startWithOAuthCodeProviderDelegate:self completion:^(NSError* clientError) {
                                              if (clientError)
                                              {
                                                  // Handle error
                                                  return;
                                              }
 
                                              // Handle success, show discovery screen
                                      }];
 
// Implementation of CDOAuthCodeProviderDelegate
// The Rome SDK calls this delegate method when it needs an OAuth Access Code from the application.
- (NSError*)getAccessCode:(NSString*)signinUrl completion: (void (^)(NSError* error, NSString* accessCode))completion {
 
// Stash away the callback the SDK gives us
_getTokenCallback = completion;
 
  // Show the interactive OAuth Web View flow.
  // Once the OAuth flow completes or fails, invoke this callback.
  ...
 
// Return nil as there was no error
  return nil;
}

 

 

После инициализации, приложение может распознавать все устройства на графике устройства пользователя MSA, инициировав распознание с помощью CDRemoteSystemDiscoveryManager. Информация об обнаруженных устройствах создается через протокол CDRemoteSystemDiscoveryManagerDelegate. В примере Microsoft каждое обнаруженное устройство сохраняется в свойстве NSMutableArray.

 

// Create instance and pass ‘self’ as the delegate as it implements CDRemoteSystemDiscoveryManagerDelegate.
CDRemoteSystemDiscoveryManager* remoteSystemDiscoveryManager = [[CDRemoteSystemDiscoveryManager alloc] initWithDelegate:self];
 
// Start discovery.
[remoteSystemDiscoveryManager startDiscovery];
 
// CDRemoteSystemDiscoveryManagerDelegate implementation
- (void)remoteSystemDiscoveryManager:
            (CDRemoteSystemDiscoveryManager*)discoveryManager
                             didFind:(CDRemoteSystem*)remoteSystem {
  @synchronized(self) {
     [self.discoveredSystems addObject:remoteSystem];
      // Refresh UI based upon updated state in discoveredSystems e.g. populate table
   }
}
 
- (void)remoteSystemDiscoveryManager:
            (CDRemoteSystemDiscoveryManager*)discoveryManager
                           didUpdate:(CDRemoteSystem*)remoteSystem {
  NSString* id = remoteSystem.id;
 
// Loop through and update the Remote System instance if previously seen.
  @synchronized(self) {
    for (unsigned i = 0; i < self.discoveredSystems.count; i++) {
      CDRemoteSystem* currentRemoteSystem =
          [self.discoveredSystems objectAtIndex:i];
      NSString* currentId = currentRemoteSystem.id;
 
      if ([currentId isEqualToString:id]) {
        [self.discoveredSystems replaceObjectAtIndex:i withObject:remoteSystem];
        break;
      }
    }
 
       // Refresh UI based upon updated state in discoveredSystems e.g. populate table
  }
}

 

 

Теперь пользователь может выбрать устройство, на которое он хочет перенести проигрывание музыки, из списка обнаруженных устройств. Из выбранной CDRemoteSystem образец создания CDRemoteSystemConnectionRequest показан на диаграмме последовательности ниже. Используя CDRemoteLauncher, можно удаленно запускать приложение на выбранном устройстве, а также добавлять необходимую дополнительную контекстуальную информацию, такую как воспроизводимая в данный момент песня.

 

 

Здесь вы можете ознакомиться с тем, как дистанционно запустить http://www.bing.com  на вашем устройстве:

 

// Create a connection request using the CDRemoteSystem instance selected by the user
  CDRemoteSystemConnectionRequest* request =
       // Using the RemoteSystem above, [self.discoveredSystems addObject:remoteSystem];
      [[CDRemoteSystemConnectionRequest alloc] initWithRemoteSystem:system];
 
NSString* url = @”http://www.bing.com”;
 
  [CDRemoteLauncher
           launchUri:uri
           withRequest:request
           withCompletion:^(CDRemoteLauncherUriStatus status) {
            // Update UI on launch status
            }];

 

 

Как видите достаточно легко расширить поддержку кросс-устройств для iOS в своем приложении.

В Завершении

Project Rome разрушает барьеры, изменяя представления о том, что такое «приложение», и фокусируясь на пользователе независимо от того, где он находится или какое устроство использует. Теперь приложение не обязательно должно означать что-то, что привязано к одному устройству, вместо этого оно может быть чем-то, что существует между вашими устройствами и оптимизировано для нужного устройства в нужное время.

Чтобы узнать больше о Project Rome, ознакомьтесь с предоставленными ниже ссылками.

 

 

 



Posted on 28. March 2012

Презентации докладов MS SWIT 2012

22 и 23 марта компания Microsoft провела свое самое большое в году мероприятие для разработчиков и IT специалистов, на которой присутствовало 800 человек занятых в IT индустрии Украины. На конференции можно было узнать о последних направлениях, которые развивает компания и познакомиться с интересными людьми. Те кто не приехал – могли смотреть онлайн трансляцию основного потока докладов конференции в котором рассказывали о возможностях новой платформы Windows 8.

На конференции компания DCT была представлена 4-мя докладчиками: Ангелина Лукошкина (эксперт по дизайну Metro и Windows Phone приложений), Денис Резник (MS SQL MVP), Александр Фещенко (Microsoft Azure MVP) и я.

Презентации моих докладов смотрите ниже:

Разработка игр для Windows Phone

Metro Style Applications: интеграция с платформой

Учасники конференции получили книгу “Windows 8 для C# разработчиков” соавтором которой я являюсь. Сейчас можно скачать ее pdf версию:

Windows 8 для C# разработчиков

Вскоре должны опубликовать видео записи всех докладов конференции. После публикации обновлю статью, добавлю видео. Следите за изменениями в моем блоге.



Posted on 15. November 2011

Windows Phone 7.5 MiniCamp

WP7MiniCamp

Компания Microsoft Ukraine продолжает нас радовать мероприятиями посвященными платформе Windows Phone 7. На очередном мероприятии, которое пройдет 24 ноября в офисе компании, речь пойдет о новых возможностях платформы Windows Phone Mango. Расписание мероприятия:

09:00–09:30 Регистрация

09:30–10:30 Создание приложений для Windows Phone 7.5, средства разработки.

Андрей Терехов, директор департамента стратегических технологий, Майкрософт Украина

10:30–11:30 Многозадачность в Windows Phone 7.5,

Сергей Лутай, Digital Cloud Technologies, Silverlight MVP, MCT, MCPD

11:30–12:00 Кофе, перерыв

12:00–13:00 Live Tiles и Push Notification
Александр Краковецкий, разработчик программного обеспечения MVP/ RD,
автор
wp7rocks.com

13:00–14:00 Разработка игр под Windows Phone 7.5.

Сергей Лутай, Digital Cloud Technologies, Silverlight MVP, MCT, MCPD

14:00–14:30 Обед

14:30–15:00 METRO. Дизайн под Windows Phone.

Никита Лукьянец, UX-евангелист, Майкрософт Украина

15:00–16:00 Интеграция с поиском, контактами, Picture Hub и др.

Сергей Байдачный, специалист по разработке программного обеспечения, Майкрософт Украина

Зарегистрироваться на мероприятие можно на официальной странице



Posted on 1. September 2011

Доступен Silverlight 5 RC

silverlight5featuresСегодня стал доступен для загрузки Silverlight 5 Release Candidate версия. Текущая версия предназначена для разработчиков(go-live лицензия отсутствует), что бы у нас было время подготовить наши проекты к выходу финальной версии Silverlight 5, позже в этом году Smile. Используйте этот релиз, что бы подкорректировать соответствующие пространства имен и ссылки на сборки, а также добавить новые возможности.

В эту версию были включены следующие возможности:

  • событие DataContextChanged;
  • поддержка 64х ОС;
  • поддержка P/Invoke;
  • “векторная” печать;
  • доверительный режим внутри браузера;
  • PivotViewer компонент;
  • управление режимом энергосбережения – заключается в отключении заставки во время просмотра видео.

О всех нововведениях в RC версии читайте здесь

Кроме этого было сделано ряд изменений в размещении некоторых пространств имен XNA и файлов. Например некоторые вещи, касающиеся работы с 3D, находятся в разных сборках.

Скачать:



Posted on 28. July 2011

SharePoint 2010 and Windows Phone 7 Training Kit

На сайте Microsoft Download Center доступен для загрузки SharePoint 2010 and Windows Phone 7 Training Kit. Он создан для разработчиков, которые знакомы с созданием приложений для Windows Phone 7 и SharePoint 2010. Курс нацелен на создание приложений, которые используют обе платформы. Если вы новичок в разработке Windows Phone 7 приложений, то рекомендую для начала пройти курс Windows Phone 7 Training Kit. Новичкам в SharePoint 2010 - SharePoint 2010 Developer Training Kit.

Training Kit состоит из нескольких частей:

  • Introduction to Windows Phone 7 Development
  • Setting Up A SharePoint and Windows Phone 7 Development Environment
  • SharePoint 2010 Mobile Web Development
  • Integrating SharePoint Data in Windows Phone 7 Applications
  • Advanced SharePoint Data Access in Windows Phone 7 Applications
  • Security With SharePoint And Windows Phone 7 Applications
  • Integrating Push Notifications with SharePoint Data in Windows Phone 7 Applications
  • Integrating SharePoint 2010 and Windows Azure
  • Deploying Windows Phone 7 Applications
  • SharePoint and Windows Phone 7 Tips and Best Practices
Каждая часть курса содержит презентацию и набор лабораторных работ.

Posted on 18. May 2011

Интеграционный пакет Silverlight для Microsoft Enterprise Library 5.0

PNP_Silverlight

Команда P&P выпустила Silverlight Intergartion Pack для Microsoft Enterprise Library. Данная версия решения содержит компоненты, содержащие рекомендованные практики содействующие обеспечению согласованности, расширения, легкости использования, интеграции. А также руководство по использованию. Кроме этого, решение предназначено для тех, кто хочет перенести свое готовое бизнес решение, использующее Enterprise Library, на Silverlight.

Текущая версия включает в себя:

· Блок кеширования:

    • Кеширование в памяти;
    • Кеширование в изолиронном хранилище;
    • Политики очистки и истечения срока действия;
    • Уведомление о чистке кеша.

· Блок верификации:

  • Много уровневая комплексная валидация;
  • Правила валидации, основанные на атрибутах;
  • Конфигурационная система правил валидации;
  • Простоя валидация между несколькими полями;
  • Многослойная валидация(через WCF RIA Services);
  • Поддержка установки множественных правил;
  • И др.

· Блок логирования:

  • Слушатель трассировки уведомлений;
  • Слушатель трассировки изолированного хранилища;
  • Фильтры логирования;
  • Трассировка;
  • Мощная настройка встроенных валидаторов.

· Блок обработки ошибок:

Простота настройки;

  • Обработчик логирования;
  • Обработчик замены;
  • Обработчик переносов.

· Unity блок – контейнер dependency injection

· Блок политики инъекций

  • Обработчик валидации;
  • Обработчик ошибок
  • Обработчик логирования.

· StockTrader V2 (на данный момент не релиз версия)

clip_image002

Детальнее читайте в блоге Grigori Melnik

Скачать Silverlight Integration Pack for Microsoft Enterprise Library 5.0



Posted on 14. April 2011

Silverlight 5: Неявные шаблоны

Одна из новых возможностей Silverlight 5 - это использование неявных шаблонов данных. Уверен – вы уже работали с шаблонами данных при использовании элементов управления ListBox, DataGrid, ComboBox и другими. Шаблоны данных позволяют указать формат/разметку отображения не интерфейсных данных и использовать эту разметку в различных местах нашего приложения.

Неявные шаблоны позволяют формировать разметку, базируясь на типе данных. В более ранних версиях технологии необходимо было указывать ключ шаблона, что бы его использовать в нескольких местах приложения. Используя неявные шаблоны, нам необходимо лишь указать, для какого типа данных необходимо использовать шаблон. И так приступаем от слов к делу.

Создаем новый Silverlight 5 проект.

image

И добавляем несколько типов данных

public class Customer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Title { get; set; }
    public string Company { get; set; }
}

public class Employee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Room { get; set; }
}

Следующий шаг, добавим несколько шаблонов данных в ресурсы приложения(файл App.xaml)

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             x:Class="ImplicitDataTemplate.App"
             xmlns:data="clr-namespace:ImplicitDataTemplate">
    <Application.Resources>
        <DataTemplate DataType="data:Customer">
            <Grid Background="LightSkyBlue">
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition/>
                Grid.RowDefinitions>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding FirstName, StringFormat='\{0\} '}"/>
                    <TextBlock Text="{Binding LastName}"/>
                StackPanel>
                <StackPanel Grid.Row="1">
                    <TextBlock Text="{Binding Title}" FontStyle="Italic"/>
                    <TextBlock Text="{Binding Company, StringFormat='Компания: \{0\}'}" FontWeight="Bold"/>
                StackPanel>
            Grid>
        DataTemplate>
        <DataTemplate DataType="data:Employee">
            <Grid Background="LightGreen" >
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition/>
                Grid.RowDefinitions>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                    <TextBlock Text="{Binding FirstName, StringFormat='\{0\} '}"/>
                    <TextBlock Text="{Binding LastName}"/>
                StackPanel>
                <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
                    <TextBlock Text="{Binding Room, StringFormat='Комната: \{0\}'}" FontStyle="Italic"/>
                StackPanel>
            Grid>
        DataTemplate>
    Application.Resources>
Application>

И последний момент, создание тестовых данных в приложении, связывание их с формой

this.DataContext = new List<object>
            {
                new Customer{ FirstName="Иван", LastName="Копаткинский", Company="Топинамбур", Title="Бухгалтер"},
                new Customer{ FirstName="Дмитрий", LastName="Вирутон", Company="Пальма туриста", Title="Менеджер"},
                new Employee{ FirstName="Павел", LastName="Уловинко", Room=101}
            };

и добавление компонента ListBox для отображения списка данных

<Grid x:Name="LayoutRoot" Background="White">
        <ListBox ItemsSource="{Binding}"/>
    Grid>

Теперь нажимаем F5 и любуемся нашим результатом работы Smile

image

Скачать пример:



Posted on 13. April 2011

Доступен Silverlight 5 Beta

imageКак и обещали, получаем первую публичную версию Silverlight 5 Beta. Пока еще не все анонсированные возможности реализованы, но пробовать уже сделаное и оставить свой отзыв можно. И так, из реализованного в текущей версии:

  • улучшения в связывании данных(отладка, связывание в стилях, связывание по типу, выбор шаблона в зависимости от типа данных и др.);
  • возможности работы с 3D графикой;
  • счетчик кликов в обработчиках xxxMouseUp и xxxMouseDown;
  • SoundEffect;
  • Улучшения в отображении текста и работе с ним;
  • изменение скорости воспроизведения медиа контента;
  • возможность создания пользовательской разметки;
  • декодирование видео H.264 на ресурсах видео карты;
  • полная поддержка клавиатуры в полноэкранном режиме;
  • ряд улучшение в оптимизации работы приложений;
  • возможность использование виндовс окон при работе в доверительном режиме;
  • использование возможностей доверительного режима в приложении в браузере(через конфигурацию групповых политик);
  • улучшения в сетевом взаимодействии с сервером;

Более детально об использовании новых возможностей читайте в следующих постах.

Другие ресурсы для загрузки:



Posted on 6. April 2011

Материалы конференции “Дни разработчиков–Весна 2011”

Как обещал – выкладываю материалы мероприятия.















Плюс, немного фотографий Севастополя (только здесь у меня было свободное время Smile )

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна