スライド 1

Download Report

Transcript スライド 1

Javaユーザーにも聞いてほしい
マイクロソフト株式会社
デベロッパー & プラットフォーム 統括本部
開発ツール製品部
エグゼクティブプロダクトマネージャ
鈴木 祐巳
アジェンダ
はじめに
 .NET Framework の概要
 コンパイル
 配置
 実行
 セキュリティ
 まとめ

本セッションの目的

.NET Framework 初めての方
 .NET Framework の実行の仕組みを理解する。

.NET 開発者の方
 CLR に対する理解を深めるきっかけとし、
トラブルを未然に防ぐための一助とする。
.NET Framework とは
⊃
=
.NET Framework とは
⊃
⊃

SOA をはじめとする
Connected System の
技術基盤、ソリュー
ション、サポートの総
称



“Connected System”
を実現するためのフ
レームワーク実装
CLR + Library
開発生産性、安全性、
信頼性を実現する開発
プラットフォーム
.NET Framework の構造
Solution Framework
ASP.NET
AJAX
LINQ
WPF
WF
WCF
ADO.NET
ASP.NET
Base Class Library(BCL)
Common Language Runtime(CLR)
CardSpace
Windows
フォーム
.NET Framework バージョン遷移
ラ
イ
ブ
ラ
リ
Add
3.5
Add
3.0
Keep
3.0
CLR
1.0
V-UP
1.1
V-UP
2.0
Keep
2.0
Keep
2.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
実行までの超概要
プログラム:3つの状態
 開発環境と実行環境
 2つのコンパイラ

ソースコード
アセンブリ
言語別コンパイラ
Visual Studio、SDK
ネイティブ
JIT コンパイラ
CLR
.NET 言語 (プログラミング 言語)
標準言語
• Visual Basic
• Visual C#
スクリプト言語
•
•
•
•
JScript
Iron Python
Iron Ruby
F#
3rd パーティ製
• COBOL など
言語別コンパイラ
言語別のコンパイラ と ひとつの中間言語
 CLR が解釈可能な中間言語にコンパイル

アセンブリ
Visual C#
Visual Basic
C# コンパイラ
VB コンパイラ
中間言語
MSIL
アセンブリ

アセンブリとは
 アプリケーションのビルディング ブロック
 基本単位
○ 配置
○ バージョン管理
○ 再利用
○ アクティブ化のスコープの指定
○ セキュリティ アクセス許可
つまり、DLL や EXE
アセンブリの内容

MANIFEST
 自己記述型のアセンブリ情報
○ アセンブリのID、厳密名情報、バージョン情報、
カルチャ
○ 含まれる型やリソースの情報
○ 参照しているアセンブリの情報
○ 実行に必要な許可セット情報など



IL
 JIT コンパイラへの入力となる中間言語
メタデータ
 型とメソッドに関する情報
リソース
 文字列や画像、永続化されたデータなど
アセンブリ
メタデータ
メタデータ
メタデータ
IL
IL
IL
MANIFEST
リソース
アセンブリ名
簡易名
• テキストベースの単純な名前
• アセンブリ内の (コアの) ファイルの名前と連動
• 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 を検索し、ロード
アセンブリのサイド バイ サイド実行
プログラム A
プログラム B
プログラム C
プログラム D
New Class1()
New Class1()
New Class1()
New Class1()
ローカルな使用
共有アセンブリ
としての使用
Example.dll
Example.dll
Class1
Class1
MANIFEST
Ver.1.0.0.0
MANIFEST
Ver.2.0.0.0
厳密名
厳密名
\Windows\assembly
グローバル アセンブリ キャッシュ (GAC)
異なるバージョンの共有 DLL が共存
Example.dll
Example.dll
Class1
Class1
MANIFEST
Ver.2.0.1.0
厳密名
MANIFEST
簡易名
バージョン管理
の対象外
アセンブリの実行
マネージ EXE .NET実行ファイル
自身のロード
アセンブリ
ローダ
起動
JIT
コンパイラ
必要な型の
ロード
ヘッダー解析
MSCorEE.dll
ロード・初期化
コンパイル・
コードの検証
MSCorWks.dll
実行
ASP.NET ランタイムの実行プロセス
Web サーバー (IIS)
解析
ASPX
生成
エンジン
Web ブラウザ
リクエスト
ASPX
ファイル
インスタンス
リクエスト
レスポンス
レスポンス
生成され
たページ
クラス
ページ
クラス
コード
ビハインド
クラス
プロセスのイ
ンスタンス化
コンパイル
ランタイムバージョンの選定


アセンブリのファイル ヘッダで実行する CPU アーキテ
クチャを選定
構成ファイルなどの情報で実行する CLR のバージョン
を選定 (サイド バイ サイド 実行)
CLR 1.0 の
MSCorWks.dll
32bit の
MSCorEE.dll
アセンブリ
のヘッダ
構成
ファイル
CLR 1.1 の
MSCorWks.dll
64bit の
MSCorEE.dll
CLR 2.0 の
MSCorWks.dll
アプリケーション ドメイン

論理的なプロセス空間
 SystemDomain
○ mscoree.dll
○ mscorwks.dll
 SharedDomain
○ mscorelib.dll
 AppDomain
○ アプリケーション
System.dll
System.dll
App1.exe
App2.exe
AppDomain 1
(Default AppDomain)
AppDomain 2
mscorlib.dll
SharedDomain
SystemDomain
プロセス
JIT コンパイラ

JIT (Just In Time) コンパイラ
 実行時に未コンパイルの MSIL を ネイティブ
コードにコンパイル
 コンパイル後のネイティブ コードはメモリに
格納

NGen.exe による事前コンパイルも可能
セキュリティ

コード アクセス セキュリティ

ロールベース セキュリティ
コード アクセス セキュリティとは

コード アクセス セキュリティ
 プログラムの実行時、アセンブリに対して、リソース アクセスや特定操
作に関して行われるアクセス制御
○ エビデンス ベースのセキュリティ
 .NET Framework 実行環境が標準で備えている
証拠 (エビデンス) の提示
CLR
アセンブリ
アクセス許可の付与
セキュリティポリシー

コードグループとアクセス許可セットとの対応付け
特定の条件ごとのグループ
Group
アクセス許可(Permission)のグループ
All Code
Group ゾーン – マイコンピュータ
Group ゾーン – イントラネット
Group
ロード
URL – http://srv/*
条件に照らし合わせ、
コードグループに属する
アセンブリ
アクセス許可が付与される
FullTrust
すべてのアクセス許可
LocalIntranet
ファイル ダイアログ
MySet
ファイル IO
メンテナンス
caspol (コマンドライン)
Microsoft . NET Framework 2.0 構成
(MMC)
ロール ベース セキュリティ

役割ごとにユーザーをグループ化した「ロー
ル」単位で行うセキュリティ制御
 おもにビジネスロジック制御に利用

ロールは 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.