• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
20050903
 

20050903

on

  • 502 views

 

Statistics

Views

Total Views
502
Views on SlideShare
502
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    20050903 20050903 Presentation Transcript

    • .NET Framework 概要 株式会社 エフワン 小野 修司MVP for Visual Developer – Visual C#
    • .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 を構成する要素  クラスライブラリ  実行環境  開発環境
    • クラスライブラリ概要 .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 という技術を置き換えるものなので特別にこの ように呼ばれる ただし、カバーする範囲は同じだが、利用する技術は異なるため注意が必要。
    • クラス オブジェクト指向プログラミングに限定すれば構造化プ ログラミングの延長線上にでてきた考え方  オブジェクト指向分析/設計では実世界に存在する物のモデル 関連のあるデータとそのデータに対する操作をまとめて 扱うことで、クラス間の関係を疎に保ったままプログラ ムを記述できる  カプセル化、隠蔽  振る舞いの変更やクラスの置き換えがしやすくなる 継承することで親の性質をそのまま子が利用できる  差分プログラミング  Windows アプリや Web アプリは継承元となるクラスが用意さ れているので、そのクラスを継承することからプログラミング が始まる。
    • .NET Framework クラスの構成要素 フィールド  クラスが内部に持つデータ  クラス内のすべてのメソッドから呼び出すことが可能 プロパティ  別のクラスからフィールドを操作する ( 値を設定する、値を取 り出す)ための口  フィールドを直接別のクラスから操作するようにもできるが、 通常は間にプロパティを入れて隠蔽する メソッド  クラスの振る舞い  主にフィールドの値を変更するとか複数のフィールドに対する 演算結果をかえすといった形になる メンバ  フィールド、プロパティ、メソッドをすべて含んでメンバと呼 ぶ
    • 実行環境の構築 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 のバージョンも確認  基本的には最新バージョンを利用する
    • 開発環境の構築-1 最低限必要なのはコンパイラ  すべてソースコードで記述可能  コンパイラは再頒布モジュールに含まれる • 実行時にコンパイラが呼ばれて動作することがある • 実行環境ができたら、実は開発もできる .NET Framework SDK  ドキュメント • MSDN オンラインでネット上で提供されているものと同じ  ツール • コンパイラベースで開発している際に使えるツール • VisualStudio .NET がある場合はその中に同等の機能が含まれる  チュートリアル • 実行できる実装例が解説されている • IIS 、データベース( MSDE )のインストールが必要
    • 開発環境の構築ー2 VisualStudio .NET 2003  .NET Framework Ver 1.1 に対応  開発生産性が高い • ドラッグ&ドロップによるユーザインタフェースの作成 • インテリセンスによる入力補完 • 統合されたデバッグ環境 • データベースとの連携(ただしバージョンによる) その他の統合開発環境  Delphi 2005 ( Borland ) • C# での開発が可能  SharpDevelop • Windows アプリが開発可能なフリーのツール  WebMatrix • Web アプリが開発可能なマイクロソフト製のフリーのツール
    • 開発言語 .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 その他
    • .NET Framework で何ができるのか Windows アプリケーション Web アプリケーション Web サービス その他  DB 連携  Console アプリケーション  モバイルアプリケーション  Windows サービス  ネットワークアプリケーション  管理ツール
    • .NET アプリケーションの特徴 .NET アプリケーション  .NET Framework 上で動作するアプリケーション .NET Framework で用意されているクラスを利用する  プログラムの記述量が少なくて済む  利用しているクラスは実行時に動的に呼び出される このため、コンパイルされた実行ファイルは小さい  従来の COM コンポーネント、 Win32API を利用することも可能だが、 そのためには一定の手続きが必要 開発時にメモリの確保、削除を意識する必要はない  ガベージコレクトによって、自動的にメモリの削除が行われる  ガベージコレクトの実行タイミングは .NET Framework が管理する デバイスドライバといったハードウェア寄りのアプリケーション は .NET Framework では作成しづらい  このためのクラスが用意されていない  ガベージコレクトは自動的に実行されるため、メモリの管理を細かく 行うのは難しい  ネイティブ C++ を利用することになる
    • Windows アプリケーションの特 徴 ウィンドウをベースにしたアプリケーション ドラッグ & ドロップによりコントロールを貼り付ける形 でユーザインタフェースを構築可能 コントロールのイベントに対応する処理を記述すること でアプリケーションを作成できる  オブジェクト指向による設計を行い、クラス分割をきちんと 行ってアプリケーションを構築していくことも可能 基本のウィンドウから詳細や補足のウィンドウを表示す るといった形式のアプリケーションが作りやすい  Office の各アプリケーションのイメージ  ウィンドウが次々と遷移するようなアプリケーションを作成す るには工夫が必要 • ログイン画面→概要表示画面→詳細表示画面といった画面遷移の場 合
    • Web アプリケーションの特徴 ブラウザからのリクエストをサーバが受け取って HTML をブラウザ に返す  ブラウザからのリクエストがなければ画面上の表示は変更されない  HTTP がこのやりとりのベースとなっているため、 HTTP に関する基本 的な知識が必要 ブラウザはサーバから返された HTML を解釈して表示する  サーバ側の処理は HTML (テキスト)を組み立てるだけ  ブラウザが受け取った HTML はソースの表示により確認できる  HTML に関する基本的な知識が必要である VisualStudio.NET の特徴として、ドラッグ&ドロップによってユー ザインタフェースを構築可能 ASP.NET の特徴として、イベントドリブンによるプログラミング が可能  イベントの処理を実行するために PostBack (自分自身に POST する) が基本となっている  従来の Web アプリケーション( ASP 、 Java 、 PHP )の組み方とは 異なる考え方をする必要がある
    • Web サービスの特徴 インターネット上で簡単にデータをやりとりすることが 可能  Google 、 Amazon 等でサービスが提供されている 一般的には  HTTP ベース • 80 番の Port を利用するため、 Firewall を通過できる • クライアント側からサーバにリクエストを送り、結果を受け取る  SOAP という形式に沿った XML (テキスト)ファイルをやりと りする • SOAP は W3C によって標準化されている • データの形式に注意すれば Java と .NET のアプリケーションの連 携も可能 • データをテキストにする(シリアライズ)ことにより、データ量が 増える クライアント側は Windows アプリケーションでも Web アプリケーションでも可能
    • その他の .NET アプリケーショ ン DB 連携  DataSet にデータを読み込み、 DB との接続を切った状態で利用するのが基本的 な動作となる  他のアプリケーションの中に組み込まれる Console アプリケーション  コマンドプロンプトから動作させるアプリケーション モバイルアプリケーション  PocketPC 対応の Windows アプリケーション  PocketPC 、携帯電話に対応する Web アプリケーション Windows サービス  Windows 上で常に動作するアプリケーション ネットワークアプリケーション  TCP/IP を利用したアプリケーション等 管理ツール  ActiveDirectory を管理するアプリケーション • ユーザの追加/変更  WMI を利用するアプリケーション • マシンのパフォーマンス監視 • マシンのシャットダウン/再起動 等
    • .NET アプリケーションの動作 Console アプリのソース Console アプリケーションのソース例( C# )  class ConsoleSample { public static void Main() { System.Console.WriteLine("Hello World!"); } } ソースコードをコンパイルして exe ファイルを作成する  コンパイル時に実行ファイル( exe )を作成するか、ライブラリファイル ( dll )を作成するか指定できる  コンパイルによってできた exe ファイルや dll ファイルをアセンブリと呼ぶ アセンブリは MSIL という中間言語で書かれている  どの言語のソースも、 MSIL にコンパイルされる  アセンブリにはメタデータとして以下の記述も含まれる • アセンブリに含まれるクラス、メンバ • 参照する他のアセンブリの名前(クラスライブラリも含む)  メタデータの記述をもとに、参照している dll が呼び出される • レジストリは利用しない
    • .NET アプリケーションの動作 Console アプリの実行 アセンブリがメモリ上にロードされる  このとき、セキュリティの確認が行われる アセンブリのエントリポイント( Main メソッド)が Framework によって呼び出される メソッドが最初に呼ばれたときに JIT コンパイラに よってネイティブコードに変換される  ネイティブコードへの変換はメソッド単位で行われる コード変換時に型のチェック、メモリの利用状況が チェックされる コード変換されたメソッドはキャッシュされ、同じメ ソッドが呼ばれる場合はコード変換は行われない Main メソッドが終了するとアプリケーションが終了す る
    • .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(); } }
    • .NET アプリケーションの動作 Windows アプリのプログラム ソースコードだけからウィンドウやボタンが作成される  BCL で提供されているクラスを利用する • Form クラス( System.Windows.Forms.Form ) • Button クラス( System.Windows.Forms.Button ) Form クラスを継承するだけでウィンドウは作成できる  移動、大きさの変更、閉じる、といったウィンドウの基本的な 動作は Form クラスに実装されている  プログラムは基本クラスの変更点を記述するだけ (差分プログラミング) • ウィンドウタイトルの変更 • コントロール(ここではボタン)の作成と設定、動作(イベント) の記述 • ウィンドウへのコントロールの追加
    • .NET アプリケーションの動作 Windows アプリの実行 Console アプリケーションと同じ手順で実行が開始される Application.Run によって Windows のメッセージループと結びつけ られ、 Windows からメッセージ(キークリック、マウスクリック 等のイベント)が送られるのを待つようになる  class WinSample : Form { ・・・    public static void Main()    {      Application.Run(new WinSample());    } } Windows が受け取ったイベントは Framework を通じて実行中のア プリケーションに送られ、そのイベントに設定したメソッドが呼び 出される Application.Run に渡した Form が閉じられると、アプリケーショ ン終了
    • .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>
    • .NET アプリケーションの動作 Web アプリのプログラム ファイル名は~ .aspx とする サーバ上で処理されるコードを記述する  ユーザインタフェースの定義部分と処理を行うコードをファイ ルを分けて記述することも可能(コードビハインド) runat=“server” の記述のあるタグはサーバ上で処理され る  <asp:Label /> = System.Web.UI.WebControls.Label クラス フレームワークから呼び出される名前の決まったイベン トがある  Page_Load 等 Web アプリケーションのイベント処理については詳細 編で
    • .NET アプリケーションの動作 Web アプリの実行 ブラウザからリクエストがあると、サーバ上で ASP.NET のサービスが起 動される  一定期間リクエストがこなくなると ASP.NET のサービスは終了する  終了するまでは待ち受け状態となる リクエストされた aspx ファイルを解析して自動的にソースファイルを作成 する ソースファイルをコンパイルしてアセンブリを作成する アセンブリがメモリ上にロードされる Framework によって、決められた順番でイベントが呼び出される  Init • Page_Init 内に記述した処理の実行  Load • Page_Load 内に記述した処理の実行 …  Render • Page の内容を HTML として生成 メソッド毎に JIT コンパイラによってネイティブコードに変換される Render の結果、生成された HTML がブラウザに返される HTML を返すと、メモリ上のアセンブリは破棄される  正確には GC により回収される対象となる  次にブラウザから呼び出されたときに前回の情報を参照できない
    • .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!"; } }
    • .NET アプリケーションの動作 Web サービスのプログラム ファイル名は~ .asmx とする 公開するクラス名を 1 行目( WebService ディ レクティブ)に記述する 公開するクラスに WebService 属性を追加する  この属性は Framework にすでに定義されている 公開するメソッドに WebMethod 属性を追加す る 公開するメソッドは引数を取ることができる 公開するメソッドはクラスの中に複数あっても よい
    • .NET アプリケーションの動作 Web サービスの実行 Web サービスのテストページが .NET Framework により自動的に 作成される  ブラウザでテストページを表示できる  テストページはサーバマシンからしかアクセスできない  テストを実行すると、 XML 形式のデータが返される Web サービスを利用するためのプログラム(プロキシ)を自動的 に生成することができる  SDK : wsdl.exe ツールを利用する  VisualStudio.NET : Web 参照を追加する Web サービスは ASP.NET の仕組みをベースに実装されている  クライアントからのリクエストがあったときにサービスが起動  クライアントからはメソッドを呼び出す  リクエストされたメソッドを実行し、結果を返すとクラスは破棄の対 象となる
    • .NET アプリケーションの配置 Windows アプリケーション レジストリを利用しないため、コピーするだけで配置が完了  インストール作業を必要としない Ver1.1 ではノータッチデプロイメントが利用可能  Web サーバ上においた Windows アプリケーションを実行できる  デフォルトではセキュリティに厳しい制限がかかる  セキュリティの制限を緩めるには各マシンに設定が必要 Ver2.0 では ClickOnce が利用可能  Web サーバから Windows アプリケーションをインストール可能  アプリケーションのバージョンアップを自動的に感知できる  1 つ前のバージョンへのロールバックが可能  デフォルトではセキュリティは制限される ただし、一定の要件を満たすことにより、インストール時に制限を緩和すること が可能 マシン毎に変更が必要な設定は設定ファイルを利用する  VisualStudio.NET では app.config (実際にはアプリケーション名 .exe.config )  Ver1.1 ではアプリケーションから設定ファイルを変更する仕組みは提供されて いない  Ver2.0 では一部の設定はアプリケーションから変更可
    • .NET アプリケーションの配置 Web アプリケーション レジストリを利用しないため、コピーするだけで配置が 完了  インストール作業を必要としない  Aspx ファイルと bin フォルダ内の dll をコピーする  IIS の管理ツールで Web アプリケーションを構築する作業が必 要 Ver2.0 では事前コンパイルを行って配置できる  最初のリクエスト時に aspx ファイルがコンパイルされる時間が 必要なくなるため、起動が早くなる  Aspx ファイルの中の記述を隠すことができる マシン毎に変更が必要な設定は設定ファイルを利用する  Web.config ファイル  Ver2.0 では IIS の管理ツールから Web.config にアクセスするこ とができる
    • .NET アプリケーションのセキュリ ティ Windows アプリケーション .NET アプリケーションでは、アセンブリが存在する場所によって セキュリティの制限が変わる  CAS ( Code Access Security )と呼ばれる  ノータッチデプロイメントの存在が大きい  Internet 、イントラネット、ローカルコンピュータで制限が異なる  社内のサーバ上にアセンブリを置いてクライアントから実行する場合 でも、イントラネットのセキュリティが適用される セキュリティは 3 つのレベルで管理可能  企業単位、コンピュータ単位、ユーザ単位  上位のレベルで制限されたセキュリティを下位のレベルで緩めること はできない  管理者による管理が容易になっている 管理ツールの .NET Framework 構成ツールでセキュリティを変更で きる  変更したセキュリティをインストールする msi ファイルを作成できる  Msi ファイルを配布-実行してもらうことでセキュリティの変更を簡単 に適用できる
    • .NET アプリケーションのセキュリ ティ Web アプリケーション Web アプリケーションでは実行時ユーザに注意する  IIS5.0 ではサーバマシンの ASPNET ユーザ  IIS6.0 では NT AUTHORITYNETWORK SERVICE  偽装によって特定のユーザやアクセスしてきたユーザを実行時 ユーザとすることが可能 • IIS の設定、 ASP.NET の設定が必要  ファイル/フォルダへのアクセス、データベースへのアクセス にはこの実行時ユーザに権限を与えなければならない • SQL Server で Windows 認証を採用している際に注意が必要 • SQL Server で混合モード認証を採用している場合や、他のデータ ベースとの接続時は接続文字列にユーザ名、パスワードを記述すれ ばよい この場合、セキュリティが甘くなっていることに注意する必要があ る
    • .NET Framework のバージョン管理 .NET Framework は複数のバージョンを同じマシン上で動作させる ことができる  Ver1.0 、 Ver1.1 、 Ver2.0 の混在が可能 (サイドバイサイド)  アセンブリにどのバージョンでコンパイルされたかが記録されるため 、実行時には適切な Framework のバージョンが選択され、その上で実 行される  ASP.NET については、 Web アプリケーション毎にどのバージョンで 実行するかを設定する必要がある • Aspnet_regiis.exe を使って設定する • Ver2.0 では IIS の管理ツールから設定の変更が可能 .NET アプリケーションが dll を利用する場合、アプリケーションと 同じフォルダか、その下位のフォルダに格納する  アプリケーションのバージョン毎に dll を用意することでサイドバイサ イドを可能にする  このために必要となるハードディスクの容量はたかが知れている