SlideShare a Scribd company logo
今こそ知りたい!
.NET Framework のメカニズム



14-B-4     新村 剛史
           マイクロソフト株式会社
           デベロッパー&プラットフォーム統括
           本部
           デベロッパービジネス本部
アジェンダ
   はじめに
   .NET Framework の概要
   ソースコードからのコンパイル
   アセンブリ
   アセンブリから実行まで
   配置
   セキュリティ
   まとめ
はじめに
本セッションの目的
   .NET Framework 初めての方
       .NET Framework の実行の仕組みを理解して
        いただく。


   .NET 開発者の方
       CLR に対する理解を深めるきっかけとしてい
        ただくき、トラブルを未然に防ぐための一助
        とする。
.NET Framework の概要
.NET Framework バージョン比較

                                               Add    3.5



                                  Add    3.0   Keep   3.0



 1.0   V-UP   1.1    V-UP   2.0   Keep   2.0   Keep   2.0


 1.0          1.1           2.0          3.0          3.5


                                         包含

                    共存
.NET Framework の構成
          ASP.NET追加
                                         LINQ
        (ASP.NET AJAX)                                     3.5
3.5                                                      コンパイラ

      WCF追加       WF追加         WPF追加            BCL追加


3.0    WCF          WF             WPF       CardSpace


                                                           2.0
                         Windows                         コンパイラ
       ADO.NET                              ASP.NET
                         フォーム
2.0
                 Base Class Library (BCL)

             Common Language Runtime(CLR)                コンパイラ
共通言語ランタイム (CLR) のメリット

   CLR を使用することで受ける恩恵
       異なるプログラミング言語での簡単な連携
           異なる言語で記述された DLL を他の言語から利用できる
           複数言語間のクラス継承、例外処理

       高度なバージョン管理
           参照する側が参照先のバージョンを知っている
           サイド バイ サイド実行

       ランタイムによるセキュリティ向上
           コード アクセス セキュリティ
           ロール ベース セキュリティ
ソースコードからのコンパイル
.NETアプリケーションの動作

                             アセンブリ
ソースコード         コンパイラ         EXE/DLL
                          (中間コード + メタデータ)

                                       セキュリティ

Common Language Runtime
                             クラス ローダ

    クラスライブラリ
       PreJIT               JIT コンパイラ



 実行            セキュリティ
                           ネイティブ コード
                チェック
言語別コンパイラ
   言語別のコンパイラ と ひとつの中間言語
   CLR が解釈可能な中間言語にコンパイル
                              アセンブリ




     Visual C#     C# コンパイラ




                              中間言語
                   VB コンパイラ    MSIL
    Visual Basic
アセンブリ
アセンブリ
   アセンブリとは
       配置とバージョン管理の単位
       プライベートアセンブリと共有アセンブリ


   アセンブリに含まれるもの
       MANIFEST
                自己記述型のアセンブリ情報
                     アセンブリのID、厳密名情報、バージョン情報、カルチャ
                     含まれる型やリソースの情報
                     参照しているアセンブリの情報
                     実行に必要な許可セット情報など
                                                      アセンブリ
       IL
                JIT コンパイラへの入力となる中間言語          メタデータ          MANIFEST
                                                メタデータ
       メタデータ                                    メタデータ
                                                 IL
                型とメソッドに関する情報                       IL        リソース
       リソース                                           IL

                文字列や画像、永続化されたデータなど
アセンブリ名
   簡易名
       テキストベースの単純な名前
       アセンブリ内の (コアの) ファイルの名前と連動
           Prog01.dll のアセンブリ名は、Prog01
   厳密名
       開発者 (発行者) の公開キーを割り付けた名前
           開発者が異なれば、厳密名は異なる
       共有DLL (共有アセンブリ)、バージョン管理などで利用

    簡易名        テキスト

    厳密名        テキスト    +   バージョン   +     カルチャ   +   公開キー


                                                    秘密キー
アセンブリのバージョン管理
   厳密名
       バージョンもアセンブリ区別の対象となる

   DLL HELL からの解放
       複数のバージョンの DLL を管理可能
       前提とするバージョンの DLL を勝手に更新しな
        い

   サイド バイ サイド 実行
       適切なバージョンの DLL を検索し、ロード
アセンブリから実行まで
アセンブリの実行
                            マネージ
                             EXE


                            自身のロード



                              アセンブリ               JIT    実行
                               ローダ              コンパイラ

起動
                                      必要な型の     コンパイル・
                                       ロード      コードの検証
     ヘッダー解析


              MSCorEE.dll                MSCorWks.dll

         ロード・初期化


                            Windows
ランタイムバージョンの選定
   アセンブリのファイル ヘッダで実行する CPU アーキテ
    クチャを選定
   構成ファイルなどの情報で実行する CLR のバージョン
    を選定 (サイド バイ サイド 実行)
                                    CLR 1.0 の
                                   MSCorWks.dll
             32bit の
            MSCorEE.dll
    アセンブリ                           CLR 1.1 の
                          構成ファイル
     のヘッダ                   etc
                                   MSCorWks.dll

             64bit の
            MSCorEE.dll
                                    CLR 2.0 の
                                   MSCorWks.dll
アセンブリ ローダ
   タイプ チェック
       マニフェストの確認
           アセンブリの内容の確認
       署名の確認
           厳密名かつ GAC 以外からロードした場合
           GAC に登録されている場合はGAC 登録時にチェック

   バージョン選定
       同一型名のアセンブリから適切なバージョンを選択 (厳密
        名の場合)

   パーミッションの設定
       エビデンスの取得
       ポリシーの取得とパーミッションの設定
アセンブリの検索
 GAC (Global Assembly Cache)

• 厳密名を持つアセンブリのみ

 codeBase 要素

• アプリケーション構成ファイルに記載される

 Probing

• アセンブリ名を基にした検索                [アセンブリ名] + .dll or .exe
• 以下のディレクトリを対象に検索
  • アプリケーション ベース ディレクトリ
  • プライベート Binpath


                                                  FileNotFound
                                                    Exception
JIT コンパイラ
   JIT (Just In Time) コンパイラ
       実行時に未コンパイルの MSIL を Native コー
        ドにコンパイル
       コンパイル後のNative コードはメモリに格納
       一度コンパイルされた型は再度コンパイルさ
        れない



   NGen.exe による事前コンパイルも可能
配置
アセンブリの配置場所
   任意のディレクトリ
       単一のアプリケーションからしか使用しない場合
       構成ファイルの<codeBase>を使用して検索場所を指定
           厳密名を持つ場合
               コンピュータ、イントラネット、インターネットの任意の場所
           厳密名を持たない場合
               アプリケーションのディレクトリ、もしくはサブディレクトリ

   GAC (Global Assembly Cache)
       複数のアプリケーションで共有する場合
       厳密名を持つ場合のみ登録可能
       gacutil.exe を使用して アセンブリのインストールや削除
        を行う
.NET での配置方法
   配置の特徴
       レジストリへの登録は不要
       アセンブリ単位で管理される
       高度なバージョン管理が可能

   配置方法
       XCopy による配置 (XCopy デプロイメント)
            単純なファイルのコピー
       Windows インストーラを利用した配置
            .msi ファイルを利用したセットアップ プログラム
       ClickOnce
            HTTP を利用して Web サーバーからダウンロード
アセンブリのサイド バイ サイド実行
  プログラム A           プログラム B         プログラム C        プログラム D

  New Class1()      New Class1()    New Class1()   New Class1()



          共有アセンブリ                          ローカルな使用
          としての使用

                                    Example.dll    Example.dll
 Example.dll          Example.dll
                                      Class1          Class1
   Class1               Class1
                                    MANIFEST       MANIFEST
 MANIFEST            MANIFEST       Ver.2.0.1.0
 Ver.1.0.0.0         Ver.2.0.0.0
                                       厳密名            簡易名
    厳密名                 厳密名
                                                   バージョン管理
          Windowsassembly                        の対象外
グローバル アセンブリ キャッシュ (GAC)
異なるバージョンの共有 DLL が共存
セキュリティ
セキュリティ
   コード アクセス セキュリティ
       エビデンス
           URL、Site、Zone、ApplicationDirectory、Publisher、
            StrongName、Hash
       コードグループ
           エビデンスの組み合わせ
       アクセス許可セット
           完全信頼、部分信頼
       ポリシー
           エンタープライズ、マシン、ユーザー、AppDomain

   ロールベース セキュリティ
       ロールと Principal オブジェクト
コード アクセス セキュリティとは
   コード アクセス セキュリティ
       プログラムの実行時、アセンブリに対して、リソース アクセスや特定操
        作に関して行われるアクセス制御
           エビデンス ベースのセキュリティ
       .NET Framework 実行環境が標準で備えている

                      証拠 (エビデンス) の提示




        アセンブリ                          CLR
                      アクセス許可の付与
セキュリティポリシー
   コードグループとアクセス許可セットとの対応付け
    特定の条件ごとのグループ                     アクセス許可(Permission)のグループ

    Group   All Code

                                           FullTrust
       Group ゾーン – マイコンピュータ                 すべてのアクセス許可
                                           LocalIntranet
       Group ゾーン – イントラネット                  ファイル ダイアログ

       Group    URL – http://srv/*         MySet
                                            ファイル IO



     ロード         条件に照らし合わせ、                        メンテナンス
                 コードグループに属する
                                     caspol (コマンドライン)
    アセンブリ                            Microsoft . NET Framework 2.0 構成(MMC)
                 アクセス許可が付与される
ロール ベース セキュリティとは
   ロールベースセキュリティとは
       役割ごとにユーザーをグループ化した「ロール」単位
        で行うセキュリティ制御
       ロールは Windows OS のアカウントに非依存
           ロールは Windows のグループア カウントにマップ可能
           独自のカスタム ロールも構成可能
       . NET Framework 実行環境が標準で備えている
       主にビジネス ロジックの制御で利用する
       一つの実行スレッドに対して、一つの Principal オブ
        ジェクトが関連付いている
           実行者を表す Principal オブジェクトを元に制御する
Principal オブジェクト
   スレッドごとの Principal オブジェクト
       各スレッドに Principal オブジェクトが関連付けること
        ができる
           Principal オブジェクトは、ユーザー識別情報やその人が属す
            るロール情報が含まれる
           プログラムで任意の Principal オブジェクトを作り、関連付け
            ることができる
           実行者の Windows アカウントを Principal オブジェクトに反
            映させることもできる
           ASP.NET では、ログインしたユーザーの情報が Principal オブ
            ジェクトに自動的に反映される
まとめ
   キーポイント
       サイド バイ サイド
       アセンブリとその配置
       コード アクセス セキュリティ

   .NET Framework において重要な知識です。
   興味をお持ちいただけたら、是非より深
    い知識を追ってみてください。
参考書籍
   興味を持った方の必読書

   プログラミング .NET Framework 第2版
       Jeffrey Richter 著
       吉松 史彰 監訳
       日経BP ソフトプレス
4 月15-16 日 ザ・プリンス パークタワー東京
すべての開発者を{ヒーロー}にする
               3製品 ~ Visual Studio 2008、
               Windows Server 2008、SQL
               Server 2008 ~ の製品最新情報を
               Web にてお届けします。

                    イベントへの登録
                    製品情報
                    ウェブキャスト
                    パートナー様情報 etc

                    順次コンテンツ拡大中!


www.microsoft.com/japan/heroes
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista, Visual Studio and other product names are or may be
registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation.
Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and
Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

More Related Content

Similar to デブサミ2008 .NETの仕組み

090916 X D E V今だから理解する[
090916 X D E V今だから理解する[090916 X D E V今だから理解する[
090916 X D E V今だから理解する[Masami Suzuki
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)Akio Katayama
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-publicAmazon Web Services Japan
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
Akira Inoue
 
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Shin-ya Koga
 
SC2012 VMM SP1 Update ヒーロー島 版
SC2012 VMM SP1 Update ヒーロー島 版SC2012 VMM SP1 Update ヒーロー島 版
SC2012 VMM SP1 Update ヒーロー島 版
Kishima Masakazu
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズSORACOM, INC
 
ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装Yosuke Matsusaka
 
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
日本マイクロソフト株式会社
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発
Yuki Hattori
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Akira Inoue
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにAtsuhiro Kubo
 
20200118 scugj goodbye_ws2008-slide
20200118 scugj goodbye_ws2008-slide20200118 scugj goodbye_ws2008-slide
20200118 scugj goodbye_ws2008-slide
Osamu Takazoe
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
 
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiajunichi anno
 

Similar to デブサミ2008 .NETの仕組み (20)

20050903
2005090320050903
20050903
 
090916 X D E V今だから理解する[
090916 X D E V今だから理解する[090916 X D E V今だから理解する[
090916 X D E V今だから理解する[
 
20010127
2001012720010127
20010127
 
20060419
2006041920060419
20060419
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
SC2012 VMM SP1 Update ヒーロー島 版
SC2012 VMM SP1 Update ヒーロー島 版SC2012 VMM SP1 Update ヒーロー島 版
SC2012 VMM SP1 Update ヒーロー島 版
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
 
ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装ポータブルコンポーネントマネージャの実装
ポータブルコンポーネントマネージャの実装
 
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
 
20030712
2003071220030712
20030712
 
20200118 scugj goodbye_ws2008-slide
20200118 scugj goodbye_ws2008-slide20200118 scugj goodbye_ws2008-slide
20200118 scugj goodbye_ws2008-slide
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
 

More from Takeshi Shinmura

Developers Summit 2015
Developers Summit 2015Developers Summit 2015
Developers Summit 2015
Takeshi Shinmura
 
Yahoo! Open Hack Day 3
Yahoo! Open Hack Day 3Yahoo! Open Hack Day 3
Yahoo! Open Hack Day 3
Takeshi Shinmura
 
MOSA Software Meeting 2014
MOSA Software Meeting 2014MOSA Software Meeting 2014
MOSA Software Meeting 2014
Takeshi Shinmura
 
デジタルインクのススメ
デジタルインクのススメデジタルインクのススメ
デジタルインクのススメ
Takeshi Shinmura
 
変わる!デジタルインク標準化技術-WILL-で実現するタブレットの活用方法
変わる!デジタルインク標準化技術-WILL-で実現するタブレットの活用方法変わる!デジタルインク標準化技術-WILL-で実現するタブレットの活用方法
変わる!デジタルインク標準化技術-WILL-で実現するタブレットの活用方法
Takeshi Shinmura
 
タブレット PC をさらに活用する ペン入力とデジタルインクのススメ
タブレット PC をさらに活用する ペン入力とデジタルインクのススメタブレット PC をさらに活用する ペン入力とデジタルインクのススメ
タブレット PC をさらに活用する ペン入力とデジタルインクのススメ
Takeshi Shinmura
 
デジタルインク技術のご紹介(Developers Summit 2014)
デジタルインク技術のご紹介(Developers Summit 2014)デジタルインク技術のご紹介(Developers Summit 2014)
デジタルインク技術のご紹介(Developers Summit 2014)
Takeshi Shinmura
 
Windowsの手書き文字認識エンジンの利用 | VSUG Day 2013 Winter Lightning Talks
Windowsの手書き文字認識エンジンの利用 | VSUG Day 2013 Winter Lightning TalksWindowsの手書き文字認識エンジンの利用 | VSUG Day 2013 Winter Lightning Talks
Windowsの手書き文字認識エンジンの利用 | VSUG Day 2013 Winter Lightning Talks
Takeshi Shinmura
 
リーダー塾卒業式 LT
リーダー塾卒業式 LTリーダー塾卒業式 LT
リーダー塾卒業式 LTTakeshi Shinmura
 
2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~
Takeshi Shinmura
 
Microsoft loves PHP WebMatrix + Windows Azure
Microsoft loves PHP WebMatrix + Windows AzureMicrosoft loves PHP WebMatrix + Windows Azure
Microsoft loves PHP WebMatrix + Windows Azure
Takeshi Shinmura
 
VSUG Day 2010 Summer Tokyo - keynote
VSUG Day 2010 Summer Tokyo - keynoteVSUG Day 2010 Summer Tokyo - keynote
VSUG Day 2010 Summer Tokyo - keynoteTakeshi Shinmura
 
Directions on microsoft_web_and_cloud_development
Directions on microsoft_web_and_cloud_developmentDirections on microsoft_web_and_cloud_development
Directions on microsoft_web_and_cloud_developmentTakeshi Shinmura
 

More from Takeshi Shinmura (13)

Developers Summit 2015
Developers Summit 2015Developers Summit 2015
Developers Summit 2015
 
Yahoo! Open Hack Day 3
Yahoo! Open Hack Day 3Yahoo! Open Hack Day 3
Yahoo! Open Hack Day 3
 
MOSA Software Meeting 2014
MOSA Software Meeting 2014MOSA Software Meeting 2014
MOSA Software Meeting 2014
 
デジタルインクのススメ
デジタルインクのススメデジタルインクのススメ
デジタルインクのススメ
 
変わる!デジタルインク標準化技術-WILL-で実現するタブレットの活用方法
変わる!デジタルインク標準化技術-WILL-で実現するタブレットの活用方法変わる!デジタルインク標準化技術-WILL-で実現するタブレットの活用方法
変わる!デジタルインク標準化技術-WILL-で実現するタブレットの活用方法
 
タブレット PC をさらに活用する ペン入力とデジタルインクのススメ
タブレット PC をさらに活用する ペン入力とデジタルインクのススメタブレット PC をさらに活用する ペン入力とデジタルインクのススメ
タブレット PC をさらに活用する ペン入力とデジタルインクのススメ
 
デジタルインク技術のご紹介(Developers Summit 2014)
デジタルインク技術のご紹介(Developers Summit 2014)デジタルインク技術のご紹介(Developers Summit 2014)
デジタルインク技術のご紹介(Developers Summit 2014)
 
Windowsの手書き文字認識エンジンの利用 | VSUG Day 2013 Winter Lightning Talks
Windowsの手書き文字認識エンジンの利用 | VSUG Day 2013 Winter Lightning TalksWindowsの手書き文字認識エンジンの利用 | VSUG Day 2013 Winter Lightning Talks
Windowsの手書き文字認識エンジンの利用 | VSUG Day 2013 Winter Lightning Talks
 
リーダー塾卒業式 LT
リーダー塾卒業式 LTリーダー塾卒業式 LT
リーダー塾卒業式 LT
 
2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~
 
Microsoft loves PHP WebMatrix + Windows Azure
Microsoft loves PHP WebMatrix + Windows AzureMicrosoft loves PHP WebMatrix + Windows Azure
Microsoft loves PHP WebMatrix + Windows Azure
 
VSUG Day 2010 Summer Tokyo - keynote
VSUG Day 2010 Summer Tokyo - keynoteVSUG Day 2010 Summer Tokyo - keynote
VSUG Day 2010 Summer Tokyo - keynote
 
Directions on microsoft_web_and_cloud_development
Directions on microsoft_web_and_cloud_developmentDirections on microsoft_web_and_cloud_development
Directions on microsoft_web_and_cloud_development
 

Recently uploaded

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 

Recently uploaded (14)

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 

デブサミ2008 .NETの仕組み

  • 1. 今こそ知りたい! .NET Framework のメカニズム 14-B-4 新村 剛史 マイクロソフト株式会社 デベロッパー&プラットフォーム統括 本部 デベロッパービジネス本部
  • 2. アジェンダ  はじめに  .NET Framework の概要  ソースコードからのコンパイル  アセンブリ  アセンブリから実行まで  配置  セキュリティ  まとめ
  • 4. 本セッションの目的  .NET Framework 初めての方  .NET Framework の実行の仕組みを理解して いただく。  .NET 開発者の方  CLR に対する理解を深めるきっかけとしてい ただくき、トラブルを未然に防ぐための一助 とする。
  • 6. .NET Framework バージョン比較 Add 3.5 Add 3.0 Keep 3.0 1.0 V-UP 1.1 V-UP 2.0 Keep 2.0 Keep 2.0 1.0 1.1 2.0 3.0 3.5 包含 共存
  • 7. .NET Framework の構成 ASP.NET追加 LINQ (ASP.NET AJAX) 3.5 3.5 コンパイラ WCF追加 WF追加 WPF追加 BCL追加 3.0 WCF WF WPF CardSpace 2.0 Windows コンパイラ ADO.NET ASP.NET フォーム 2.0 Base Class Library (BCL) Common Language Runtime(CLR) コンパイラ
  • 8. 共通言語ランタイム (CLR) のメリット  CLR を使用することで受ける恩恵  異なるプログラミング言語での簡単な連携  異なる言語で記述された DLL を他の言語から利用できる  複数言語間のクラス継承、例外処理  高度なバージョン管理  参照する側が参照先のバージョンを知っている  サイド バイ サイド実行  ランタイムによるセキュリティ向上  コード アクセス セキュリティ  ロール ベース セキュリティ
  • 10. .NETアプリケーションの動作 アセンブリ ソースコード コンパイラ EXE/DLL (中間コード + メタデータ) セキュリティ Common Language Runtime クラス ローダ クラスライブラリ PreJIT JIT コンパイラ 実行 セキュリティ ネイティブ コード チェック
  • 11. 言語別コンパイラ  言語別のコンパイラ と ひとつの中間言語  CLR が解釈可能な中間言語にコンパイル アセンブリ Visual C# C# コンパイラ 中間言語 VB コンパイラ MSIL Visual Basic
  • 13. アセンブリ  アセンブリとは  配置とバージョン管理の単位  プライベートアセンブリと共有アセンブリ  アセンブリに含まれるもの  MANIFEST  自己記述型のアセンブリ情報  アセンブリのID、厳密名情報、バージョン情報、カルチャ  含まれる型やリソースの情報  参照しているアセンブリの情報  実行に必要な許可セット情報など アセンブリ  IL  JIT コンパイラへの入力となる中間言語 メタデータ MANIFEST メタデータ  メタデータ メタデータ IL  型とメソッドに関する情報 IL リソース  リソース IL  文字列や画像、永続化されたデータなど
  • 14. アセンブリ名  簡易名  テキストベースの単純な名前  アセンブリ内の (コアの) ファイルの名前と連動  Prog01.dll のアセンブリ名は、Prog01  厳密名  開発者 (発行者) の公開キーを割り付けた名前  開発者が異なれば、厳密名は異なる  共有DLL (共有アセンブリ)、バージョン管理などで利用 簡易名 テキスト 厳密名 テキスト + バージョン + カルチャ + 公開キー 秘密キー
  • 15. アセンブリのバージョン管理  厳密名  バージョンもアセンブリ区別の対象となる  DLL HELL からの解放  複数のバージョンの DLL を管理可能  前提とするバージョンの DLL を勝手に更新しな い  サイド バイ サイド 実行  適切なバージョンの DLL を検索し、ロード
  • 17. アセンブリの実行 マネージ EXE 自身のロード アセンブリ JIT 実行 ローダ コンパイラ 起動 必要な型の コンパイル・ ロード コードの検証 ヘッダー解析 MSCorEE.dll MSCorWks.dll ロード・初期化 Windows
  • 18. ランタイムバージョンの選定  アセンブリのファイル ヘッダで実行する CPU アーキテ クチャを選定  構成ファイルなどの情報で実行する CLR のバージョン を選定 (サイド バイ サイド 実行) CLR 1.0 の MSCorWks.dll 32bit の MSCorEE.dll アセンブリ CLR 1.1 の 構成ファイル のヘッダ etc MSCorWks.dll 64bit の MSCorEE.dll CLR 2.0 の MSCorWks.dll
  • 19. アセンブリ ローダ  タイプ チェック  マニフェストの確認  アセンブリの内容の確認  署名の確認  厳密名かつ GAC 以外からロードした場合  GAC に登録されている場合はGAC 登録時にチェック  バージョン選定  同一型名のアセンブリから適切なバージョンを選択 (厳密 名の場合)  パーミッションの設定  エビデンスの取得  ポリシーの取得とパーミッションの設定
  • 20. アセンブリの検索 GAC (Global Assembly Cache) • 厳密名を持つアセンブリのみ codeBase 要素 • アプリケーション構成ファイルに記載される Probing • アセンブリ名を基にした検索 [アセンブリ名] + .dll or .exe • 以下のディレクトリを対象に検索 • アプリケーション ベース ディレクトリ • プライベート Binpath FileNotFound Exception
  • 21. JIT コンパイラ  JIT (Just In Time) コンパイラ  実行時に未コンパイルの MSIL を Native コー ドにコンパイル  コンパイル後のNative コードはメモリに格納  一度コンパイルされた型は再度コンパイルさ れない  NGen.exe による事前コンパイルも可能
  • 23. アセンブリの配置場所  任意のディレクトリ  単一のアプリケーションからしか使用しない場合  構成ファイルの<codeBase>を使用して検索場所を指定  厳密名を持つ場合  コンピュータ、イントラネット、インターネットの任意の場所  厳密名を持たない場合  アプリケーションのディレクトリ、もしくはサブディレクトリ  GAC (Global Assembly Cache)  複数のアプリケーションで共有する場合  厳密名を持つ場合のみ登録可能  gacutil.exe を使用して アセンブリのインストールや削除 を行う
  • 24. .NET での配置方法  配置の特徴  レジストリへの登録は不要  アセンブリ単位で管理される  高度なバージョン管理が可能  配置方法  XCopy による配置 (XCopy デプロイメント)  単純なファイルのコピー  Windows インストーラを利用した配置  .msi ファイルを利用したセットアップ プログラム  ClickOnce  HTTP を利用して Web サーバーからダウンロード
  • 25. アセンブリのサイド バイ サイド実行 プログラム A プログラム B プログラム C プログラム D New Class1() New Class1() New Class1() New Class1() 共有アセンブリ ローカルな使用 としての使用 Example.dll Example.dll Example.dll Example.dll Class1 Class1 Class1 Class1 MANIFEST MANIFEST MANIFEST MANIFEST Ver.2.0.1.0 Ver.1.0.0.0 Ver.2.0.0.0 厳密名 簡易名 厳密名 厳密名 バージョン管理 Windowsassembly の対象外 グローバル アセンブリ キャッシュ (GAC) 異なるバージョンの共有 DLL が共存
  • 27. セキュリティ  コード アクセス セキュリティ  エビデンス  URL、Site、Zone、ApplicationDirectory、Publisher、 StrongName、Hash  コードグループ  エビデンスの組み合わせ  アクセス許可セット  完全信頼、部分信頼  ポリシー  エンタープライズ、マシン、ユーザー、AppDomain  ロールベース セキュリティ  ロールと Principal オブジェクト
  • 28. コード アクセス セキュリティとは  コード アクセス セキュリティ  プログラムの実行時、アセンブリに対して、リソース アクセスや特定操 作に関して行われるアクセス制御  エビデンス ベースのセキュリティ  .NET Framework 実行環境が標準で備えている 証拠 (エビデンス) の提示 アセンブリ CLR アクセス許可の付与
  • 29. セキュリティポリシー  コードグループとアクセス許可セットとの対応付け 特定の条件ごとのグループ アクセス許可(Permission)のグループ Group All Code FullTrust Group ゾーン – マイコンピュータ すべてのアクセス許可 LocalIntranet Group ゾーン – イントラネット ファイル ダイアログ Group URL – http://srv/* MySet ファイル IO ロード 条件に照らし合わせ、 メンテナンス コードグループに属する caspol (コマンドライン) アセンブリ Microsoft . NET Framework 2.0 構成(MMC) アクセス許可が付与される
  • 30. ロール ベース セキュリティとは  ロールベースセキュリティとは  役割ごとにユーザーをグループ化した「ロール」単位 で行うセキュリティ制御  ロールは Windows OS のアカウントに非依存  ロールは Windows のグループア カウントにマップ可能  独自のカスタム ロールも構成可能  . NET Framework 実行環境が標準で備えている  主にビジネス ロジックの制御で利用する  一つの実行スレッドに対して、一つの Principal オブ ジェクトが関連付いている  実行者を表す Principal オブジェクトを元に制御する
  • 31. Principal オブジェクト  スレッドごとの Principal オブジェクト  各スレッドに Principal オブジェクトが関連付けること ができる  Principal オブジェクトは、ユーザー識別情報やその人が属す るロール情報が含まれる  プログラムで任意の Principal オブジェクトを作り、関連付け ることができる  実行者の Windows アカウントを Principal オブジェクトに反 映させることもできる  ASP.NET では、ログインしたユーザーの情報が Principal オブ ジェクトに自動的に反映される
  • 32. まとめ  キーポイント  サイド バイ サイド  アセンブリとその配置  コード アクセス セキュリティ  .NET Framework において重要な知識です。  興味をお持ちいただけたら、是非より深 い知識を追ってみてください。
  • 33. 参考書籍  興味を持った方の必読書  プログラミング .NET Framework 第2版  Jeffrey Richter 著  吉松 史彰 監訳  日経BP ソフトプレス
  • 34. 4 月15-16 日 ザ・プリンス パークタワー東京
  • 35. すべての開発者を{ヒーロー}にする 3製品 ~ Visual Studio 2008、 Windows Server 2008、SQL Server 2008 ~ の製品最新情報を Web にてお届けします。 イベントへの登録 製品情報 ウェブキャスト パートナー様情報 etc 順次コンテンツ拡大中! www.microsoft.com/japan/heroes
  • 36. © 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista, Visual Studio and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.