090916 x d e v今だから理解する[
Post on 30-Jun-2015
1.148 Views
Preview:
TRANSCRIPT
今だから理解する「 .NET Framework 」
Java ユーザーにも聞いてほしい
マイクロソフト株式会社デベロッパー & プラットフォーム 統括本部開発ツール製品部エグゼクティブプロダクトマネージャ鈴木 祐巳
アジェンダ はじめに .NET Framework の概要 コンパイル 配置 実行 セキュリティ まとめ
はじめに
本セッションの目的 .NET Framework 初めての方
.NET Framework の実行の仕組みを理解する。
.NET 開発者の方CLR に対する理解を深めるきっかけとし、
トラブルを未然に防ぐための一助とする。
.NET Framework の概要
⊃
.NET Framework とは
=
⊃
.NET Framework とは
SOA をはじめとする Connected System の技術基盤、ソリューション、サポートの総称
“Connected System” を実現するためのフレームワーク実装
CLR + Library 開発生産性、安全性、
信頼性を実現する開発プラットフォーム
⊃
Common Language Runtime(CLR)
.NET Framework の構造Solution Framework
Base Class Library(BCL)
ADO.NET ASP.NETWindowsフォーム
WCF WPF WFCardSpac
e
ASP.NETAJAX
LINQ
ライブラリ
CLR
1.0 1.1 2.0 3.0 3.5
.NET Framework バージョン遷移
1.0 1.1 2.0 2.0 2.0V-UP Keep Keep
3.0 3.0Keep
V-UP
Add
3.5Add
包含
共存
1.0 1.1 2.0 2.0 2.0V-UP Keep KeepV-UP
本題の入り口
実行までの超概要 プログラム: 3 つの状態 開発環境と実行環境 2 つのコンパイラ
CLRVisual Studio 、 SDK
ソースコード アセンブリ ネイティブ
言語別コンパイラ JIT コンパイラ
コンパイル
.NET 言語 ( プログラミング 言語 )
• Visual Basic• Visual C#
標準言語
• JScript• Iron Python• Iron Ruby• F#
スクリプト言語
• COBOL など
3rd パーティ製
アセンブリ
中間言語MSIL
言語別コンパイラ 言語別のコンパイラ と ひとつの中間言語 CLR が解釈可能な中間言語にコンパイル
Visual Basic
Visual C# C# コンパイラ
VB コンパイラ
アセンブリ アセンブリとは
アプリケーションのビルディング ブロック基本単位○ 配置○ バージョン管理○ 再利用○ アクティブ化のスコープの指定○ セキュリティ アクセス許可
つまり、 DLL や EXE
アセンブリの内容 MANIFEST
自己記述型のアセンブリ情報○ アセンブリの ID 、厳密名情報、バージョン情報、カ
ルチャ○ 含まれる型やリソースの情報○ 参照しているアセンブリの情報○ 実行に必要な許可セット情報など
IL JIT コンパイラへの入力となる中間言語
メタデータ 型とメソッドに関する情報
リソース 文字列や画像、永続化されたデータなど
アセンブリ
MANIFESTメタデータ
IL
メタデータ
IL リソース
メタデータ
IL
アセンブリ名• テキストベースの単純な名前• アセンブリ内の ( コアの ) ファイルの名前と連動
• Prog01.dll のアセンブリ名は、 Prog01
簡易名
• 開発者 ( 発行者 ) の公開キーを割り付けた名前• 開発者が異なれば、厳密名は異なる• バージョン、カルチャ
• 共有 DLL ( 共有アセンブリ ) 、バージョン管理などで利用
厳密名
テキスト
テキスト バージョン カルチャ 公開キー+ + +
簡易名
厳密名
秘密キー
配置
アセンブリの配置場所 任意のディレクトリ
単一のアプリケーションからしか使用しない場合 構成ファイルの <codeBase> を使用して検索場所を指
定○ 厳密名を持つ場合
コンピュータ、イントラネット、インターネットの任意の場所○ 厳密名を持たない場合
アプリケーションのディレクトリ、もしくはサブディレクトリ
GAC (Global Assembly Cache) 複数のアプリケーションで共有する場合 厳密名を持つ場合のみ登録可能 gacutil.exe を使用して アセンブリのインストールや削
除を行う
.NET での配置方法 配置の特徴
レジストリへの登録は不要アセンブリ単位で管理される高度なバージョン管理が可能
配置方法XCopy による配置 (XCopy デプロイメント )○ 単純なファイルのコピー
Windows インストーラを利用した配置○ .msi ファイルを利用したセットアップ プログラム○ Visual Studio を使って作成
ClickOnce○ HTTP を利用して Web サーバーからダウンロード
アセンブリのバージョン管理
厳密名バージョンもアセンブリ区別の対象となる
DLL HELL からの解放複数のバージョンの DLL を管理可能前提とするバージョンの DLL を勝手に更新
しない (GAC の場合 )
サイド バイ サイド 実行適切なバージョンの DLL を検索し、ロード
アセンブリのサイド バイ サイド実行
異なるバージョンの共有 DLL が共存
バージョン管理の対象外
共有アセンブリとしての使用
ローカルな使用
\Windows\assembly グローバル アセンブリ キャッシュ (GAC)
プログラム A
New Class1()
プログラム B
New Class1()
プログラム C
New Class1()
プログラム D
New Class1()
MANIFESTVer.1.0.0.0
厳密名
Class1
Example.dll
MANIFESTVer.2.0.0.0
厳密名
Class1
Example.dll
MANIFESTVer.2.0.1.0
厳密名
Class1
Example.dll
MANIFEST
簡易名
Class1
Example.dll
実行
アセンブリの実行
アセンブリローダ
マネージ EXE .NET 実行ファイル
JITコンパイラ
MSCorEE.dll
ヘッダー解析
起動
ロード・初期化
自身のロード
必要な型のロード
コンパイル・コードの検証
MSCorWks.dll
実行
Web サーバー (IIS)
ASP.NET ランタイムの実行プロセス
ASPXファイル
リクエスト
ASPX
エンジン
解析
生成されたページクラス
生成
レスポンス
リクエストインスタン
ス
レスポンス
コードビハインド
クラス
ページ
クラス プロセスのインスタンス化
コンパイル
Web
ブ
ラウ
ザ
ランタイムバージョンの選定
アセンブリのファイル ヘッダで実行する CPU アーキテクチャを選定
構成ファイルなどの情報で実行する CLR のバージョンを選定 ( サイド バイ サイド 実行 )
32bit のMSCorEE.dll
64bit のMSCorEE.dll
アセンブリのヘッダ
構成ファイル
CLR 1.0 のMSCorWks.dll
CLR 1.1 のMSCorWks.dll
CLR 2.0 のMSCorWks.dll
アプリケーション ドメイン 論理的なプロセス空間
SystemDomain○ mscoree.dll○ mscorwks.dll
SharedDomain○ mscorelib.dll
AppDomain○ アプリケーション
プロセス
AppDomain 1(Default AppDomain)
System.dll
App1.exe
AppDomain 2
System.dll
App2.exe
SystemDomain
SharedDomain
mscorlib.dll
JIT コンパイラ JIT (Just In Time) コンパイラ
実行時に未コンパイルの MSIL を ネイティブ コードにコンパイル
コンパイル後のネイティブ コードはメモリに格納
NGen.exe による事前コンパイルも可能
セキュリティ
セキュリティ コード アクセス セキュリティ
ロールベース セキュリティ
コード アクセス セキュリティとは コード アクセス セキュリティ
プログラムの実行時、アセンブリに対して、リソース アクセスや特定操作に関して行われるアクセス制御○ エビデンス ベースのセキュリティ
.NET Framework 実行環境が標準で備えている
証拠 ( エビデンス ) の提示
アクセス許可の付与
アセンブリ CLR
セキュリティポリシー コードグループとアクセス許可セットとの対応付け
Group All Code
ゾーン – マイコンピュータ
ゾーン – イントラネット
URL – http://srv/*
特定の条件ごとのグループ アクセス許可 (Permission) のグループ
アセンブリ
ロード 条件に照らし合わせ、コードグループに属する
アクセス許可が付与される
メンテナンス
caspol ( コマンドライン )Microsoft . NET Framework 2.0 構成(MMC)
LocalIntranet ファイル ダイアログ
MySet ファイル IO
FullTrust すべてのアクセス許可Group
Group
Group
ロール ベース セキュリティ 役割ごとにユーザーをグループ化した「ロー
ル」単位で行うセキュリティ制御おもにビジネスロジック制御に利用
ロールは Windows OS のアカウントに非依存ロールは Windows のグループア カウントにマップ
可能 実行スレッドに対して、 Principal オブジェク
トが関連付いている実行者を表す Principal オブジェクトを元に制御する
まとめ
CLR のメリット ( まとめ )
異なるプログラミング言語での簡単な連携異なる言語で記述された DLL を他の言語から利用できる複数言語間のクラス継承、例外処理
高度なバージョン管理DLL HELL からの解放サイド バイ サイド実行
ランタイムによるセキュリティ向上コード アクセス セキュリティロール ベース セキュリティ
多様なアプリケーション開発プラットフォームのパワーを最大限活用した
アプリケーションの実現
Web アプリケーション
Windows アプリケーション
モバイル アプリケーション
バックエンド システム
Office アプリケーション
クラウド
参考書籍 .NET Framework 開発ガイドブック
プログラミング .NET Framework 第2版Jeffrey Richter 著吉松 史彰 監訳日経 BP ソフトプレス
© 2009 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.
top related