codefest 2012. Сошников Д. — Разработка мобильных приложений...

51
Программирование на платформе Майкрософт v.2012 Дмитрий Сошников Координатор академических программ, евангелист Microsoft Россия Twitter: @shwars , dmitryso@ microsoft.com

Upload: codefest

Post on 29-Nov-2014

812 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Программирование на платформе Майкрософт v.2012Дмитрий СошниковКоординатор академических программ, евангелистMicrosoft РоссияTwitter: @shwars, [email protected]

Page 2: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft
Page 3: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

3

Connecting People

Page 4: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

4

По настоящему Connecting People

Page 5: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Soft

ware

+

Serv

ices

Page 6: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft
Page 7: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft
Page 8: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

.NET

Silverlight

Browser Application Phone App Game

XNA

C# / VB.NET F#

HTML5

Page 9: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

I II

Page 10: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

I II

• Windows Phone 7• Windows 8• Kinect & NUI

• ASP.NET• ASP.NET MVC• Windows Azure

• C#, F#• HTML5/JavaScript• XAML• DirectX / XNA

Page 11: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Windows Phone 7

Page 12: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Windows Phone 7

Особенности Windows Phone 7

12

ДИЗАЙН: ОРИЕНТИРОВАН НАКОНЕЧНОГО ПОЛЬЗОВАТЕЛЯ

ПЛАТФОРМА: НАСЫЩЕННЫЕ ИПРОСТЫЕПРИЛОЖЕНИЯ

ОБОРУДОВАНИЕ:ЕДИНЫЕ СТАНДАРТЫ

Page 13: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Для пользователя:• Революция в

дизайне• Приложения• Единые стандарты

оборудования~10000 р.

Для программиста:• Marketplace• Низкий порог

вхождения• Здесь и сейчас

Page 14: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Windows Phone – это круто!

Прогноз долей рынка в 2014 году

Операционная система IDC Gartner

Android 45% 49%

Symbian 0% 0%

Windows Phone 21% 20%

iOS 15% 17%

BlackBerry OS 14% 11%

Other (Linux, webOS, Maemo/MeeGo) 5% 3%

Grand Total 100% 100%

Page 15: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Как разрабатывать

Игры

и приложения

Приложения

и игры

Page 16: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Silverlight = XAML + C#/VB

Page 17: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Шаг 1. Прототипируем дизайн

<Grid x:Name="LayoutRoot" Background="Transparent"> <StackPanel x:Name="TitlePanel" Grid.Row="0"> <TextBlock x:Name="ApplicationTitle" Text="MY APP"/> <TextBlock x:Name="PageTitle" Text="Предсказатель"/> </StackPanel> <Grid x:Name="ContentPanel" Grid.Row="1"> <TextBlock Name="textBlock1" Text="Нажмите кнопку"/> <Button Content="Предсказать" Name="button1" Click="button1_Click" /> </Grid> </Grid>

Page 18: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Шаг 2. Программируем

private void button1_Click(object sender, RoutedEventArgs e)

{ Random R = new Random(); textBlock1.Text = "Моя оценка будет: "+ R.Next(2,5).ToString(); }

Page 19: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Шаг 3. Привлекаем дизайнера

Page 20: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

XNA = умный программист

Page 21: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Шаг 1. Делаем контент

Page 22: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Шаг 2. Загружаем контент в памятьprotected override void LoadContent()

{ ship = Content.Load<Texture2D>("Ship"); rocket = Content.Load<Texture2D>("Rocket"); explosion = Content.Load<Texture2D>("Explode");

font = Content.Load<SpriteFont>("GameFont");

music = Content.Load<Song>("Music"); laser = Content.Load<SoundEffect>("Laser");}

Page 23: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Шаг 3. Программируем игровой циклprotected override void

Draw(GameTime gameTime){ GraphicsDevice.Clear(Color.White); spriteBatch.Begin(); spriteBatch.Draw(ship, ship_pos, Color.White); spriteBatch.End(); base.Draw(gameTime);}

protected override void Update(GameTime

gameTime){

ship_pos += ship_speed;

var tc = TouchPanel.GetState();

base.Update(gameTime);}

Page 24: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Windows Phone 7 @ MSDN

http://msdn.com/windowsphone

Page 25: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Delight

Utility

Functionality

Отличные приложенияСделано в стиле самого Windows Phone 7

Полезные – ожидаемые функции, визуально красивые, часто используется

Работает как ожидалось, включая качесттво контента и легкость использования

Отличные приложения начинаются с нужной функциональностью, продолжается использованием устройств и заканчивается привлекательным пользовательским интерфейсом

Идеальное приложение

Page 26: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Windows 8 

Page 27: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Платформа Windows 8

Metro style Apps

HTMLJavaScri

pt

CC++

C#VB

Desktop Apps

Win32

.NET / SL

Internet Explore

r

Communication

& Data

Application Model

Devices & Printing

WinRT APIsGraphics &

Media

Syst

em

Serv

ices

JavaScript(Chakra)

CC++

C#VB

XAML HTML / CSSVie

wM

od

el

Contr

olle

r

Windows Core OS ServicesCore

Page 28: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Windows всегда предоставляла разработчикам богатые возможности для создания приложений

Эти возможности Windows не всегда было просто использовать в C# или VB

Page 29: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

[DllImport("avicap32.dll", EntryPoint="capCreateCaptureWindow")]static extern int capCreateCaptureWindow( string lpszWindowName, int dwStyle, int X, int Y, int nWidth, int nHeight, int hwndParent, int nID);

[DllImport("avicap32.dll")] static extern bool capGetDriverDescription( int wDriverIndex, [MarshalAs(UnmanagedType.LPTStr)] ref string lpszName, int cbName, [MarshalAs(UnmanagedType.LPTStr)] ref string lpszVer, int cbVer);

// и ещё много такого же кода

C# код, который пишут сейчас…

Page 30: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Управляемый код

Обычный Windows API

Вручную написанные обёртки

Page 31: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

C# код для Windows 8

using Windows.Media.Capture;

var ui = new CameraCaptureUI();ui.PhotoSettings.CroppedAspectRatio = new Size(4, 3);

var file = await ui.CaptureFileAsync(CameraCaptureUIMode.Photo);

if (file != null) { var bitmap = new BitmapImage() ; bitmap.SetSource(await file.OpenAsync(FileAccessMode.Read)); Photo.Source = bitmap;}

Page 32: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Управляемый код

Windows 8 API

Windows Runtime

Page 33: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Metro-приложенияСпроектированы в стиле Metro

Быстрые и подвижныеПрекрасны при «парковке» и масштабированииИспользуют правильные контракты

Реализуют интерактивные плитки

Живые, всегда на связи

Хранят данные в облаке

Реализуют принципы Metro

Page 34: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Что интересного? WinRT API — native

XAML может использоваться из C++

Портируемый C++ код

WinRT API — асинхронные

WinRT API обеспечивают доступ к устройствам, операционной системе и сервисам

WinRT API — native для C#, JavaScript и C++

Page 35: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Асинхронное программирование

Page 36: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Асинхронное программирование становится нормой в современных взаимосвязанных (connected) приложениях

Page 37: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Синхронно vs. асинхронноvar data = DownloadData(...);ProcessData(data);

var future = DownloadDataAsync(...); future.ContinueWith(data => ProcessData(data));

DownloadDataAsync ProcessData

STOP

ProcessDataDownloadData

Page 38: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Модели асинхронной разработкиWindows Runtime: IAsyncOperation<T>

.NET Framework: Task<T>

Javascript: Promises

Все объекты представляют “текущие действия”

Все используют обратные вызовы для сообщения о завершении действийПроблема: Обратные вызовы «выворачивают код наизнанку»Решение: Возможна автоматическая трансформация в обратные вызовы

Page 39: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Асинхронные методы автоматически трансформируют обычный код в конечный автомат для обратных вызовов

Page 40: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Асинхронные методыpublic async Task<XElement> GetXmlAsync(string url) { var client = new HttpClient(); var response = await client.GetAsync(url); var text = response.Content.ReadAsString(); return XElement.Parse(text);}

public Task<XElement> GetXmlAsync(string url) { var tcs = new TaskCompletionSource<XElement>(); var client = new HttpClient(); client.GetAsync(url).ContinueWith(task => { var response = task.Result; var text = response.Content.ReadAsString(); tcs.SetResult(XElement.Parse(text)); }); return tcs.Task;}

Page 41: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

API Metro-приложений

FundamentalsApplication

Services Threading/Timers Memory Management Authentication Cryptography Globalization

Devices

Geolocation Portable Sensors NFC

User Interface

SVG Tiles Input Accessibility Printing

HTML5/CSS XAML DirectX Controls Data Binding

Communications & Data

Memory Management XML Networking SMS

Notifications Streams

Contracts Local & Cloud Storage Web

Media

Playback Capture PlayTo Visual Effects

Page 42: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Переходы между состояниями процесса

RunningApp

suspending

resuming

Suspended

AppLow Resources

Terminated

App

Page 43: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Изоляция процессов

OS

User data Devices Communications Handlers Tiles Cryptography … …

Брокеры

Process1Local context

Web contextAppData

Local Temp Roaming

Контракты

Process2Local context

Web contextAppData

Local Temp Roaming

Dire

ct A

PIs

Page 44: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Данные приложений и пользователей

User data

Documents Photos Music Videos

App data

Settings FilesSession State

Local Cache

Page 45: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Роуминг

Приложение использует данные в нормальном режиме

Данные синхронизируются с Microsoft account

Локальное

хранилище

Page 46: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Исполнение приложений

Данные

Прозрачный доступХранение в облаке

Мощность

Произво-дительностьNative-доступ

Надежность

Декларация возможностейВысокая изоляция

Page 47: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Почему надо что-то делать сейчас

Для получения $10 миллионов прибылиЦена: $4.99

~2,500,000 продаж0.5% пользователей Windows

Page 48: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Итоги Windows 8 изобретена заново для пользователей Удобство использования Производительность Уверенность

Windows 8 изобретена заново для разработчиков Выбор языка программирования Инструменты Монетизация

Page 49: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Visual Studio 11 Beta и.NET Framework 4.5 Beta Доступны для загрузкис 29 февраля 2012

vs2010.ru

Page 50: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft

Подмосковье

DevCon•12developers developers developers

23-24 маяЗАГОРОДНЫЙ ФОРМАТ

23–24 мая

С++

http://msdevcon.ru #msdevcon

Ежегодная конференция по разработкеи тестированию программного обеспечения

Йонас Перссонглавный операционный директор департамента стратегических технологий на международном уровне

Скотт Хансельманглавный архитектор по проектам с сообществами в команде, создающей веб-технологии

50 СЕССИЙ, BOOT CAMPS, МАСТЕР-КЛАССЫ, NIGHT OF CODING, ФОКУС-ГРУППЫ, КРУГЛЫЕ СТОЛЫ, ВЕЧЕРНЯЯ ПРОГРАММА, СПОРТИВНЫЕ МЕРОПРИЯТИЯ

Page 51: CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Microsoft