Weitere ähnliche Inhalte
Ähnlich wie 20050903 (20)
20050903
- 2. .NET Framework とは
Windows 上でのアプリケーションの開発/実行環境
今後の Windows 系の開発の主流
Windows アプリケーション、 Web アプリケーション、 Web サ
ービス等を作成可能
Ver1.0 ( 2002 年)、 Ver1.1 ( 2003 年)、 Ver2.0 ( 2005 年
11 月)
開発言語は複数存在
C# 、 VB.NET ( VB )、 JScript.net 、マネージ C++ ( C+
+/CLI )、 J#
.NET Framework を構成する要素
クラスライブラリ
実行環境
開発環境
- 3. クラスライブラリ概要
.NET アプリケーションの開発
.NET アプリケーション= .NET Framework 上で動作するアプリケーション
クラスライブラリに用意されたクラスを利用して、またはクラスを継承してプロ
グラムを記述する
用意されているクラスは膨大
• Framework Class Library ( FCL )や Base Class Library ( BCL )と呼ばれることも
ある
• 必要なものはたいてい用意されているので、まず使えるクラスを探す
管理の都合上、名前空間( NameSpace )によって階層的に管理されている
• System
-共通して使われる型の定義
• System.Windows.Forms
• System.Windows.Forms.Design 等
- Windows アプリケーションで使われる型の定義
• System.Web
• System.Web.UI
• System.Web.UI.WebControls 等
- Web アプリケーションで使われる型の定義( ASP.NET)
• System.Data
• System.Data.SqlClient 等
ーデータベースを利用するために使われる型の定義( ADO.NET )
ASP.NET 、 ADO.NET は従来の ASP 、 ADO という技術を置き換えるものなので特別にこの
ように呼ばれる
ただし、カバーする範囲は同じだが、利用する技術は異なるため注意が必要。
- 4. クラス
オブジェクト指向プログラミングに限定すれば構造化プ
ログラミングの延長線上にでてきた考え方
オブジェクト指向分析/設計では実世界に存在する物のモデル
関連のあるデータとそのデータに対する操作をまとめて
扱うことで、クラス間の関係を疎に保ったままプログラ
ムを記述できる
カプセル化、隠蔽
振る舞いの変更やクラスの置き換えがしやすくなる
継承することで親の性質をそのまま子が利用できる
差分プログラミング
Windows アプリや Web アプリは継承元となるクラスが用意さ
れているので、そのクラスを継承することからプログラミング
が始まる。
- 5. .NET Framework クラスの構成要素
フィールド
クラスが内部に持つデータ
クラス内のすべてのメソッドから呼び出すことが可能
プロパティ
別のクラスからフィールドを操作する ( 値を設定する、値を取
り出す)ための口
フィールドを直接別のクラスから操作するようにもできるが、
通常は間にプロパティを入れて隠蔽する
メソッド
クラスの振る舞い
主にフィールドの値を変更するとか複数のフィールドに対する
演算結果をかえすといった形になる
メンバ
フィールド、プロパティ、メソッドをすべて含んでメンバと呼
ぶ
- 6. 実行環境の構築
Ver1.1 の実行環境を構築するには
以下が必要
• .NET Framework 再頒布モジュール
• 日本語化 Language Pack
• Service Pack 1
OS 毎の対応状況
Windows XP
• Windows Update 、 Microsoft Update からインストール可能
Windws 2003 Server
• Ver1.1 は当初よりインストール済み
• ただし SP1 の適用が必要( OS の SP1 に含まれる)
Web アプリ、 Web サービスを稼動させるには最初に IIS のインス
トールが必要
IIS インストール→ .NET Framework インストール
aspnet_regiis.exe ツールで修復
データベースとの接続時には MDAC のバージョンも確認
基本的には最新バージョンを利用する
- 7. 開発環境の構築-1
最低限必要なのはコンパイラ
すべてソースコードで記述可能
コンパイラは再頒布モジュールに含まれる
• 実行時にコンパイラが呼ばれて動作することがある
• 実行環境ができたら、実は開発もできる
.NET Framework SDK
ドキュメント
• MSDN オンラインでネット上で提供されているものと同じ
ツール
• コンパイラベースで開発している際に使えるツール
• VisualStudio .NET がある場合はその中に同等の機能が含まれる
チュートリアル
• 実行できる実装例が解説されている
• IIS 、データベース( MSDE )のインストールが必要
- 8. 開発環境の構築ー2
VisualStudio .NET 2003
.NET Framework Ver 1.1 に対応
開発生産性が高い
• ドラッグ&ドロップによるユーザインタフェースの作成
• インテリセンスによる入力補完
• 統合されたデバッグ環境
• データベースとの連携(ただしバージョンによる)
その他の統合開発環境
Delphi 2005 ( Borland )
• C# での開発が可能
SharpDevelop
• Windows アプリが開発可能なフリーのツール
WebMatrix
• Web アプリが開発可能なマイクロソフト製のフリーのツール
- 9. 開発言語
.NET アプリケーションは様々な言語で開発可能
すべて同じクラスライブラリを利用するので、言語による優劣はほとんどない
• 実際にはコンパイラの出来不出来によって多少優劣がでる
マイクロソフトが提供している言語
C#
• クラスライブラリは C# で記述されている
VB.NET ( Ver2.0 で VB )
• Ver2.0 で VB6 ユーザが転向しやすくなる
JScript.NET
• ほとんど情報がでていない
マネージ C++ ( Ver2.0 で C++/CLI )
• Ver2.0 で .NET 対応アプリが作りやすくなる
J#
• Java の文法でクラスライブラリを利用できる
• Java が持つクラスを利用できるわけではない点に注意
その他の .NET 対応言語
COBOL.NET
Python その他
- 10. .NET Framework で何ができるのか
Windows アプリケーション
Web アプリケーション
Web サービス
その他
DB 連携
Console アプリケーション
モバイルアプリケーション
Windows サービス
ネットワークアプリケーション
管理ツール
- 11. .NET アプリケーションの特徴
.NET アプリケーション
.NET Framework 上で動作するアプリケーション
.NET Framework で用意されているクラスを利用する
プログラムの記述量が少なくて済む
利用しているクラスは実行時に動的に呼び出される
このため、コンパイルされた実行ファイルは小さい
従来の COM コンポーネント、 Win32API を利用することも可能だが、
そのためには一定の手続きが必要
開発時にメモリの確保、削除を意識する必要はない
ガベージコレクトによって、自動的にメモリの削除が行われる
ガベージコレクトの実行タイミングは .NET Framework が管理する
デバイスドライバといったハードウェア寄りのアプリケーション
は .NET Framework では作成しづらい
このためのクラスが用意されていない
ガベージコレクトは自動的に実行されるため、メモリの管理を細かく
行うのは難しい
ネイティブ C++ を利用することになる
- 12. Windows アプリケーションの特
徴
ウィンドウをベースにしたアプリケーション
ドラッグ & ドロップによりコントロールを貼り付ける形
でユーザインタフェースを構築可能
コントロールのイベントに対応する処理を記述すること
でアプリケーションを作成できる
オブジェクト指向による設計を行い、クラス分割をきちんと
行ってアプリケーションを構築していくことも可能
基本のウィンドウから詳細や補足のウィンドウを表示す
るといった形式のアプリケーションが作りやすい
Office の各アプリケーションのイメージ
ウィンドウが次々と遷移するようなアプリケーションを作成す
るには工夫が必要
• ログイン画面→概要表示画面→詳細表示画面といった画面遷移の場
合
- 13. Web アプリケーションの特徴
ブラウザからのリクエストをサーバが受け取って HTML をブラウザ
に返す
ブラウザからのリクエストがなければ画面上の表示は変更されない
HTTP がこのやりとりのベースとなっているため、 HTTP に関する基本
的な知識が必要
ブラウザはサーバから返された HTML を解釈して表示する
サーバ側の処理は HTML (テキスト)を組み立てるだけ
ブラウザが受け取った HTML はソースの表示により確認できる
HTML に関する基本的な知識が必要である
VisualStudio.NET の特徴として、ドラッグ&ドロップによってユー
ザインタフェースを構築可能
ASP.NET の特徴として、イベントドリブンによるプログラミング
が可能
イベントの処理を実行するために PostBack (自分自身に POST する)
が基本となっている
従来の Web アプリケーション( ASP 、 Java 、 PHP )の組み方とは
異なる考え方をする必要がある
- 14. Web サービスの特徴
インターネット上で簡単にデータをやりとりすることが
可能
Google 、 Amazon 等でサービスが提供されている
一般的には
HTTP ベース
• 80 番の Port を利用するため、 Firewall を通過できる
• クライアント側からサーバにリクエストを送り、結果を受け取る
SOAP という形式に沿った XML (テキスト)ファイルをやりと
りする
• SOAP は W3C によって標準化されている
• データの形式に注意すれば Java と .NET のアプリケーションの連
携も可能
• データをテキストにする(シリアライズ)ことにより、データ量が
増える
クライアント側は Windows アプリケーションでも Web
アプリケーションでも可能
- 15. その他の .NET アプリケーショ
ン
DB 連携
DataSet にデータを読み込み、 DB との接続を切った状態で利用するのが基本的
な動作となる
他のアプリケーションの中に組み込まれる
Console アプリケーション
コマンドプロンプトから動作させるアプリケーション
モバイルアプリケーション
PocketPC 対応の Windows アプリケーション
PocketPC 、携帯電話に対応する Web アプリケーション
Windows サービス
Windows 上で常に動作するアプリケーション
ネットワークアプリケーション
TCP/IP を利用したアプリケーション等
管理ツール
ActiveDirectory を管理するアプリケーション
• ユーザの追加/変更
WMI を利用するアプリケーション
• マシンのパフォーマンス監視
• マシンのシャットダウン/再起動 等
- 16. .NET アプリケーションの動作
Console アプリのソース
Console アプリケーションのソース例( C# )
class ConsoleSample
{
public static void Main()
{
System.Console.WriteLine("Hello World!");
}
}
ソースコードをコンパイルして exe ファイルを作成する
コンパイル時に実行ファイル( exe )を作成するか、ライブラリファイル
( dll )を作成するか指定できる
コンパイルによってできた exe ファイルや dll ファイルをアセンブリと呼ぶ
アセンブリは MSIL という中間言語で書かれている
どの言語のソースも、 MSIL にコンパイルされる
アセンブリにはメタデータとして以下の記述も含まれる
• アセンブリに含まれるクラス、メンバ
• 参照する他のアセンブリの名前(クラスライブラリも含む)
メタデータの記述をもとに、参照している dll が呼び出される
• レジストリは利用しない
- 17. .NET アプリケーションの動作
Console アプリの実行
アセンブリがメモリ上にロードされる
このとき、セキュリティの確認が行われる
アセンブリのエントリポイント( Main メソッド)が
Framework によって呼び出される
メソッドが最初に呼ばれたときに JIT コンパイラに
よってネイティブコードに変換される
ネイティブコードへの変換はメソッド単位で行われる
コード変換時に型のチェック、メモリの利用状況が
チェックされる
コード変換されたメソッドはキャッシュされ、同じメ
ソッドが呼ばれる場合はコード変換は行われない
Main メソッドが終了するとアプリケーションが終了す
る
- 18. .NET アプリケーションの動作
Windows アプリのソース
Windows アプリケーションのソース例( C# )
using System;
using System.Windows.Forms; // 利用するクラスがある名前空間をあらかじめ登録
class WinSample : Form
{
private Button mybutton;
public static void Main() // エントリーポイント
{
Application.Run(new WinSample());
}
public WinSample()
{
this.Text = “Hello World!”; // ウィンドウのタイトルを設定
this.mybutton = new Button(); // ボタンの作成、設定、イベントの記述
this.mybutton.Location = new System.Drawing.Point(200, 200);
this.mybutton.Text = “ 閉じる ” ;
閉じる”
this.mybutton.Click += new EventHandler(this.mb_Click);
this.Controls.Add(mybutton); // ボタンをウィンドウに追加
}
private void mb_Click(object sender, EventArgs e) // ボタンクリック時のイベント
{
this.Close();
}
}
- 19. .NET アプリケーションの動作
Windows アプリのプログラム
ソースコードだけからウィンドウやボタンが作成される
BCL で提供されているクラスを利用する
• Form クラス( System.Windows.Forms.Form )
• Button クラス( System.Windows.Forms.Button )
Form クラスを継承するだけでウィンドウは作成できる
移動、大きさの変更、閉じる、といったウィンドウの基本的な
動作は Form クラスに実装されている
プログラムは基本クラスの変更点を記述するだけ
(差分プログラミング)
• ウィンドウタイトルの変更
• コントロール(ここではボタン)の作成と設定、動作(イベント)
の記述
• ウィンドウへのコントロールの追加
- 20. .NET アプリケーションの動作
Windows アプリの実行
Console アプリケーションと同じ手順で実行が開始される
Application.Run によって Windows のメッセージループと結びつけ
られ、 Windows からメッセージ(キークリック、マウスクリック
等のイベント)が送られるのを待つようになる
class WinSample : Form
{
・・・
public static void Main()
{
Application.Run(new WinSample());
}
}
Windows が受け取ったイベントは Framework を通じて実行中のア
プリケーションに送られ、そのイベントに設定したメソッドが呼び
出される
Application.Run に渡した Form が閉じられると、アプリケーショ
ン終了
- 21. .NET アプリケーションの動作
Web アプリのソース
Web アプリケーションのソース例( C# )
<%@ Page language="c#" %>
<script runat="server">
public void Page_Load(Object sender, EventArgs e)
{
Label1.Text = "Hello World!";
}
</script>
<html>
<body>
<asp:Label id="Label1" runat="server" />
</body>
</html>
ソースから生成される html
ブラウザのソース表示で確認
<html>
<body>
<span id="Label1">Hello World!</span>
</body>
</html>
- 22. .NET アプリケーションの動作
Web アプリのプログラム
ファイル名は~ .aspx とする
サーバ上で処理されるコードを記述する
ユーザインタフェースの定義部分と処理を行うコードをファイ
ルを分けて記述することも可能(コードビハインド)
runat=“server” の記述のあるタグはサーバ上で処理され
る
<asp:Label /> = System.Web.UI.WebControls.Label クラス
フレームワークから呼び出される名前の決まったイベン
トがある
Page_Load 等
Web アプリケーションのイベント処理については詳細
編で
- 23. .NET アプリケーションの動作
Web アプリの実行
ブラウザからリクエストがあると、サーバ上で ASP.NET のサービスが起
動される
一定期間リクエストがこなくなると ASP.NET のサービスは終了する
終了するまでは待ち受け状態となる
リクエストされた aspx ファイルを解析して自動的にソースファイルを作成
する
ソースファイルをコンパイルしてアセンブリを作成する
アセンブリがメモリ上にロードされる
Framework によって、決められた順番でイベントが呼び出される
Init
• Page_Init 内に記述した処理の実行
Load
• Page_Load 内に記述した処理の実行
…
Render
• Page の内容を HTML として生成
メソッド毎に JIT コンパイラによってネイティブコードに変換される
Render の結果、生成された HTML がブラウザに返される
HTML を返すと、メモリ上のアセンブリは破棄される
正確には GC により回収される対象となる
次にブラウザから呼び出されたときに前回の情報を参照できない
- 24. .NET アプリケーションの動作
Web サービスのソース
Web サービスのソース例( C# )
<%@ WebService Language=“C#” class=“HelloWorld” %>
using System.Web.Services;
[WebService(Namespace=“http://www.dotnetfan.com/”)]
public class HelloWorld
{
[WebMethod]
public string GetMsg()
{
return "Hello World!";
}
}
- 25. .NET アプリケーションの動作
Web サービスのプログラム
ファイル名は~ .asmx とする
公開するクラス名を 1 行目( WebService ディ
レクティブ)に記述する
公開するクラスに WebService 属性を追加する
この属性は Framework にすでに定義されている
公開するメソッドに WebMethod 属性を追加す
る
公開するメソッドは引数を取ることができる
公開するメソッドはクラスの中に複数あっても
よい
- 26. .NET アプリケーションの動作
Web サービスの実行
Web サービスのテストページが .NET Framework により自動的に
作成される
ブラウザでテストページを表示できる
テストページはサーバマシンからしかアクセスできない
テストを実行すると、 XML 形式のデータが返される
Web サービスを利用するためのプログラム(プロキシ)を自動的
に生成することができる
SDK : wsdl.exe ツールを利用する
VisualStudio.NET : Web 参照を追加する
Web サービスは ASP.NET の仕組みをベースに実装されている
クライアントからのリクエストがあったときにサービスが起動
クライアントからはメソッドを呼び出す
リクエストされたメソッドを実行し、結果を返すとクラスは破棄の対
象となる
- 27. .NET アプリケーションの配置
Windows アプリケーション
レジストリを利用しないため、コピーするだけで配置が完了
インストール作業を必要としない
Ver1.1 ではノータッチデプロイメントが利用可能
Web サーバ上においた Windows アプリケーションを実行できる
デフォルトではセキュリティに厳しい制限がかかる
セキュリティの制限を緩めるには各マシンに設定が必要
Ver2.0 では ClickOnce が利用可能
Web サーバから Windows アプリケーションをインストール可能
アプリケーションのバージョンアップを自動的に感知できる
1 つ前のバージョンへのロールバックが可能
デフォルトではセキュリティは制限される
ただし、一定の要件を満たすことにより、インストール時に制限を緩和すること
が可能
マシン毎に変更が必要な設定は設定ファイルを利用する
VisualStudio.NET では app.config (実際にはアプリケーション名 .exe.config )
Ver1.1 ではアプリケーションから設定ファイルを変更する仕組みは提供されて
いない
Ver2.0 では一部の設定はアプリケーションから変更可
- 28. .NET アプリケーションの配置
Web アプリケーション
レジストリを利用しないため、コピーするだけで配置が
完了
インストール作業を必要としない
Aspx ファイルと bin フォルダ内の dll をコピーする
IIS の管理ツールで Web アプリケーションを構築する作業が必
要
Ver2.0 では事前コンパイルを行って配置できる
最初のリクエスト時に aspx ファイルがコンパイルされる時間が
必要なくなるため、起動が早くなる
Aspx ファイルの中の記述を隠すことができる
マシン毎に変更が必要な設定は設定ファイルを利用する
Web.config ファイル
Ver2.0 では IIS の管理ツールから Web.config にアクセスするこ
とができる
- 29. .NET アプリケーションのセキュリ
ティ
Windows アプリケーション
.NET アプリケーションでは、アセンブリが存在する場所によって
セキュリティの制限が変わる
CAS ( Code Access Security )と呼ばれる
ノータッチデプロイメントの存在が大きい
Internet 、イントラネット、ローカルコンピュータで制限が異なる
社内のサーバ上にアセンブリを置いてクライアントから実行する場合
でも、イントラネットのセキュリティが適用される
セキュリティは 3 つのレベルで管理可能
企業単位、コンピュータ単位、ユーザ単位
上位のレベルで制限されたセキュリティを下位のレベルで緩めること
はできない
管理者による管理が容易になっている
管理ツールの .NET Framework 構成ツールでセキュリティを変更で
きる
変更したセキュリティをインストールする msi ファイルを作成できる
Msi ファイルを配布-実行してもらうことでセキュリティの変更を簡単
に適用できる
- 30. .NET アプリケーションのセキュリ
ティ
Web アプリケーション
Web アプリケーションでは実行時ユーザに注意する
IIS5.0 ではサーバマシンの ASPNET ユーザ
IIS6.0 では NT AUTHORITYNETWORK SERVICE
偽装によって特定のユーザやアクセスしてきたユーザを実行時
ユーザとすることが可能
• IIS の設定、 ASP.NET の設定が必要
ファイル/フォルダへのアクセス、データベースへのアクセス
にはこの実行時ユーザに権限を与えなければならない
• SQL Server で Windows 認証を採用している際に注意が必要
• SQL Server で混合モード認証を採用している場合や、他のデータ
ベースとの接続時は接続文字列にユーザ名、パスワードを記述すれ
ばよい
この場合、セキュリティが甘くなっていることに注意する必要があ
る
- 31. .NET Framework のバージョン管理
.NET Framework は複数のバージョンを同じマシン上で動作させる
ことができる
Ver1.0 、 Ver1.1 、 Ver2.0 の混在が可能
(サイドバイサイド)
アセンブリにどのバージョンでコンパイルされたかが記録されるため
、実行時には適切な Framework のバージョンが選択され、その上で実
行される
ASP.NET については、 Web アプリケーション毎にどのバージョンで
実行するかを設定する必要がある
• Aspnet_regiis.exe を使って設定する
• Ver2.0 では IIS の管理ツールから設定の変更が可能
.NET アプリケーションが dll を利用する場合、アプリケーションと
同じフォルダか、その下位のフォルダに格納する
アプリケーションのバージョン毎に dll を用意することでサイドバイサ
イドを可能にする
このために必要となるハードディスクの容量はたかが知れている