SlideShare una empresa de Scribd logo
1 de 20
SC-014
小野 修司
どっとねっとふぁん
 http://blogonos.wordpress.com/
MSMVP 10年連続受賞
 Microsoft MVP for ASP.NET/IIS
 (April 2007 – March 2013)
 Microsoft MVP for Visual C#
 (April 2003 – March 2007)

業務はWeb系の開発がメイン
遠距離通勤
ASP.NET MVC 4 Beta の一部として提供
RESTful な Web サービスを提供
 データを表す URI に対して HTTP のメソッドで操作を行う

Visual Studio のテンプレートが提供されている
  Visual Studio 2010/.NET 4 用(go-live ライセンス)
  Visual Studio 11/.NET 4.5 用

ソースコードが Apache 2.0 ライセンスで提供されている
多様なデバイスに
リーチ
端末の形態
 デスクトップ
 スレート
 モバイル

アプリケーションの形態
 HTMLアプリケーション
 ネイティブアプリケーション
WCF Data Services
データベースをそのまま Web サービスとして公開するのが容易

WCF RIA Services
Silverlight アプリケーションとの連携が容易

WCF Web HTTP プログラミング モデル
WebServiceHost を利用し、サービスコントラクトを定義/実装して公開
柔軟なプログラミングモデル
ルーティング
“設定より規約” によるアクションメソッド呼び出し
POCO による Model 定義に対応
クエリーパラメーターによるページング/ソーティング/フィルタ対応
属性と Model バインディングによる検証
カスタムフィルターによる処理の拡張

適切なHTTPステータスの返却
HttpStateCode の利用
routes.MapHttpRoute(
     name: "DefaultApi",
     routeTemplate: "api/{controller}/{id}",
     defaults: new { id = RouteParameter.Optional }
 );


“api/{controller}/{action}/{id}” と action をURLに含める設定も可能
この場合 RESTful とはいえなくなる
データの一覧
Getで始まる引数なしのメソッド
[HttpGet] を付加した引数なしのメソッド

特定データの取得
Getで始まる引数をとるメソッド
[HttpGet] を付加した引数をとるメソッド
データの追加
Postで始まるメソッド
[HttpPost] を付加したメソッド

データの更新
Putで始まるメソッド
[HttpPut] を付加したメソッド

データの削除
Deleteで始まるメソッド
[HttpDelete] を付加したメソッド
POCO による Model 定義
 public class Contact
 {
     public int ID { get; set; }


     [Required(ErrorMessage = "名前を入力してください")]
     public string Name { get; set; }


     [Required(ErrorMessage = "メールアドレスを入力してください")]
     public string Mail { get; set; }
 }
$filter
SQL 文の Where 句に相当

$orderby
SQL 文の Order By 句に相当

$skip
指定した数のデータを読み飛ばす

$top
指定した数のデータを取得する
public IQueryable<Contact> Get()
{
    return db.Contacts.AsQueryable();
}


IQueryable に対応するだけでよい
属性による検証
 public class Contact
 {
     public int ID { get; set; }


     [Required(ErrorMessage = "名前を入力してください")]
     public string Name { get; set; }


     [Required(ErrorMessage = "メールアドレスを入力してください")]
     public string Mail { get; set; }
 }

Model バインディングにより ModelState に検証結果が格納される
カスタムフィルターによる処理の拡張
 public class ValidationActionFilter : ActionFilterAttribute
 {
     public override void OnActionExecuting(HttpActionContext context)
     {
         var modelState = context.ModelState;
         if (!modelState.IsValid) {
             dynamic errors = new JsonObject();
             foreach (var key in modelState.Keys) {
                 var state = modelState[key];
                 if (state.Errors.Any()) { errors[key] = state.Errors.First().ErrorMessage; }
             }
             context.Response = new HttpResponseMessage<JsonValue>(errors, HttpStatusCode.BadRequest);
         }
     }
 }
OnActionExecuting
Action の処理開始前

OnActionExecuted
Action の処理終了後

OnAuthorization
認証チェック時

OnException
例外発生時
[Authorize] 属性の追加
HTTPステータス 302 が返される
Loginページへのリダイレクト

※対応の詳細は下記で
http://blogs.msdn.com/b/tsmatsuz/archive/2012/03/12/asp-net-web-api-validation-
authentication-authorization-exception-handling-using-custom-filter.aspx
Getting Started with ASP.NET Web API
http://www.asp.net/web-api
Self Hosting / Dependency Resolver の利用等の情報も

ASP.NET Web API Reference
http://msdn.microsoft.com/en-us/library/hh849329(v=vs.108).aspx

Source Code
http://aspnetwebstack.codeplex.com/
WDD 会場内の日経 BP 社ブースと日経 BP 書店にて

プログラミング
Microsoft ASP.NET MVC
特別価格にて先行発売中! (一般発売は 5/8 予定)




プログラミング
Microsoft ASP.NET 4
特別価格にて発売中!                                  (特別価格専用, 6/30 まで)
                              http://ec.nikkeibp.co.jp/nsp/aspnetmvc/
SC-014

Más contenido relacionado

Similar a 20120425

[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
 
Tech talk salesforce mobile sdk
Tech talk   salesforce mobile sdkTech talk   salesforce mobile sdk
Tech talk salesforce mobile sdk
Kazuki Nakajima
 
Html5, Web Applications 2
Html5, Web Applications 2Html5, Web Applications 2
Html5, Web Applications 2
totty jp
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
Hideki Hashizume
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
Kazuki Nakajima
 

Similar a 20120425 (20)

Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
 
Selenium 触ってみよう
Selenium 触ってみようSelenium 触ってみよう
Selenium 触ってみよう
 
Selenium webdriver使ってみようず
Selenium webdriver使ってみようずSelenium webdriver使ってみようず
Selenium webdriver使ってみようず
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
 
20080524
2008052420080524
20080524
 
Tech talk salesforce mobile sdk
Tech talk   salesforce mobile sdkTech talk   salesforce mobile sdk
Tech talk salesforce mobile sdk
 
Html5, Web Applications 2
Html5, Web Applications 2Html5, Web Applications 2
Html5, Web Applications 2
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
 
Ajax basic
Ajax basicAjax basic
Ajax basic
 
Windows Azure ではじめる Windows ストアアプリ開発
Windows Azure ではじめる Windows ストアアプリ開発Windows Azure ではじめる Windows ストアアプリ開発
Windows Azure ではじめる Windows ストアアプリ開発
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
 
20090212
2009021220090212
20090212
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 
20100313
2010031320100313
20100313
 
20100218
2010021820100218
20100218
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 

Más de 小野 修司 (20)

20140322
2014032220140322
20140322
 
20121215
2012121520121215
20121215
 
20120616
2012061620120616
20120616
 
20120128
2012012820120128
20120128
 
20100224
2010022420100224
20100224
 
20100218 lt
20100218 lt20100218 lt
20100218 lt
 
20091207
2009120720091207
20091207
 
20090711
2009071120090711
20090711
 
20090606
2009060620090606
20090606
 
20090418
2009041820090418
20090418
 
20090328
2009032820090328
20090328
 
20081003
2008100320081003
20081003
 
20080630
2008063020080630
20080630
 
20080627 2
20080627 220080627 2
20080627 2
 
20080627 1
20080627 120080627 1
20080627 1
 
20080213
2008021320080213
20080213
 
20080201
2008020120080201
20080201
 
20071204
2007120420071204
20071204
 
20071030
2007103020071030
20071030
 
20061125
2006112520061125
20061125
 

20120425