SlideShare une entreprise Scribd logo
1  sur  31
.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 を用意することでサイドバイサ
        イドを可能にする
       このために必要となるハードディスクの容量はたかが知れている

Contenu connexe

Tendances

PowerShell 5.0 で広がる運用管理の世界
PowerShell 5.0 で広がる運用管理の世界PowerShell 5.0 で広がる運用管理の世界
PowerShell 5.0 で広がる運用管理の世界Kazuki Takai
 
Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理Kazuki Takai
 
Vsug day2010 osaka_s1
Vsug day2010 osaka_s1Vsug day2010 osaka_s1
Vsug day2010 osaka_s1mizusawa
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソYoshitaka Seo
 
VSUG Day 2010 Summer Tokyo - keynote
VSUG Day 2010 Summer Tokyo - keynoteVSUG Day 2010 Summer Tokyo - keynote
VSUG Day 2010 Summer Tokyo - keynoteTakeshi Shinmura
 
App014 デスクトップ アプ
App014 デスクトップ アプApp014 デスクトップ アプ
App014 デスクトップ アプTech Summit 2016
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVCjz5 MATSUE
 
Introducing Windows Terminal
Introducing Windows TerminalIntroducing Windows Terminal
Introducing Windows TerminalKazuki Takai
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略信之 岩永
 
App014 デスクトップ アプ
App014 デスクトップ アプApp014 デスクトップ アプ
App014 デスクトップ アプTech Summit 2016
 

Tendances (14)

PowerShell 5.0 で広がる運用管理の世界
PowerShell 5.0 で広がる運用管理の世界PowerShell 5.0 で広がる運用管理の世界
PowerShell 5.0 で広がる運用管理の世界
 
Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理
 
Selenium
SeleniumSelenium
Selenium
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
 
Vsug day2010 osaka_s1
Vsug day2010 osaka_s1Vsug day2010 osaka_s1
Vsug day2010 osaka_s1
 
C#の書き方
C#の書き方C#の書き方
C#の書き方
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 
VSUG Day 2010 Summer Tokyo - keynote
VSUG Day 2010 Summer Tokyo - keynoteVSUG Day 2010 Summer Tokyo - keynote
VSUG Day 2010 Summer Tokyo - keynote
 
App014 デスクトップ アプ
App014 デスクトップ アプApp014 デスクトップ アプ
App014 デスクトップ アプ
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
 
Introducing Windows Terminal
Introducing Windows TerminalIntroducing Windows Terminal
Introducing Windows Terminal
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
 
20010127
2001012720010127
20010127
 
App014 デスクトップ アプ
App014 デスクトップ アプApp014 デスクトップ アプ
App014 デスクトップ アプ
 

Similaire à 20050903

CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8Akira Onishi
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NETAkira Inoue
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Akira Inoue
 
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Akira Hatsune
 
090916 X D E V今だから理解する[
090916 X D E V今だから理解する[090916 X D E V今だから理解する[
090916 X D E V今だから理解する[Masami Suzuki
 
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiajunichi anno
 
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発信之 岩永
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説Daisuke Nishino
 
.NETクロスプラットフォーム
.NETクロスプラットフォーム.NETクロスプラットフォーム
.NETクロスプラットフォームYasushi Kato
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...Akira Inoue
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Akira Inoue
 
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~Akira Inoue
 

Similaire à 20050903 (20)

CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
20021007
2002100720021007
20021007
 
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界
 
C#の書き方
C#の書き方C#の書き方
C#の書き方
 
090916 X D E V今だから理解する[
090916 X D E V今だから理解する[090916 X D E V今だから理解する[
090916 X D E V今だから理解する[
 
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
 
20090328
2009032820090328
20090328
 
20080524
2008052420080524
20080524
 
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発
 
Clrh 20121215
Clrh 20121215Clrh 20121215
Clrh 20121215
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
.NETクロスプラットフォーム
.NETクロスプラットフォーム.NETクロスプラットフォーム
.NETクロスプラットフォーム
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
 
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
 
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
 

Plus de 小野 修司 (20)

20140322
2014032220140322
20140322
 
20121215
2012121520121215
20121215
 
20120616
2012061620120616
20120616
 
20120609
2012060920120609
20120609
 
20120425
2012042520120425
20120425
 
20120128
2012012820120128
20120128
 
20111203
2011120320111203
20111203
 
20110607
2011060720110607
20110607
 
20100313
2010031320100313
20100313
 
20100224
2010022420100224
20100224
 
20100218 lt
20100218 lt20100218 lt
20100218 lt
 
20100218
2010021820100218
20100218
 
20091207
2009120720091207
20091207
 
20090711
2009071120090711
20090711
 
20090606
2009060620090606
20090606
 
20090418
2009041820090418
20090418
 
20090212
2009021220090212
20090212
 
20081003
2008100320081003
20081003
 
20080630
2008063020080630
20080630
 
20080627 2
20080627 220080627 2
20080627 2
 

20050903

  • 1. .NET Framework 概要 株式会社 エフワン 小野 修司 MVP for Visual Developer – Visual C#
  • 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 を用意することでサイドバイサ イドを可能にする  このために必要となるハードディスクの容量はたかが知れている