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

- 1. RESTful 型設計 vs RPC 型設計

- 2. JSON vs XML

{"result":"Hello World Nobuyuki"}

簡単なデータならよいが、

日付型や byte[] 型などの

扱いは面倒

- 2. JSON vs XML

string apiUrl = "http://decode2015webapi.azurewebsites.net/BizB/ListAuthors/GetAllAuthors";

HttpClient httpClient = new HttpClient();

httpClient.DefaultRequestHeaders.Accept.Add(

new MediaTypeWithQualityHeaderValue("text/xml"));

HttpResponseMessage response = await httpClient.GetAsync(apiUrl);

string responseString = await response.Content.ReadAsStringAsync();

C#

- WCF vs ASP.NET Web API

WCF ASP.NET Web API

API 設計スタイル RPC 型のみ 自由

( RPC 型、 RESTful 型など)

メッセージフォー

マット SOAP のみ 自由

( XML 、 JSON など)

通信プロトコル 自由

( HTTP 、 TCP/IP など) HTTP のみ

- WCF vs ASP.NET Web API

Web サーバ

業務データ

DB サーバ クライアント

ツールベースの開発

通信手法 サービス参照

(プロキシクラス) SOAP (または WCF *.asmx スクラッチでの開発 HttpClient XML または

JSON ASP.NET Web API

設計

- ASP.NET Web API + EF で開発する場合のテクニック

本日のランチセッションにて開催!

1. WinRT と Xamarin.Forms XAML の主な相違点

2. ASP.NET Web API + EF の開発テクニック

-レイアウト部品の名称の違い

Xamarin.Forms WinRT

積み重ね StackLayout StackPanel

絶対座標 AbsoluteLayout Canvas

格子状 GridLayout Grid

相対座標 RelativeLayout (なし)

スクロール ScrollView ScrollViewer

枠線 Frame Border

サイズフィット (なし) Viewbox

- StackLayout の活用テクニック

Xamarin.Forms XAML

<ContentPage ...>

<StackLayout>

<Frame OutlineColor="Accent"> ... </Frame>

<ScrollView Orientation="Vertical" VerticalOptions="FillAndExpand">

<StackLayout>

... (表示する内容) ...

</StackLayout>

</ScrollView>

<Button x:Name="btnUpdate" Text="更新" BorderWidth="2" />

<Button x:Name="btnGoBack" Text="前の画面に戻る" BorderWidth="2" />

</StackLayout>

</ContentPage>

FillAndExpand

余白いっぱいに

引き伸ばす

- UI 部品の名前の違い

Xamarin.Forms WinRT の場合は...

ActivityIndicator ProgressRing BoxView Rectangle

Button Button

DatePicker DatePicker

Editor TextBox

Entry TextBox

Image Image

Label TextBlock

ListView ListView

Xamarin.Forms WinRT の場合は...

Map BingMaps

Picker ComboBox

ProgressBar ProgressBar

Slider Slider

Switch ToggleButton TimePicker TimePicker WebView WebView

- CheckBox

- GridView

-主要プロパティの名前の違い

WinRT Xamarin.Forms

余白制御 Margin Padding

位置制御 VerticalAlignment/HorizontalAlignment VerticalOptions/HorizontalOptions

前景色 Foreground TextColor など

背景色 Background BackgroundColor/BackgroundImage など

データバインド DataContext BindingContext

- データアノテーションを利用した単体入力エラーチェック

[DataContract]

public class FindAuthorRequestDTO {

[DataMember]

[Required]

[RegularExpression(@"^[0-9]{3}-[0-9]{2}-[0-9]{4}$")]

public string AuthorId { get; set; } }

C#

[HttpPost]

public AuthorDetailDTO

FindAuthor(FindAuthorRequestDTO request) {

if (ModelState.IsValid == false) throw new

HttpResponseException(HttpStatusCode.BadRe quest);

....

}

C#

EF エンティティデータモデルのシリアル化

EF エンティティデータモデルのシリアル化

public string Property(EdmProperty edmProperty) {

return string.Format(...,

"[System.Runtime.Serialization.DataMember]¥r¥n{0} {1} {2} {{ {3}get; {4}set; }}", ...);

}

public string NavigationProperty(NavigationProperty navProp) {

...

return string.Format( ..,

"[System.Runtime.Serialization.DataMember]¥r¥n{0} {1} {2} {{ {3}get; {4}set; }}", ...);

}

public string EntityClassOpening(EntityType entity) {

return string.Format(...,

"[System.Runtime.Serialization.DataContract(IsReference = true)]¥r¥n {0} {1}partial class {2}{3}", ...);

}

Pubs.tt

i. ii.

iii.

3 種類の POCO オブジェクトの使い分け

DAC

データベース

*.edmx

SI + BC

ASP.NET Web API API Controller

POCO

(エンティティ)

BEC

ADO.NET Entity Framework POCO

(DTO)

BEC SA

HttpClient

BC

サーバ呼び出し ロジック Xamarin

.Forms

*.xaml

*.xaml.cs コードビハインド

POCO

(ViewModel)

UI

3 種類の POCO オブジェクトの使い分け

ViewModel DTO エンティティモデル

内容 • 双方向データバインドの実装に利用する • データの転送に利用する

• 上り電文と下り電文とで別の DTO が利用 される

• Entity Framework によるデータベースから のデータ取得に利用する

特徴 • UI に併せて最適化されて定義される

• 入力で期待するデータの型と、POCO 上に 定義されるデータ型がずれることがある

• データ入力チェックのために、データアノ テーションが利用される

• エラー検証などのために、特定の基底クラ スから派生して作られることが多い

• シリアル化のために、[DataContract] 属性 が利用される

• サーバ側でのデータ入力チェックのために、

データアノテーションが利用される

• データベース構造に併せて定義される

• 遅延ローディング機能などを有効にするた めに、多くのプロパティが virtual 定義され ている

• EF から読み取ったデータはそのままではシ リアル化できない

• データベースからリバースして作った場合 には、データアノテーション定義がない

データ構造 UI に最適化 通信に最適化 DB 構造に最適化

データアノ テーション

○ (UIに最適化) ○ (上り電文のみ) △ (DB構造に最適化)

シリアル化 × (不要なことが多い) ○ (必須) × (既定ではシリアル化不可)

関連したドキュメント