• 検索結果がありません。

Microsoft Platform Ready スペシャルイベント と Windows Azure 連携 2011 年 4 月 11 日 日本マイクロソフト株式会社デベロッパー & プラットフォーム統括本部太田寛 Blog: Twitte

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft Platform Ready スペシャルイベント と Windows Azure 連携 2011 年 4 月 11 日 日本マイクロソフト株式会社デベロッパー & プラットフォーム統括本部太田寛 Blog: Twitte"

Copied!
33
0
0

読み込み中.... (全文を見る)

全文

(1)

Microsoft Platform Ready

スペシャルイベント

○○とWindows Azure連携

2011年4月11日 日本マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部 太田 寛 Blog:http://blogs.msdn.com/hirosho/ Twitter:http://twitter.com/embedded_george

(2)

アジェンダ

ネットワークプログラミング基本の基

つながる先のWindows Azureサービス

Windows 7系での

ネットワークプログラミング

.NET Micro Frameworkでの

ネットワークプログラミング

自習書紹介

(3)
(4)

ネットワークによるサービス・機器間連携

インターネット+HTTP

 事実上の標準

 普及率は一般家庭でさえ、90%を超える

※総務省調べ2010年現在

ネットワークは“和”の世界

 様々なベンダーのサービス、機器が相互接続

 インターオペラビリティを保障する各種標準

 “つながる”、“つなげる”ことが重要

一般的なインターフェイス様式

 SOAP

 REST

(5)

SOAPの基本

デバイス サービス SOAPエンベローブ XMLテキスト WSDL XMLによるWeb Serviceの インターフェイス定義 公開 SOAP Header SOAP BODY 作成 要求 送信 ロジック SOAPエンベローブ 作成 応答 受信 WSDLの定義 に従って作成 下位プロトコル は何でも良い • かっちり定義 • メソッドコールとの親和性 • 業界標準など

(6)

REST

デバイス サービス HTTPのメソッド (GET/POST/DELETE)と、URLでサー ビスを構成 HTTP要求 Header Content HTTP応答 Header Content 作成 要求 送信 ロジック 作成 応答 受信 ステータス 基本はブラウザが 行っているのと 全く同じ Contentデータは XMLでもJSONでも バイナリデータで も何でも可 • 非常にシンプル • 柔軟性が高い • クラウド向き

(7)
(8)

センサーデータの蓄積と共有

SensorId FormatId PropertyId SensedValue MeasuredTime

Azure Table

クライアント・デバイスから アップロードされたデータを格納

SOAP

API

REST

API

※各パラメータは、Windows 7 Sensor & Location Platform

の定義を活用

RIAで活用

データの提供

(9)

SOAPベースのインターフェイス定義

[ServiceContract]

public interface ISensorService

{

[OperationContract]

SensorValue UploadSensorValue(SensorValue value); [OperationContract]

List<SensorValue> GetSensors(); [OperationContract]

List<SensorValue> GetSensor (Guid sensorId); } インターフェイスに “ServiceContract”属性を追加 これで3つのSOAPメッセージの定義が出来上がる 後は、このインターフェイスを適切に実装するクラスを 作成する メソッドに“OperationContract” 属性を追加

(10)

SOAPベースのデータ定義

[DataContract]

public class SensorValue

{

[DataMember]

public Guid SensorId { get; set; } [DataMember]

public Guid SensorTypeId { get; set; } [DataMember]

public Guid FormatId { get; set; } [DataMember]

public int PropertyId { get; set; } [DataMember]

public string SensedValue { get; set; } [DataMember]

public DateTime MeasuredTime { get; set; } } クラスに“DataContract”属性を追加 プロパティに “DataMember”属性を追加 ネットワーク上でデータを 交換する際、適切にシリアラ イズ、デシリアライズが行わ れる。

(11)

とりあえず、試してみる

Visual Studio 2010で

“WCFサービスアプリケーション”を作成

(12)

RESTベースのインターフェイス定義

[ServiceContract]

public interface ISensorService

{

using System.ServiceModel.Web; [OperationContract]

[WebInvoke(UriTemplate= “sensorvalue/{sensorId}”, Method= “POST”)]

SensorValue UploadSensorValue(

string sensorId, SensorValue value); [OperationContract]

[WebGet(UriTemplate= “sensors”)]

List<SensorValue> GetSensors(); [OperationContract]

[WebGet(UriTemplate= “sensor/{sensorId}”)]

List<SensorValue> GetSensor (string sensorId); } WebInvoke、WebGet 属性の付与 HTTPへのURL形式のアクセスは 実行時、対応するメソッドに マップされ、コールされる

(13)

とりあえず試してみる

ブラウザで…

(14)

Windows Azure上でのホスティング

クラウド用プロジェクト作成

 Visual Studioで新規プロジェクト作成

• “Windows Azureプロジェクト”テンプレートを使用

 エンドポイント毎に、WCFサービスを追加

 コントラクトの定義と実装

Azure上に配置し実行

詳しくは、こちらをご参照ください

http://msdn.microsoft.com/ja-jp/windowsazure/

(15)
(16)

Windowsのネットワークプログラミング

簡単なサーバー側、クライアント側開発

 WCFライブラリの利用

 Visual StudioによるProxyコードの自動生成

 SOAP、RESTのどちらも迅速に開発可能

Address Binding Contract 通信のエンドポイント プロトコル+エンコーディング+トランスポート BasicHttpBinding、WSHttpBinding、 NetNamedPipeBinding、NetMsmqBinding サービスのインターフェイス定義

(17)

クライアント側でProxyを作成する - SOAP

Visual StudioによるProxyの自動生成

①参照設定を右クリックし、 サービス参照を選択 ②追加したいURLを入力し移動をクリック ③名前空間を入力 ④OKをクリック

(18)

SOAPアクセス ~ データのアップロード

using (var client =

new SensorCloud. SensorServiceClient ()) {

var uploaded = client.UploadSensorValue( new SensorCloud. SensorValue ()

{ SensorId = sensorId, SensorTypeId = sensorTypeId, FomatId = formatId, PropertyId = propertyId, SensedValue = sensedValue, MeasuredTime = measuredTime }); } Proxyオブジェクト作成 Proxyオブジェクトの UploadSensorValue() メソッドをコールし、 計測したセンサーデータを アップロード UploadSensorValue()メソッド実行時、 • SOAPメッセージの組み立て • Web Serviceへのデータが送信 • Web Service側でのストレージへの蓄積 • Web Service側からの応答 と、一連の処理が行われるが、プログラム上は ローカルコールと形式上同一

(19)

SOAPアクセス ~ データの取得

using (var client =

new SensorCloud. SensorServiceClient ()) {

var values = client.GetSensor(sensorId); foreach (var v in values)

{

Guid typeId = v.SensorTypeId, Guid fmtId = v.FormatId,

int propId = v.PropertyId,

string value = v.SensedValue,

DateTime mst = v.MeasuredTime … } } Proxyオブジェクトの GetSensor() メソッドをコールし、 センサーデータを取得 UploadSensorValue()メソッドと同様、 メソッドのローカルコールと同一の形式 での利用が可能。 ※実際にはネットワーク越しの非同期処理が 行われていることは留意の必要あり リストで返ってくるので、 必要なアイテムを取り出し 処理ロジックで利用

(20)
(21)

.NET Micro Frameworkのネットワーク機能

Socket

 IP、TCP、UDPなどの低レベルプロトコル対応

HTTP・HTTPS

 HttpWebRequest、HttpWebResponse、及び、

ストリーム、マルチエンコードなどの関連クラス

 SSLやX509対応

Web Service

 各種WS-* Profile対応

DPWS:Device Profile for Web Service

(22)

Webサービスへのアクセス方法

HTTPによるアクセス

 .NET Micro Frameworkの場合、Visual Studioに標

準でビルトインされたツールは存在しない

 HttpWebRequest・HttpWebResponseクラスを

使用して、XMLやJSONフォーマットを送受信

Windowsとの互換性

 HttpWebRequest・HttpWebResponseをはじめと

する関連クラスは、.NET Micro Frameworkにも

揃っている

 Windowsでの経験があれば、同じスキルをそのまま

活用できる

(23)

RESTアクセス ~ データのアップロード

String url = “http://...”; HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest; request.Method = “POST”; request.ContentType = “text/xml ;charset=utf-8”;

String content = “<SensorValue xmlns=…>”+ “<FormatId>” + formatId + “</FormatId>” + “<PropertyId>” + propId + “</PropertyId>” + “<SensedTime>” + time + “</SensedTime>” + “<SensedValue>” + value + “</SensedValue>” + “<SensorId>” + sensorId + “</SensorId>” +

“</SensorValue>”;

byte[] bytes = Encoding.UTF8.GetBytes(content); request.ContentLength = bytes.Length; HTTP要求用の、オブジェクト作成 HTTP要求メソッドをPOSTに設定 要求時、データ送信フォーマットを XML形式のテキストに指定 センサーデータを XML形式の文字列に 組み立てる XML形式の文字列を バイトデータに変換 し、データ長を設定

(24)

RESTアクセス ~ データのアップロード

var reqStream = request.GetRequestStream();

reqStream.Write(byte, 0, bytes.Length); reqStream.Close(); try { HttpWebResponse response = request.GetResponse() as HttpWebResponse; if (response.StatusCode == HttpStatusCode.OK) {

var resStream = response.GetResponse(); // 登録結果がXML形式で返ってくる

// 必要に応じてパース }

}

catch (WebException ex) { // 例外への対応 } サーバーに送信する為の ストリームを取り出し、 バイトデータを書き込む 応答オブジェクトを 取り出し、応答メッ セージを必要に応じ て解析 REST APIのWebサービスの基本パターン 必要に応じて要求ヘッダーやURLへの引数を追加 .NET Micro Frameworkは高速のXML Parserが 用意されているので、JSONフォーマットより XMLフォーマットが、More Better

(25)

RESTアクセス ~ データの取得

String url = “http://...”; HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest; request.Method = “GET”; try { HttpWebResponse response = request.GetResponse() as HttpWebResponse; if (response.StatusCode == HttpStatusCode.OK) {

var resStream = response.GetResponse(); // 次ページに続く HTTP要求メソッドをGETに設定 応答オブジェクトを 取り出し、 送られてきたデータ を取得する為のため のストリームを 取り出す

(26)

RESTアクセス ~ データの取得

// XMLテキストの解析

var reader = XmlReader.Create(resStream); while (reader.Read());

{

switch (reader.NodeType) {

case XmlNodeType.Element: // 要素の利用 if (reader.Name.CompateTo( “SensorValue”) == 0) { … } break; } } } } XMLデータ解析用に XmlReaderオブジェクト を作成 Read()メソッドで 順番にXMLテキストを 解析 必要なタグのデータを 見つけ、処理を行う REST APIのWebサービスの基本パターン 必要に応じて要求ヘッダーやURLへの引数を追加 JSONフォーマットの場合は、TextReaderクラス を用いて、順に文字列を取り出し、解析

(27)
(28)

第1部 基礎編 4/6公開済み

 .NET Micro Frameworkの基本

 ユーザーインターフェイス基礎

 ネットワークへのアクセス基礎

第2部 Azure連携編 4月末公開予定

 REST形式によるAzure上サービスへの接続

 HTTPSによるセキュアー通信

.NET Micro Framework自習書

(29)
(30)

まとめ

Windows Azure上のサービス

 Tableなどのストレージによるデータ蓄積

 REST、SOAPによるWebサービス

 RIAによるWebアプリケーション

Windowsによるネットワークアクセス

 WCFによる容易な接続

 Windows Embeddedでも同じく活用可能

.NET Micro Frameworkによるネットワークア

クセス

 HttpWebRequest・HttpWebResponseで

容易にREST、SOAPへアクセス

(31)

参考資料

 講師の Blog

http://blogs.msdn.com/b/hirosho/

 講師の Twitter

http://twitter.com/embedded_george

 組込み開発者向け技術情報サイト

http://www.microsoft.com/japan/windows/kumikomidev

 Windows Azure

http://msdn.microsoft.com/ja-jp/windowsazure

 WCF

http://msdn.microsoft.com/ja-jp/netframework/aa663324

 .NET Micro Framework

(32)
(33)

© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentations. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

参照

関連したドキュメント

乾式不織布(V-Lap® +バインダー ) 技術 point ・V-lap 繊維を縦⽅向に配向させた乾式不織布 ・芯鞘複合繊維

[r]

第1回 平成27年6月11日 第2回 平成28年4月26日 第3回 平成28年6月24日 第4回 平成28年8月29日

日本への輸入 作成日から 12 か月 作成日から 12 か月 英国への輸出 作成日から2年 作成日から 12 か月.

試料の表面線量当量率が<20μ Sv/hであることを試料採取時に確 認しているため当該項目に適合して

日本への輸入 作成日から 12 か月 作成日から 12 か月 英国への輸出 作成日から2年 作成日から 12 か月.

本協定の有効期間は,平成 年 月 日から平成 年 月

原子力安全・保安院(以下「当院」という。)は、貴社から、平成24年2