asp.net mvcとentity frameworkで作ってみた

32
ASP.NET MVC と Entity Framework と とととととととととと ととととと (matarillo)

Upload: inomata-kentaro

Post on 12-Nov-2014

5.180 views

Category:

Documents


0 download

DESCRIPTION

Tech Ed 2010 Rejected LT

TRANSCRIPT

Page 1: ASP.NET MVCとEntity Frameworkで作ってみた

ASP.NET MVCとEntity Frameworkでサービスを作ってみた

猪股健太郎(matarillo)

Page 2: ASP.NET MVCとEntity Frameworkで作ってみた

アジェンダ•何を作ったか•分析•設計方針•実装•まとめ

Page 3: ASP.NET MVCとEntity Frameworkで作ってみた

短縮 URLサービスを作りました

Page 4: ASP.NET MVCとEntity Frameworkで作ってみた
Page 5: ASP.NET MVCとEntity Frameworkで作ってみた
Page 6: ASP.NET MVCとEntity Frameworkで作ってみた

分析

Page 7: ASP.NET MVCとEntity Frameworkで作ってみた

画面遷移

トップページ

情報ページ

目的のページ(システム外)

Page 8: ASP.NET MVCとEntity Frameworkで作ってみた

ロバストネス分析

トップページ

別名情報

登録

情報ページ

目的のページ(システム外)

ログ

情報

リダイレクト

Page 9: ASP.NET MVCとEntity Frameworkで作ってみた

CRUD表別名情報 ログ

登録 C情報 R Rリダイレクト R C

Page 10: ASP.NET MVCとEntity Frameworkで作ってみた

設計方針

Page 11: ASP.NET MVCとEntity Frameworkで作ってみた

Presentation

Business

Data Access

論理階層

Page 12: ASP.NET MVCとEntity Frameworkで作ってみた

ASP.NET MVC

Model

View

Controller

Entity Framework

Context

Entity

Page 13: ASP.NET MVCとEntity Frameworkで作ってみた

View Controller

Model

ASP.NET MVC

Entity Framework

Entity

Context

Page 14: ASP.NET MVCとEntity Frameworkで作ってみた

疑問Model Entity== ?

Page 15: ASP.NET MVCとEntity Frameworkで作ってみた

今回の方針Model Entity!=

Page 16: ASP.NET MVCとEntity Frameworkで作ってみた

今回の方針Model Entity

View Model

Data Entity

Page 17: ASP.NET MVCとEntity Frameworkで作ってみた

View Controller

Context

Façade

今回の方針

View Model

Data Entity

Page 18: ASP.NET MVCとEntity Frameworkで作ってみた

View Controller

Context

Façade

View Model

Data Entity

依存関係

Page 19: ASP.NET MVCとEntity Frameworkで作ってみた

実装

Page 20: ASP.NET MVCとEntity Frameworkで作ってみた

Entity FrameworkLog

PK Id

FK1 UrlAliasIdAccessTime

UrlAlias

PK Id

UrlI2 UrlHeadI1 Alias

データベースからモデルを生成

Page 21: ASP.NET MVCとEntity Frameworkで作ってみた

DataEntityUrlAlias

属性

+ Alias+ Id+ Url+ UrlHead操作

+ UpdateAlias()+ UpdateUrlHead()

AliasCreator

属性

操作

+ GetAlias(id : Integer) : String

ロジックを追加

Page 22: ASP.NET MVCとEntity Frameworkで作ってみた

ASP.NET MVCView Controller View

ModelHomeController

ServiceController

Index(Create)

Info(Details)

NotFound

Index [GET]

Index [POST]

Info(alias)

Redir(alias)

Title

Information

UserInput

HtmlUtil

Page 23: ASP.NET MVCとEntity Frameworkで作ってみた

ViewModelpublic class UserInput{ [DisplayName("別名を付ける URL")] [RegularExpression( "s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+", ErrorMessage="URLの形式が不正です。 ")] [Required(ErrorMessage="URLを入力してください。")] public string Url { get; set; }} 宣言型バリデーション

Page 24: ASP.NET MVCとEntity Frameworkで作ってみた

ViewModel

オブジェクトキャッシュ

Information

属性

操作

ObjectCache

属性

操作

Facade

属性

操作

UrlAlias

属性

操作1 1

《use》

《create》

《use》

Page 25: ASP.NET MVCとEntity Frameworkで作ってみた

ControllerHomeController

Index [POST] → RedirectToRoute

Redir(alias) → Redirect

Page 26: ASP.NET MVCとEntity Frameworkで作ってみた

ルーティングルーティング名 パス

“Root”“Info” {alias}-

“Redirect” {alias}“Default” {controller}/{action}/{id}

Page 27: ASP.NET MVCとEntity Frameworkで作ってみた

View

実は jQueryも使ってます

$.getJSON( url, null, function (title) { $('#pagetitle').text(title); });

Page 28: ASP.NET MVCとEntity Frameworkで作ってみた

まとめ

Page 29: ASP.NET MVCとEntity Frameworkで作ってみた

.NET Framework 4

.NET Framework 3.5 SP1

Page 30: ASP.NET MVCとEntity Frameworkで作ってみた
Page 31: ASP.NET MVCとEntity Frameworkで作ってみた

事前にしっかりチェック★

Page 32: ASP.NET MVCとEntity Frameworkで作ってみた

ご静聴ありがとうございました