SC-014
小野 修司どっとねっとふぁん http://blogonos.wordpress.com/MSMVP 10年連続受賞 Microsoft MVP for ASP.NET/IIS (April 2007 – March 2013) Microso...
ASP.NET MVC 4 Beta の一部として提供RESTful な Web サービスを提供 データを表す URI に対して HTTP のメソッドで操作を行うVisual Studio のテンプレートが提供されている  Visual Stu...
多様なデバイスにリーチ端末の形態 デスクトップ スレート モバイルアプリケーションの形態 HTMLアプリケーション ネイティブアプリケーション
WCF Data Servicesデータベースをそのまま Web サービスとして公開するのが容易WCF RIA ServicesSilverlight アプリケーションとの連携が容易WCF Web HTTP プログラミング モデルWebServ...
柔軟なプログラミングモデルルーティング“設定より規約” によるアクションメソッド呼び出しPOCO による Model 定義に対応クエリーパラメーターによるページング/ソーティング/フィルタ対応属性と Model バインディングによる検証カスタム...
routes.MapHttpRoute(     name: "DefaultApi",     routeTemplate: "api/{controller}/{id}",     defaults: new { id = RoutePar...
データの一覧Getで始まる引数なしのメソッド[HttpGet] を付加した引数なしのメソッド特定データの取得Getで始まる引数をとるメソッド[HttpGet] を付加した引数をとるメソッド
データの追加Postで始まるメソッド[HttpPost] を付加したメソッドデータの更新Putで始まるメソッド[HttpPut] を付加したメソッドデータの削除Deleteで始まるメソッド[HttpDelete] を付加したメソッド
POCO による Model 定義 public class Contact {     public int ID { get; set; }     [Required(ErrorMessage = "名前を入力してください")]     ...
$filterSQL 文の Where 句に相当$orderbySQL 文の Order By 句に相当$skip指定した数のデータを読み飛ばす$top指定した数のデータを取得する
public IQueryable<Contact> Get(){    return db.Contacts.AsQueryable();}IQueryable に対応するだけでよい
属性による検証 public class Contact {     public int ID { get; set; }     [Required(ErrorMessage = "名前を入力してください")]     public str...
カスタムフィルターによる処理の拡張 public class ValidationActionFilter : ActionFilterAttribute {     public override void OnActionExecuting...
OnActionExecutingAction の処理開始前OnActionExecutedAction の処理終了後OnAuthorization認証チェック時OnException例外発生時
[Authorize] 属性の追加HTTPステータス 302 が返されるLoginページへのリダイレクト※対応の詳細は下記でhttp://blogs.msdn.com/b/tsmatsuz/archive/2012/03/12/asp-net-...
Getting Started with ASP.NET Web APIhttp://www.asp.net/web-apiSelf Hosting / Dependency Resolver の利用等の情報もASP.NET Web API R...
WDD 会場内の日経 BP 社ブースと日経 BP 書店にてプログラミングMicrosoft ASP.NET MVC特別価格にて先行発売中! (一般発売は 5/8 予定)プログラミングMicrosoft ASP.NET 4特別価格にて発売中!  ...
SC-014
20120425
Upcoming SlideShare
Loading in...5
×

20120425

560

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
560
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

20120425

  1. 1. SC-014
  2. 2. 小野 修司どっとねっとふぁん 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系の開発がメイン遠距離通勤
  3. 3. 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 ライセンスで提供されている
  4. 4. 多様なデバイスにリーチ端末の形態 デスクトップ スレート モバイルアプリケーションの形態 HTMLアプリケーション ネイティブアプリケーション
  5. 5. WCF Data Servicesデータベースをそのまま Web サービスとして公開するのが容易WCF RIA ServicesSilverlight アプリケーションとの連携が容易WCF Web HTTP プログラミング モデルWebServiceHost を利用し、サービスコントラクトを定義/実装して公開
  6. 6. 柔軟なプログラミングモデルルーティング“設定より規約” によるアクションメソッド呼び出しPOCO による Model 定義に対応クエリーパラメーターによるページング/ソーティング/フィルタ対応属性と Model バインディングによる検証カスタムフィルターによる処理の拡張適切なHTTPステータスの返却HttpStateCode の利用
  7. 7. routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );“api/{controller}/{action}/{id}” と action をURLに含める設定も可能この場合 RESTful とはいえなくなる
  8. 8. データの一覧Getで始まる引数なしのメソッド[HttpGet] を付加した引数なしのメソッド特定データの取得Getで始まる引数をとるメソッド[HttpGet] を付加した引数をとるメソッド
  9. 9. データの追加Postで始まるメソッド[HttpPost] を付加したメソッドデータの更新Putで始まるメソッド[HttpPut] を付加したメソッドデータの削除Deleteで始まるメソッド[HttpDelete] を付加したメソッド
  10. 10. POCO による Model 定義 public class Contact { public int ID { get; set; } [Required(ErrorMessage = "名前を入力してください")] public string Name { get; set; } [Required(ErrorMessage = "メールアドレスを入力してください")] public string Mail { get; set; } }
  11. 11. $filterSQL 文の Where 句に相当$orderbySQL 文の Order By 句に相当$skip指定した数のデータを読み飛ばす$top指定した数のデータを取得する
  12. 12. public IQueryable<Contact> Get(){ return db.Contacts.AsQueryable();}IQueryable に対応するだけでよい
  13. 13. 属性による検証 public class Contact { public int ID { get; set; } [Required(ErrorMessage = "名前を入力してください")] public string Name { get; set; } [Required(ErrorMessage = "メールアドレスを入力してください")] public string Mail { get; set; } }Model バインディングにより ModelState に検証結果が格納される
  14. 14. カスタムフィルターによる処理の拡張 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); } } }
  15. 15. OnActionExecutingAction の処理開始前OnActionExecutedAction の処理終了後OnAuthorization認証チェック時OnException例外発生時
  16. 16. [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
  17. 17. Getting Started with ASP.NET Web APIhttp://www.asp.net/web-apiSelf Hosting / Dependency Resolver の利用等の情報もASP.NET Web API Referencehttp://msdn.microsoft.com/en-us/library/hh849329(v=vs.108).aspxSource Codehttp://aspnetwebstack.codeplex.com/
  18. 18. WDD 会場内の日経 BP 社ブースと日経 BP 書店にてプログラミングMicrosoft ASP.NET MVC特別価格にて先行発売中! (一般発売は 5/8 予定)プログラミングMicrosoft ASP.NET 4特別価格にて発売中! (特別価格専用, 6/30 まで) http://ec.nikkeibp.co.jp/nsp/aspnetmvc/
  19. 19. SC-014
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×