WPH202 Windows Phone 開發應用實戰 董大偉 光岩資訊技術總監、Microsoft MVP 光岩資訊.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

教育雲端科技的現況與未來發展 臺北市政府教育局聘任督學 韓長澤.
大專院校校園e 化 PKI、智慧卡應用與整合.
海蔚蓝科技公司介绍.
Topics 應用架構 學習路徑 熱門議題 相關認證.
房欣漢、陳志達 南台科技大學資訊管理所 整合網路社群與3D地圖資訊之多元混搭服務 Intermediating the Internet Mashup Service for the Network Community & 3D Geography.
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
第 1 章 使用 APP INVENTOR 2 開發 ANDROID APP
RIA 程式設計 主講人:彭震榮.
Asp.net 基礎.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
LINQ 建國科技大學 資管系 饒瑞佶.
Java簡介.
JAVA vs. SQL Server 建國科技大學 資管系 饒瑞佶 2013/4 V1.
連結資料庫 ACCESS MSSQL.
Q101 在701 SDX Linux上的標準安裝與使用程序v2
第1章 認識Arduino.
Microsoft Project 2003 Gibson New Microsoft Enterprise Project
第1章 .NET与C# 为什么要设计一门新的编程语言? C#在微软的.Net平台中占据什么样的地位?
Working with Databases (II) 靜宜大學資管系 楊子青
Cloud Computing(雲端運算) 技術的現況與應用
資料庫操作.
第十四章 資料庫應用程式 14.1 ADO.NET簡介 14.4 資料的單筆巡覽、新增、 修改、刪除
Google Data API Spreadsheet
Working with Databases (II) 靜宜大學資管系 楊子青
運用雲端工具提升教學及研究的效率 Victor Gau 5/31/2014.
R教學 安裝RStudio 羅琪老師.
What’s New in HTML5.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
安裝JDK 安裝Eclipse Eclipse 中文化
Text To Speech (TTS, 文字轉語音) 靜宜大學資管系 楊子青
Web Crack 专题 – AJAX – 2016/11/18 – Payne 本次培训仅供教学内部用途 实验请遵守相关法律法规
OpenID與WordPress使用說明
連結資料庫管理系統.
App Inventor2呼叫PHP存取MySQL
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
Java 程式設計 講師:FrankLin.
FTP檔案上傳下載 實務與運用.
專題J組 題目: 檢定考試管理系統 指導老師: 曾修宜 老師 組員: 曾聖棋 謝宗翰
指導老師:黃貞芬 老師 專題組員:B 黃育宇 B 魏志軒 B 平震宇
網頁切換移轉 JS vs. ASP.NET.
AZR303 雲端整合企業識別 進行單一簽入 張書源 資深開發技術經理 台灣微軟.
Topic Introduction—RMI
第一單元 建立java 程式.
標籤、按鈕、工具列、狀態列 (Labels, Buttons, Tool Strips, and Status Strips)
App Inventor 2初體驗 靜宜大學資管系 楊子青
微软云计算 --Windows Azure platform
透過YouTuBe API取得資料 建國科技大學 資管系 饒瑞佶 2018/1 V1.
Pocket Access.
議程大綱. 議程大綱 微軟在雲端服務已經耕耘超過15年 Windows Live – 雲端應用的最佳典範.
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
2011清大電資院學士班 「頂尖企業暑期實習」 經驗分享心得報告 實習企業:工研院 實習學生:電資院學士班 楊博旭.
Google協作平台+檔案分享(FileZilla+網路芳鄰)
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
Text To Speech (TTS, 文字轉語音) 靜宜大學資管系 楊子青
(Mobile User music–Sharing Innovation Center)
利用 EditorConfig 自訂文字編輯器設定
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
取得與安裝TIDE 從TIBBO網站取得TIDE
指導老師:蘇怡仁老師 組員:陳翊嘉、何盈宏、黃皇瑋、鄭楚懷
第二章 Java基本语法 讲师:复凡.
第 18 章 雲端計算.
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
連結資料庫 MYSQL.
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
SQLite資料庫 靜宜大學資管系 楊子青.
Visible Body Human Anatomy Atlas
Jquery Mobile開發須知 周季賢.
Introduction to Mobile Computing
Presentation transcript:

WPH202 Windows Phone 開發應用實戰 董大偉 光岩資訊技術總監、Microsoft MVP 光岩資訊

Windows Phone 8 企業佈署與管理功能 在開場之前…. 今天你不會聽到 Windows Phone 8 的開發介紹 Windows Phone 8 企業佈署與管理功能 或任何 Windows Phone 8 流言的確認

但你應該要知道Windows Phone 8 Windows Phone 7 應用程式可繼續執行 與Windows 8 共享核心 共享驅動程式, 安全性, 網路層, 影像與多媒體 三種解析度(WVGA, WXGA, 720p) 支援NFC 分享, 電子錢包, In-App-Purchases(IAP) 可透過C#/VB, Native C/C++, HTML5 browser control 開發 公司專屬應用程式

但你應該要知道Windows Phone 8 提供語音辨識API App to App Communication 支援Micros SD Card 使用IE 10瀏覽器 提供相機及 Lenses API 可下載離線地圖 內建整合Skype

Windows Phone 開發 除非你的要開發的App有用到上述功能, 我們仍建議採用Windows Phone OS 7.1 架構開發. Windows Phone 7.5 與Windows Phone 8 採用一樣的介面設計邏輯與操作方式

你應該要知道的其他事項… 因為這次我不是最後一場,所以不能Delay,時間一到,我們就停。 在大會光碟中,會有本場次完整的影片和相關的範例。 如果你是偷渡進來的,在 David's部落格,從下周開始,會有部分影片和片段的內容… 位於http://blog.StudyHost.com

我們要談的是…開發/應用/實戰 行動裝置與雲端運算的整合 使用Windows Azure Toolkit Azure Storage存取 Microsoft 帳號整合(身分驗證) Push Notification發送 使用Windows Azure Mobile Service SQL Azure data access In-App Advertising, In-App purchase Porting to Windows Store App Windows Phone開發的未來

WHY??? 行動裝置好端端的幹嘛要扯到雲端?

手機與雲端運算 賣錢的App幾乎都有後端 身分驗證也需要後端 重要的運算邏輯最好放在後端 行動裝置商業應用十之八九也都有後端 推送訊息也需要後端 連廣告都需要後端… …

手機與雲端運算 後端 雖不一定非得要是 雲端 但… 6/16,18,20 $1,000,000

何謂雲端運算? 雲端運算 ≠ Web Solutions 雲端運算 ≠ ASP(Application Services Provider) 雲端運算 ≠ VM(Virtual Machine) 雲端運算 ≠ AJAX技術或類似的UI技術 這些應用程式 需要多久的時間? 洩漏公司的機密

永不斷線的服務、沒有限制的可用資源、較低的營運成本 這才是行動裝置後端服務需要的 何謂雲端運算? 雲端運算的必要特徵(NIST:美國國家標準及技術研究所) On-demand self-service : 可依需求自助調整 Broad network access:可透過標準網路通訊方式提供各平台使用 Resource pooling:有大量可自由分配運用的實體或虛擬的資源。 Rapid elasticity:高彈性使用(可迅速擴充或縮減資源的運用) 。 Measured service:使用狀態的可量測性。 National Institute of Standards and Technology 美國國家標準及技術研究所 http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf 永不斷線的服務、沒有限制的可用資源、較低的營運成本

架構圖 WP與雲端運算之間的關係… 了解Windows Azure之後… 辨識(大量運算) 股票 氣象 交通 訊息(通訊) 影音 身分驗證 這些應用程式 需要多久的時間? 訊息(通訊) 影音 身分驗證

Windows Azure目前提供的服務 Web Role - 建立提供Windows Phone使用的Web Services Worker Role - 建立提供Windows Phone使用的Routine Jobs Azure Storage - 作為Windows Phone大型資料存取來源 SQL Azure -作為Windows Phone結構化資料存取來源 Azure Mobile Service -直接提供您資料存取、驗證、推播訊息服務

WP7有哪些典型的雲端應用情境? WP存取blob, table...等Storage (App需要存取大量圖片、影像、或多媒體檔案…etc) WP存取SQL Azure (App需要存取資料表…etc) WP登入Web Role(ASP.NET) (ex, 身分驗證、識別、加值資料存取) Worker Role的Routine Jobs (ex, Push Notification Process) … 這些應用程式 需要多久的時間?

架構圖 WP與雲端運算(資料存取) SQL Azure DB 這些應用程式 需要多久的時間? Web Role storage

架構圖 WP與雲端運算(身分驗證) ASP.NET Membership Web Role DB Azure ACS 這些應用程式 需要多久的時間? Azure ACS

架構圖 WP與雲端運算(訊息服務、動態磚更新) DB Windows Azure storage SQL Azure Worker Role Microsoft Push Notification Service DB 這些應用程式 需要多久的時間? Windows Azure storage SQL Azure Worker Role 建立基本WorkerRole-WP7 Push Notification訊息發送 WindowsAzureProject2

開發技術架構圖 WP可透過哪些技術存取雲端? ADO.NET EF Web Role LinqToSql ADO.NET SQL Azure REST API/WS DB JSON/XML 這些應用程式 需要多久的時間? .NET Fx 4.0 REST API Windows Azure storage

我們有Windows Azure Toolkit for Windows Phone 7(WAT) 從Windows Phone存取Cloud 要熟悉SQL、XML、SOAP... 要學會REST API、JSON... 得明白ADO.NET EF, LinqToSql, Linq... 會操作oAuth、ASP.NET Membership... 必須擅長Silerlight、WCF Services... … 我們有Windows Azure Toolkit for Windows Phone 7(WAT) & Azure Mobile Service 這些應用程式 需要多久的時間? NO, 我們不會如此殘忍…

關於Windows Azure Toolkit

WAT是什麼??? Windows Azure Toolkit 簡化您由WP7存取Windows Azure Storage (blob, table, queue), SQL Azure …等機制的應用程式開發套件組。 包含您需要的Class Libraries(類別庫)、Project Template…等資源。 以及透過這些Project Template所開發出來的應用程式展示範例。 這些應用程式 需要多久的時間?

透過WAT我們可以… 輕鬆完成帳號登入功能 (包含透過ACS與Yahoo, Google, Windows Live整合) 輕鬆建立Push Notification的機制與後台管理功能 支援Windows Azure Storage的存取 支援SQL Azure的存取 透過AspNetProvider建構雲端服務網站 … 這些應用程式 需要多久的時間?

下載WAT for Windows Phone 位於http://watwp.codeplex.com/ 這些應用程式 需要多久的時間?

安裝WAT for Windows Phone 執行WATWindowsPhone.exe 完成後會看到(C:\WindowsAzure\WATWindowsPhone) 這些應用程式 需要多久的時間?

安裝WAT for Windows Phone 出現安裝畫面 這些應用程式 需要多久的時間?

安裝WAT for Windows Phone 相依性套件不少,若有缺、請逐一安裝 這些應用程式 需要多久的時間?

安裝WAT for Windows Phone 相依性套件都裝了,才能繼續下一步… 這些應用程式 需要多久的時間?

安裝WAT for Windows Phone 主要就是這個安裝動作… 這些應用程式 需要多久的時間?

Let's Do It… 這些應用程式 需要多久的時間?

建立blob帳號與Container 這些應用程式 需要多久的時間?

在WP7中存取blob 使用Windows Azure Toolkit for WP7 使用WindowsPhoneCloud.StorageClient 位於C:\WindowsAzure\WATWindowsPhone\Binaries //建立credentials StorageCredentialsAccountAndKey credentials = new StorageCredentialsAccountAndKey( StorageAccount, StorageKey); //建立CloudBlobClient CloudBlobClient BlobClient = new CloudBlobClient(BlobEndpoint, credentials); 這些應用程式 需要多久的時間? 這邊提供Storage帳號與Key

在WP7中存取blob //決定要連結的Container 這邊提供ContainerName //決定要連結的Container var mycontainer = BlobClient.GetContainerReference(ContainerName); string fileName = System.DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".bmp"; var blob = mycontainer.GetBlobReference(fileName); //進行上傳動作 blob.UploadFromStream(fs, (ret) => { //顯示結果訊息 }); 這些應用程式 需要多久的時間? 透過API以非同步方式上傳

Demo:在WP7中存取blob 使用WAT套件 建立blob Container 在WP7中存取blob(上傳照片) private void UploadFile2Blob(System.IO.Stream fs) { //建立credentials StorageCredentialsAccountAndKey credentials = new StorageCredentialsAccountAndKey( StorageAccount, StorageKey); //建立CloudBlobClient CloudBlobClient BlobClient = new CloudBlobClient(BlobEndpoint, credentials); //決定要連結的Container var mycontainer = BlobClient.GetContainerReference(ContainerName); string fileName = System.DateTime.Now.ToString("yyyyMMdd-HHmmss")+".bmp"; var blob = mycontainer.GetBlobReference(fileName); //進行上傳動作 blob.UploadFromStream(fs, (ret) => //顯示訊息 Dispatcher.BeginInvoke(() => { aRock.Phone.SysTray.Hide(this); aRock.Phone.Dialog.NotifyDialog.ShowToastMessage("完成"); }); aRock.Phone.SysTray.ShowWords(this, "上傳檔案中..."); } static string BlobEndpoint = "http://test01.blob.core.windows.net"; //Blob連接位置 static string ContainerName = "mycontainer2"; //預設container (請先建立此container) static string StorageAccount = "test01"; //帳號 //Key static string StorageKey = "vyOy2STbjGRS8YLIs0gOo1KV38J9GEDCMyRSTcR6Sd7/LHrjZT84/gQzwtYD9w=="; private void TakePicture() Microsoft.Phone.Tasks.CameraCaptureTask cc = new Microsoft.Phone.Tasks.CameraCaptureTask(); cc.Completed += (ss, arg) => { UploadFile2Blob(arg.ChosenPhoto); }; cc.Show(); 董大偉 David@aRock.com.tw 光岩資訊 技術總監 台灣微軟MSDN講座講師 WP7AccessBlobTest WP7直接存取blob.wmv

Demo 在WP7中存取blob

建立類似上面這樣的Signature,以限制存取時間和權限 在WP7中存取blob(with SAS) 如果你擔心不安全 可透過Shared Access Signature機制 透過時間戳章、存取設定等參數來建立SAS,限制blob可存取對象與範圍 http://forwp7test20120917.blob.core.windows.net/container1/1336920569_Bible.png?sr=c&si=PolicyKey&sig=suAZnVb40JKR8X8RfzDmXVCVZqQRuwTaTus44rkfik0%3D 這些應用程式 需要多久的時間? 建立類似上面這樣的Signature,以限制存取時間和權限

Demo:在WP7中存取blob(SAS) 在用戶端透過SAS抓取blob private void UploadFile2Blob(System.IO.Stream fs) { //建立credentials StorageCredentialsAccountAndKey credentials = new StorageCredentialsAccountAndKey( StorageAccount, StorageKey); //建立CloudBlobClient CloudBlobClient BlobClient = new CloudBlobClient(BlobEndpoint, credentials); //決定要連結的Container var mycontainer = BlobClient.GetContainerReference(ContainerName); string fileName = System.DateTime.Now.ToString("yyyyMMdd-HHmmss")+".bmp"; var blob = mycontainer.GetBlobReference(fileName); //進行上傳動作 blob.UploadFromStream(fs, (ret) => //顯示訊息 Dispatcher.BeginInvoke(() => { aRock.Phone.SysTray.Hide(this); aRock.Phone.Dialog.NotifyDialog.ShowToastMessage("完成"); }); aRock.Phone.SysTray.ShowWords(this, "上傳檔案中..."); } static string BlobEndpoint = "http://test01.blob.core.windows.net"; //Blob連接位置 static string ContainerName = "mycontainer2"; //預設container (請先建立此container) static string StorageAccount = "test01"; //帳號 //Key static string StorageKey = "vyOy2STbjGRS8YLIs0gOo1KV38J9GEDCMyRSTcR6Sd7/LHrjZT84/gQzwtYD9w=="; private void TakePicture() Microsoft.Phone.Tasks.CameraCaptureTask cc = new Microsoft.Phone.Tasks.CameraCaptureTask(); cc.Completed += (ss, arg) => { UploadFile2Blob(arg.ChosenPhoto); }; cc.Show(); 董大偉 David@aRock.com.tw 光岩資訊 技術總監 台灣微軟MSDN講座講師 範例位置 WP7AccessBlobTestWithSAS

Demo 在WP7中存取blob(with SAS)

使用Windows Phone Cloud Application Template WAT中一套完整的行動裝置與雲端運算整合應用專案範本 省去開發服務端(伺服器端)應用程式的時間 提供用戶端(手機端)應用程式存取範例

使用Windows Phone Cloud Application Template 透過這套Project Template,可直接支援… Azure Blob, Table, Queue存取 支援Push Notification Single Sign On身分整合驗證

Demo:使用專案範本 建立Windows Phone Cloud Application 存取blob、Table 使用Push Notification 董大偉 David@aRock.com.tw 光岩資訊 技術總監 台灣微軟MSDN講座講師 WAT Project Template.wmv

在WP7中存取blob、Table 使用Push Notification Demo 在WP7中存取blob、Table 使用Push Notification

行動裝置用戶身分驗證需求 確認用戶端身分 計費、試用、權限 避免自行維護帳戶資訊 麻煩、安全性、個資法 這些應用程式 需要多久的時間?

關於Azure ACS Windows Azure Access Control Service 支援WP7(使用WAT) 用以實現Single Sign On 這些應用程式 需要多久的時間?

Demo:使用專案範本 建立Windows Phone Cloud Application 建立AppFabric , 建立NameSpace 使用Windows Azure ACS 董大偉 David@aRock.com.tw 光岩資訊 技術總監 台灣微軟MSDN講座講師 WAT Project Template - 2.ACS.wmv 身分驗證

Demo 使用Windows Azure ACS

關於Azure Mobile Service

何謂Windows Mobile Service 微軟三周前公布的Azure新服務 透過Azure雲端運算技術,提供穩定可靠、立即可用的行動裝置服務 省去開發人員撰寫雲端服務的時間 功能包含: 便利的遠端資料庫存取 身分驗證(authorize users) 推播訊息(Push notifications to users) http://weblogs.asp.net/scottgu/archive/2012/08/28/announcing-windows-azure-mobile-services.aspx 三周前公布

何謂Windows Mobile Service 申請Mobile Services

關於Windows Mobile Service 目前提供Windows 8(Windows Store App)可直接使用的SDK 目前尚未直接提供WP7, WP8…等SDK 但是… 由於採用REST API與JSON架構,因此我們可以…

使用Windows Mobile Service Azure Mobile Service Exposes Data In The Following Format: 1. GET https://[服務名稱].azure-mobile.net/tables/[資料表]/ – 取得所有資料 2. GET https://[服務名稱].azure-mobile.net/tables/[資料表]?$filter – 取得特定資料 3. POST https://[服務名稱].azure-mobile.net/tables/[資料表]/ – 新增一筆資料 4. PATCH https://[服務名稱].azure-mobile.net/tables/[資料表]/編號 – 更新指定編號的資料 5. DELETE https://[服務名稱].azure-mobile.net/tables/[資料表]/編號 –刪除指定編號的資料

使用Windows Mobile Service 會使用到的相關技術 透過Web Client呼叫REST API 透過DataContractJsonSerializer處理JSON序列化

使用Windows Mobile Service 建立資料表的相對應類別,例如: public class TodoItem { public int id { get; set; } [System.Runtime.Serialization.DataMember()] public string text { get; set; } public bool complete { get; set; } } 注意id欄位是必須的

使用Windows Mobile Service 透過DataContractJsonSerializer處理JSON資料 從JSON轉為物件 位於System.Runtime.Serialization public static object JsonToObj(string json, Type type) { try object obj; MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)); DataContractJsonSerializer ser = new DataContractJsonSerializer(type); obj = ser.ReadObject(ms); ms.Close(); return obj; } catch (Exception ex) MessageBox.Show(ex.Message + " JSON:" + json); return null;

使用Windows Mobile Service 從物件轉為JSON public static string ObjectToJson(object obj, Type type) { try //Create a stream to serialize the object to. MemoryStream ms = new MemoryStream(); // Serializer the User object to the stream. DataContractJsonSerializer ser = new DataContractJsonSerializer(type); ser.WriteObject(ms, obj); byte[] json = ms.ToArray(); ms.Close(); return Encoding.UTF8.GetString(json, 0, json.Length); } catch (Exception ex) MessageBox.Show(ex.Message); return string.Empty;

使用Windows Mobile Service 使用WebClient呼叫REST API 更新一筆資料 //Update WebClient wc = new WebClient(); wc.Headers["Content-Type"] = "application/x-www-form-urlencoded"; wc.Headers["X-ZUMO-APPLICATION"] = key; wc.UploadStringCompleted += (ss, arg) => { if (arg.Error == null) { aRock.Phone.Dialog.NotifyDialog.ShowToastMessage("OK"); refresh(); } else { MessageBox.Show(arg.Error.Message); }; wc.UploadStringAsync( new Uri("https://DavidTest.azure-mobile.net/tables/TodoItem/" + item.id), "PATCH", JsonHelper.ObjectToJson(item, typeof(TodoItem))); 記得要給Key 透過DataContractJsonSerializer處理序列化

Demo:使用Windows Azure Mobile Service 建立SQL Azure Server & Database 建立Mobile Service, 建立資料表 透過Azure Portal維護資料表 建立WP7用戶端 使用REST API+JSON Parsing 進行資料CRUD 董大偉 David@aRock.com.tw 光岩資訊 技術總監 台灣微軟MSDN講座講師 UsingMobileServiesViaWP7 MobileServiceTest

在WP7使用Windows Azure Mobile Service Demo 在WP7使用Windows Azure Mobile Service WP7_AzureMobileServiceCS

關於 Windows Phone開發的未來

未來WP8的特性與… 以WP7.1方式開發的App,可以相容於WP8的執行環境 除非使用到新的API,否則您的App均可使用WP7.1 SDK進行(繼續)開發 關於WP8的後續相關議題…

Porting to Windows Store App 關於 Porting to Windows Store App

您可能也關心 手上辛苦開發的Windows Phone App,要如何在Win8上使用? 如何同時開發WP7, WP8, Windows Store App? 15:10 ~ 16:20

立即啟動!免費開發人員帳戶!! Windows Store / Windows Azure / Windows Phone 擁有 MSDN 訂閱 「取得代碼」後進行註冊 http://aka.ms/startmsdn 優惠內容: Windows Store / Windows Phone – 啟用後12個月, 完全免費! Windows Azure – 訂閱期間, 每月固定的免費使用量!

Q&A