asp.net mvcとentity frameworkで作ってみた
DESCRIPTION
Tech Ed 2010 Rejected LTTRANSCRIPT
ASP.NET MVCとEntity Frameworkでサービスを作ってみた
猪股健太郎(matarillo)
アジェンダ•何を作ったか•分析•設計方針•実装•まとめ
短縮 URLサービスを作りました
分析
画面遷移
トップページ
情報ページ
目的のページ(システム外)
ロバストネス分析
トップページ
別名情報
登録
情報ページ
目的のページ(システム外)
ログ
情報
リダイレクト
CRUD表別名情報 ログ
登録 C情報 R Rリダイレクト R C
設計方針
Presentation
Business
Data Access
論理階層
ASP.NET MVC
Model
View
Controller
Entity Framework
Context
Entity
View Controller
Model
ASP.NET MVC
Entity Framework
Entity
Context
疑問Model Entity== ?
今回の方針Model Entity!=
今回の方針Model Entity
View Model
Data Entity
View Controller
Context
Façade
今回の方針
View Model
Data Entity
View Controller
Context
Façade
View Model
Data Entity
依存関係
実装
Entity FrameworkLog
PK Id
FK1 UrlAliasIdAccessTime
UrlAlias
PK Id
UrlI2 UrlHeadI1 Alias
データベースからモデルを生成
DataEntityUrlAlias
属性
+ Alias+ Id+ Url+ UrlHead操作
+ UpdateAlias()+ UpdateUrlHead()
AliasCreator
属性
操作
+ GetAlias(id : Integer) : String
ロジックを追加
ASP.NET MVCView Controller View
ModelHomeController
ServiceController
Index(Create)
Info(Details)
NotFound
Index [GET]
Index [POST]
Info(alias)
Redir(alias)
Title
Information
UserInput
HtmlUtil
ViewModelpublic class UserInput{ [DisplayName("別名を付ける URL")] [RegularExpression( "s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+", ErrorMessage="URLの形式が不正です。 ")] [Required(ErrorMessage="URLを入力してください。")] public string Url { get; set; }} 宣言型バリデーション
ViewModel
オブジェクトキャッシュ
Information
属性
操作
ObjectCache
属性
操作
Facade
属性
操作
UrlAlias
属性
操作1 1
《use》
《create》
《use》
ControllerHomeController
Index [POST] → RedirectToRoute
Redir(alias) → Redirect
ルーティングルーティング名 パス
“Root”“Info” {alias}-
“Redirect” {alias}“Default” {controller}/{action}/{id}
View
実は jQueryも使ってます
$.getJSON( url, null, function (title) { $('#pagetitle').text(title); });
まとめ
.NET Framework 4
.NET Framework 3.5 SP1
事前にしっかりチェック★
ご静聴ありがとうございました