新しい「asp.net web pages」を触ってみた - classic asp to razor !? -

64
Okayama IT Engineers Community 新しい「ASP.NET Web Pages」を触ってみた Classic ASP to Razor !? - OITEC きよくら ならみ 2011/8/27 1

Upload: narami-kiyokura

Post on 16-Feb-2017

4.587 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

新しい「ASP.NET Web Pages」を触ってみた- Classic ASP to Razor !? -

OITEC

きよくら ならみ2011/8/27

1

Page 2: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

自己紹介• ハンドル:きよくら ならみ• プログラマ・SE

– 業務アプリの内作が最近の主なお仕事

• Webアプリを触ることが多いです。– ここ数年はASP.NETにどっぷり– その前はClassic ASPもガッツリやってました

• コンタクト– Twitter: @kiyokura– はてダ: id:kiyokura– その他、mixiとか適当に。– Facebookは本名プレイ

• コミュニティ– OITEC(運営スタッフ)– 中国GTUG– Windows Phone Arch

• 近況– 結婚しました

2

Page 3: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

本セッションの目的

• 新しいASP.NET Web PagesとRazorの概要を知っていただき、興味をもっていただく

• Classic ASPの移植先としてのWeb Pagesの可能性を感じていただく

3

Page 4: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

本日のアジェンダ

• 新しい「ASP.NET Web Pages」とは?

– ASP.NETのおさらい ~歴史を振り返る~

– ASP.NET Web Pagesの簡単な紹介

• Classic ASPと比較したASP.NET Web Pages

– Classic ASPのおさらい

– 7つのポイントで見る

• まとめ

4

Page 5: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

新しい「ASP.NET Web Pages」とは?

5

Page 6: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NETのおさらい ~歴史を振り返る~

新しい「ASP.NET Web Pages」とは?

6

Page 7: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NET以前のIISのWebアプリケーション

• CGI– C/C++やPerl等々– 昔のIIS(6.0以前)ではあまりCGIのパフォーマン

スは良くなかった– コードから文字列としてHTMLを出力

• Active Server Pages(ASP)– Classic ASP、レガシーASP等とも呼ぶ

• 本資料では、一貫して「Classic ASP」と呼称

– ISAPIを利用し(CGIに比べ)高パフォーマンス– HTMLにコードを埋め込むスタンス

※IIS = Internet Information Services

7

Page 8: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NETの登場

• .NET Frameworkと共に登場(2002年)

• IISと.NET Frameworkを基盤に利用する

• 革新的なフレームワーク

– Classic ASPとは全く違う

• 2011年夏現在、3つのフレームワークを内包

– ASP.NET Web Forms

– ASP.NET MVC

– ASP.NET Web Pages

8

Page 9: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NET Web Forms• ASP.NET登場時からある方式

– 「Web Forms」と呼称され始めたのは割と最近– 従来は「ASP.NET = Web Forms」

• 特徴– サーバコントロールの利用– コードビハインドによるビューとコードの分離– ポストバックやViewStateによる通信の隠ぺい– ASP.NET AjaxによるAJAX実装

• メリット– サーバコントロールを利用による高い生産性– VBやVB.NET,C#などでWin Formのアプリを開発してい

た人の導入が容易

9

デモ

Page 10: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NET MVC• 割と近年になって(2009年にVer 1.0がリリース)

• 特徴– MVCアーキテクチャを採用– ビューエンジンの選択が可能

• ASPX(Web Formsで使われているものと同じ)• Razor(Web Pagesで使われているものと同じ)• 他オープンソースのビューエンジンを選択可能

• メリット– MVCアーキテクチャを採用することのメリット

• コードの再利用性 / テスト容易性アップ• MVCフレームワークでの開発者の参入しやすさ 等々

– 柔軟なルーティングによる解りやすいURL表現– jQuery等との親和性向上

• 出力されるHTMLは(ほぼ)完全にコントローラブル

10

デモ

Page 11: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NET WebPages• 最新(?)のフレームワークです。今回の本題

です。• 特徴

– HTMLにコードを埋め込む形をとる• PHPやClassic ASPライク

– Razor構文を採用– ヘルパーにより、簡単に機能拡張が可能– フルスペックの.NETの機能を用いての拡張も可能– 事前のコンパイルが不要

• メリット– 軽量で文法も容易な為、導入しやすい– 好みや要求にあった開発環境を利用可能

• テキストエディタ一本~Visual Studioまで

11

デモはあとで!

Page 12: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

注意

• 「ASP.NET Webページ」というと、以前のWeb Formsを指していることがある

– 昔はWeb Formsという言葉がなかった

– 『ASP.NETで作ったWebのページ』という程度の意味で使われていた?

• 検索するときは『Razor』という単語を絡めるほうが良い

– むしろ『Razor』で検索したほうが良いかも。

• ただ、MVCのビューエンジンとしてのRazorで引っかかるかも…

12

Page 13: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ここまでのまとめ

• ASP.NETは.NET Frameworを基盤に利用したWebアプリケーションフレームワークです

• 現在、3つのフレームワークを内包

– Web Forms

– MVC

– Web Pages

13

Page 14: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NETの現在

14

Internet Information Services(IIS)

.NET Framework

Web Forms MVC Web Pages

Page 15: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NET Web Pagesの簡単な紹介新しい「ASP.NET Web Pages」とは?

15

Page 16: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

実行環境• Webサーバ

– IIS 7.0 / 7.5– IIS Express 7.5– ASP.NET 開発サーバ(Visual Studio / Visual Web

Developer)

• フレームワーク– .NET Framework 4

• 開発用環境には…– ASP.NET MVC 3 RTM Tools Update

• http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=82cbd599-d29a-43e3-b78b-0f863d22811a

– もしくは、WebMatrix

16

Page 17: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

注意?

※IISにパッチが当たっていないと、一部の機能がうまいこと動かない事がある?(拡張子省略ができない)http://support.microsoft.com/kb/980368

私の環境では、Windows 7 / Windows Server 2008 R2はSP1を当てたら大丈夫でした。

たぶん、Vista / Windows 2008 Serverも上記パッチか最新のSP当てたら大丈夫。

サーバにパッチ当てれない環境の場合は、web.configに以下の記述でもOKhttp://blog.scnetstudio.com/post/2011/06/18/Extensi

onless-URLs-do-not-find-cshtmlvbhtml-files-on-IIS-7-or-IIS-75.aspx

(Special Thanks:@sibayan )

17

Page 18: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

開発環境

• お好みで3つの開発環境

– WebMatrix

– Visual Studio 2010

• 無償:Visual Web Developer 2010 Express Edition

– テキストエディタ

18

Page 19: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

WebMatrix• ライトなWebアプリケーション開発環境• 無償• オープンソースのソフトウェアのカスタマイズ・展開機能

– DotNetNukeやWordPress、Drupal等々

• インテリセンスは効かない• デバッグのサポート機能(ステップ実行等)無し• 詳しくは

– 「WebMatrixで Web アプリをはじめよう!」– http://blogs.msdn.com/b/tashinmu/archive/2011/03/29

/webmatrix-20110329.aspx

• 入手は以下から– http://www.microsoft.com/web/webmatrix/– WebPI経由でインストールできます

19

デモ

Page 20: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

Visual Studio 2010

• 「SP1」+「ASP.NET MVC 3 RTM Tools Update」

• 無償版のVisual Web Developerも可能

• インテリセンス、デバッグ実行ももちろん可

• 必要なアドオン等はWebPIからインストール可能

– 無償版のVWDもWebPIからインストール可能

– http://www.microsoft.com/web/downloads/platform.aspx

20

Page 21: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

テキストエディタ

• お好みのテキストエディタで開発可能

• 依存関係はインストールしておく必要あり

– WebMatrixをインストールしておけば大丈夫

• 実行環境(IIS/IIS Express)にホストしてブラウザでアクセスするだけ

21

Page 22: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

どれで開発する?

• とりあえず触ってみたい方– WebMatrixがお勧め!

– サンプルプロジェクトも入ってます!

• Visual Studioに抵抗がない人– Visual Studio(VWD)がおすすめ

• 馴染みのエディタで開発したい人– お好みのエディタでどうぞ!

– 実行環境の設定にはWebMatrixを使うと楽。• WebMatrixを立ち上げておき、コーディングを好みのエ

ディタで行う

22

Page 23: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

特徴

• Razor構文で記述します– @を使ってHTMLにコードを埋め込む

• C#とVB.NETが利用できます– 拡張子cshtmlとvbhtml

• コンパイル不要です– 基本的にファイルをコピーすれば動きます

• プログラミングを容易にする機構– ヘルパーと呼ばれる機構やや専用の(?)データ

ベースアクセスのための機構等、簡易にプログラミングできる機能が用意されています

• コードは.NETでバリバリかけます

23

Page 24: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

Razor構文基礎(C#)• 単一の式

– @式– @(式)

• コードブロック– @{文;}– @{

文;文;

}

• コードブロックその2– @if(){

...}

– @foreach var row in rows{..

}

24

Page 25: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ヘルパー

• 呼び出したところでHTMLを出力するサブルーチン…みたいなもの

• アドオンとして追加可能– NuGetでとってくる等

• 自作も可能– Classic ASPから移植するときにも多用すること

になる(かも)

• 細かく言うと…– HelperResult型を返すメソッド。

– 専用の構文でなく、通常の.NETのClassとして実装することも可能

25

デモ

Page 26: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

個人的なおすすめポイント• プログラミングの初心者もとっつきやすい

– 前提知識が最低限– 特有のお作法や決まりごとが少ない

• 開発環境の構築が簡単(Windowsクライアントがあればあとは無料でそろえれる)– 書くだけならエディタでもOK

• Visual Studio(含む無料版)という、相当に強力なIDEが使える

• 簡単なことは簡単に書け、複雑なこともできます– フルスペックの.NETで記述も可能

26

Page 27: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

細かいことは…

• これを見てください!!– TF セミナー資料「Razor 構文による ASP.NET Web

ページの開発• http://msdn.microsoft.com/ja-jp/asp.net/hh182563

– Razor 構文と ASP.NET Web ページ• http://msdn.microsoft.com/ja-jp/asp.net/gg193039

– WebMatrixのサンプルを見る!• お勧め!

• あとは、後半のClassic ASPとの比較で!

27

Page 28: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

Classic ASPと比較したASP.NET WebPages

28

Page 29: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

Classic ASPのおさらいClassic ASPと比較したASP.NET Web Pages

29

Page 30: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP(Active Server Pages)とは

• IISのWebアプリケーションの実行環境

• HTMLにコードを埋め込む

• VBScript/Javascriptでコードを記述

– そのほか、ActiveScript対応言語も利用可能

• コンパイル不要

30

Page 31: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

それなりに(?)採用されてきた

• CGIより高パフォーマンス– IISをWebサーバとするなら、過去のIISでは。

• VBScriptが使える– VB、VBAのプログラマは大勢いる(いた)

• 手軽に書ける– HTMLにコードを埋め込むスタイル

– 特別な開発環境が要らない(テキストエディタ一本でOK)

• 足りない部分はCOMで拡張– 自作する、公開されてるものを使う

• BASP21が有名

31

Page 32: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

しかし、現在では…

• 現在のその他のWebアプリケーションフレームワークに比べると– 機能が貧弱

– 生産性が低い

– COM依存度が高い• ISAPI=OLE(≒COM)

• 将来性が…

• しかし、意外と現場に残っている。– 機能拡張を含む保守もそれなりにあったり

– さすがに新規開発は…??

32

Page 33: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

選択肢• Classic ASPを使い続ける?• 何か他のものに移植する?

– ASP.NET?PHP?Java?

コストの兼ね合い移植時のコスト

開発工数(設計・製造・テスト)要員の確保・教育

保守・運用時のコスト機能拡張・変更の開発工数要員の確保・教育

33

Page 34: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

たとえば?

• ASP.NET Web Forms / MVC

– 設計コストがとても大きい

• 考え方が大きく違う違うので…

– いきなりフルスペックの.NETの開発スキルが要求される

• PHP

– 言語が全く違う

– 既存の機能(COM)などが使えるかどうか

34

Page 35: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NET Web Pagesは??

• 私の第一印象

– 素敵なIDEが使える

– 言語プラットホームが.NET

– Classic ASPと考え方が似ている

– Razor構文がシンプルでわかり易そう

– やろうと思えば高機能なことも

35

この第一印象があっているのかどうなのか。いくつかの観点で検討してみました。

実は最適解なのでは??

Page 36: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

7つのポイントClassic ASPと比較したASP.NET Web Pages

36

Page 37: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

7つのポイント+α

• ファイルの粒度・構成は?

• コードの書き換えがどんな感じになりそう?

• DBアクセスは

• サブルーチン(?)をどうするか

• #includeで処理している部分をどうするか

• COM利用をどうするか

• 例外処理をどうするか

• その他、留意点

37

Page 38: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ファイルの粒度・構成は?

• 「.asp」ファイルを「.cshtml/vbhtml」に一対一で置き換えるくらいで– 他ページポスト/ポストバックどちらでも問題な

し。• ASP.NET Web Formsはポストバック

• MVCはそもそも考え方が違う

• Classic ASPは設計者次第

– #includeで他ファイルを読み込んでいる場合も、大きく構成は変わらずに行ける可能性大• 詳細は後述

38

割とそのままいけると思います

Page 39: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

コードの置き換えは?

• 基本は<%%>を@に書き換えて…

• VBScript → C# or VB.NET

• 意外と、似たような粒度で書けるかも!

– そもそもVBScriptって、そんなにややこしいこと、できないし…

39

注意点はあるものの、素直に書き換えできる部分が多そう

Page 40: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

コード置き換えの留意点1• 言語はC#/VBのお好きな方で

– 元々がVBScriptならVB.NETが楽な点も

• Response.Writeに注意!– Write/WriteLiteralに置き換え– @や<text></text>が使える場面ではこちら

• 変数宣言の省略– VBscriptでは既定では変数宣言(Dim)を省略可能– C#は変数の宣言は強制されます。– VB.NETも規定値では強制されます

• @Option Explicit Offを明示すれば強制を撤回させれますが、ご利用は計画的に…

40

Page 41: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

コード置き換えの留意点2

• Variant型を存分に使っているところには注意

– 「存分に使っている」例

– 対応策1:見直す<オススメ!>

• 型を意識したコードに書きなおす。

– 対応策2:Object型を使用し都度キャスト

– 対応策3:Option Strinct Off<オススメしない>

• 言語にVB.NETを選択し、暗黙の型変換を許可する

41

Dim ii = 9i = i + 10 'iはInteger、値は『19』i = i & “10” 'iはString、値は『”1910”』

Page 42: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

DB接続はどうするか?

• Web Pagesが標準で用意しているWebMatrix.Data.Databaseが楽– Classic ASPで標準的に利用するADOと似たような操

作でDBアクセスが可能です

• ドライバも多様なものが使えます– SQL Server/SQL Server Compactは.NET標準で

– ODBC/OLEもそのまま使えます

• 普通に.NETのドライバを使って書くこともできます– ODP.NETも使えます

42

WebMatrix.Data.Database経由で使うのが楽

Page 43: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

DBアクセス比較

43

【Classic ASPの例】<%

Dim Cn, RsSet Cn = Server.CreateObject("ADODB.Connection")Cn.ConnectionString = "<接続文字列>"Cn.Open

Set Rs = Server.CreateObject("ADODB.Recordset")Rs.Open " SELECT * FROM hoge " , Cn , 3

%>

【WebMatrix.Data.Databaseの例】@{

var db = Database.Open(“MyDbCon”); // MyDbConはWeb.Configに定義した接続文字列

var rec = db.Query(“SELECT * FROM hoge”);}

Page 44: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

サブルーチンをどうするか

• SubプロシージャはFunctionプロシージャは適宜置き換え– クラス化する

– ヘルパ化する

– functionsブロックでメソッドを定義する

• 一番VBScriptのプロシージャに近いのはfunctionsブロック– ただし、HTMLの出力が多いものはヘルパのほう

が楽かも

44

クラス化/ヘルパ化/@functions ブロックで

Page 45: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

補足• クラス化

– .NET FrameworkのClassと同じ– 面倒でない/ふさわしい場合はクラスにまとめた方が用と思う– 自作クラスは通常の.NET Frameworkのプログラミングと同様に使える

• ヘルパ化– 呼び出し箇所にHTMLを出力するだけのサブプロシージャなどは、ヘルパに

すると良いかも• Subプロシージャ化してWriteメソッドで書き出すより楽

– Subプロシージャ内から呼び出すときはWriteメソッドに出力を渡せばOK

• functionsブロックでメソッドを定義– functions ブロックを使うとページのメンバメソッドを定義可能

• Classic ASPで同一ファイル内にプロシージャを定義するのと一番近い

– メソッドだけでなくページ内に閉じたスコープのメンバを定義したいときはfunctionsブロックで行う

– functionsブロックは、ドキュメントにあまり記述がないので注意

45

Page 46: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

補足2• @{}のスコープ

– @{}で定義した変数のスコープは同じファイル内の@だけ– 同じページ内であっても@helperや@funtionsのブロック内からは参照不可

• Webページがコンパイルされるときに自動的に生成される.csファイルを覗いていると、一目瞭然です– Hoge.cshtmlファイルはWebPagesを継承したクラスとして.csに– HTML部分や@{}等は、 Exexuteメソッド内に展開

• @{}で定義した変数は、Executeメソッドのローカル変数

– helperはプライベートメソッドとして定義される– functionsブロック内に書いたものはすべてHogePageClassのメンバとして

展開

• ファイルは、「ユーザディレクトリ¥ AppData¥Local¥Temp¥Temporary ASP.NET Files 」配下に生成されれます

46

Page 47: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

includeをどうするか?

• 用途によって切り分け

– 設定情報的なもの

– 定数や列挙対等

– 共通関数/クラス的なもの

– ヘッダ・フッタ等、共通レイアウト的なもの

47

用途によって振り分け。整理も必要かも。

Page 48: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

設定情報的なもの

• Web.Configに記述

– DB接続文字列は専用のセクションへ

– その他独自のものはappSettingsセクションに定義

• 利用は…

– 接続文字列はドライバに合わせて

• WebMatrix.Data.Databaseはキー名を引数に指定するだけ

– System.Configuration.ConfigurationManagerの静的メソッドで取得

48

Page 49: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

定数や列挙対等

• クラス等に実装

– AppCode配下に適当なクラスを作成

– ConstやstaticなReadOnlyプロパティ等

– enum

49

Page 50: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

共通関数/クラス的なもの

• クラスやヘルパー、funsionsなどで実装

– AppCode配下に実装。

– ヘルパーやfunctionsとして実装する場合は、AppCode配下に拡張子.cshtml/vbhtmlファイルで作成すればOK

50

Page 51: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ヘッダ・フッタ等、共通レイアウト的なもの

• Razorのレイアウト機構を使う

– レイアウトページ

• ASP.NET WebFormsのマスターページに近い

• こちらの置き換えれる場合はこちらで。

– RenderPage

• 外部のcshtmlを差し込む

• #includeにより近い形で利用できる

51

Page 52: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

COMをどうするか?

• VBScriptの非力を補うために使っていたのであれば、不要になることも

– BASP21の大半の機能は不要

• サードパーティー製の製品は、置き換えれるなら.NET版に

• どうしても…という場合は.NETのCOM相互運用機能(COM Interop)で

52

本当に必要か見極めを。必要ならCOMをそのまま使う

Page 53: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

例外処理をどうするか?

• VBScriptのエラー処理はVB由来のOn Errorステートメント– ただしVB/VBA子と異なり、以下の二つのみ

• On Error Resume Next(例外を無視して処理続行)• On Error GoTo 0(Resume Nextの効果を打ち消す)

• 可能であれば、より優れたtry-catchに– ただし、書き換え箇所が増えたり– シーケンスが大きく変わる可能性もある

• どうしても…という場合は…– 言語にVB.NETを選択しOn Errorステートメントを利用

53

出来ればtry-catchに。もしくはVB.NETで…

Page 54: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

整理してみる• ファイルの粒度・構成は?

– 割とそのままいけると思います

• コードの置き換えは?– 注意点はあるものの、素直に書き換えできる部分が多そう

• DB接続はどうするか?– WebMatrix.Data.Database経由で使うのが楽

• サブルーチンをどうするか– クラス化/ヘルパ化/@functions ブロックで

• #includeで処理している部分をどうするか– 用途によって振り分け。整理も必要かも。

• COM利用をどうするか– 本当に必要か見極めを。必要ならCOMをそのまま使う

• 例外処理をどうするか– 出来ればtry-catchに。もしくはVB.NETで…

54

Page 55: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

その他ポイント• 暗黙の型変換は禁止したほうが良い

– 言語にVBを使う場合、型指定の強制と暗黙の方変換の禁止を推奨します。

– コードの先頭に@Option Strict Onを記述すれば、明示的な型変換を強制できます。

• Server.Transferが使えません– cshtml/vbhtmlへのServer.Transferは使えないようです。

– 利用している場面は構成の変更が必要です。

• Web Formsとちゃんぽんできる…– Session変数やCookiesも共有できます

– 実用ではあまりしない方がいいと思いますが…

55

Page 56: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

本日のまとめ

56

Page 57: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

まとめ

• ASP.NET Web Pages(Razor)は

– シンプルでパワフルなフレームワークです

– ASP.NETとRazorの知識は、ほかの二つのフレームワークでも活かせます!

• Classic ASP to Razorはアリ

– 勝利のカギはこれだ!(独断と偏見)

• functionsブロックの活用

• ヘルパーの活用

• VB.NETの採用

57

Page 58: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

参考

58

Page 59: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

WebMatrix関係

• WebMatrix

– http://www.microsoft.com/web/webmatrix/

– http://www.microsoft.com/japan/web/webmatrix/

• WebMatrixで Web アプリをはじめよう!

– http://www.microsoft.com/japan/web/webmatrix/learn/

– Web/PDF/XPS

59

Page 60: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

RazorとASP.NET Web Pages関係• Razor 構文と ASP.NET Web ページ

– http://msdn.microsoft.com/ja-jp/asp.net/gg193039

– Web/PDF/XPS

• TF セミナー資料「Razor 構文による ASP.NET Web ページの開発– http://msdn.microsoft.com/ja-jp/asp.net/hh182563

– PDF/XPS

• ASP.NET Web Pages Reference(英語)– http://msdn.microsoft.com/en-

us/library/gg549171%28v=vs.99%29.aspx

60

Page 61: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

ASP.NET/IIS全般

• ASP.NET デベロッパー センター– http://msdn.microsoft.com/ja-jp/asp.net

• [blog記事]なぜ、 IIS は PHP アプリケーションの実行に不向きとされてきたのか?– http://blogs.msdn.com/b/osamum/archive/

2011/04/05/iis-php.aspx

– 日本マイクロソフトのエバンジェリスト、物江さんのblog

– IISのCGIの実行にかかわる挙動の説明が書かれています。

61

Page 62: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

その他

• ASP.NET WebページでOracle DBを使ってみる

• http://d.hatena.ne.jp/kiyokura/20110704/p1

62

Page 63: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community

スペシャルサンクス

• @shibayanMicrosoft MVP for ASP.NET/IIS(April 2011 - Mar 2012)

• @onosMicrosoft MVP for ASP.NET(April 2007 - March 2012)

63

Page 64: 新しい「ASP.NET Web Pages」を触ってみた - Classic ASP to Razor !? -

Okayama IT Engineers Community64

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

Question?(会場で or 懇親会で or @kiyokuraへ)