狠狠撸

狠狠撸Share a Scribd company logo
Javaユーザーにも聞いてほしい今だから理解する「.NET Framework」マイクロソフト株式会社デベロッパー & プラットフォーム 統括本部開発ツール製品部エグゼクティブプロダクトマネージャ鈴木 祐巳
アジェンダはじめに.NET Framework の概要コンパイル配置実行セキュリティまとめ
はじめに
本セッションの目的.NET Framework初めての方.NET Framework の実行の仕組みを理解する。.NET 開発者の方CLR に対する理解を深めるきっかけとし、トラブルを未然に防ぐための一助とする。
.NET Framework の概要
?.NET Framework とは=
?.NET Framework とは?“ConnectedSystem” を実現するためのフレームワーク実装CLR + Library開発生産性、安全性、信頼性を実現する開発プラットフォームSOA をはじめとする ConnectedSystem の技術基盤、ソリューション、サポートの総称
.NET Framework の構造Solution FrameworkASP.NETAJAXLINQWCFWPFWFCardSpaceADO.NETASP.NETWindowsフォームBase Class Library(BCL)Common Language Runtime(CLR)
.NET Framework バージョン遷移3.5Add3.03.0KeepAdd1.01.12.02.02.0V-UPKeepKeepV-UP1.01.12.02.02.0V-UPKeepKeepV-UP包含共存
本题の入り口
実行までの超概要プログラム:3つの状態開発環境と実行環境2つのコンパイラソースコードアセンブリネイティブCLRVisual Studio、SDK言語別コンパイラJIT コンパイラ
コンパイル
.NET 言語 (プログラミング 言语)
言語別コンパイラ言語別のコンパイラ と ひとつの中間言語CLR が解釈可能な中間言語にコンパイルアセンブリC# コンパイラVisual C#中間言語MSILVBコンパイラVisual Basic
アセンブリアセンブリとはアプリケーションのビルディング ブロック基本単位配置バージョン管理再利用アクティブ化のスコープの指定セキュリティ アクセス許可つまり、DLL や EXE
アセンブリの内容アセンブリMANIFEST自己記述型のアセンブリ情報アセンブリのID、厳密名情報、バージョン情報、カルチャ含まれる型やリソースの情報参照しているアセンブリの情報実行に必要な許可セット情報などILJIT コンパイラへの入力となる中間言語メタデータ型とメソッドに関する情報リソース文字列や画像、永続化されたデータなどMANIFESTリソースメタデータメタデータメタデータILILIL
アセンブリ名テキスト简易名テキストバージョンカルチャ公开キー+++厳密名秘密キー
配置
アセンブリの配置場所任意のディレクトリ単一のアプリケーションからしか使用しない場合構成ファイルの<codeBase>を使用して検索場所を指定厳密名を持つ場合コンピュータ、イントラネット、インターネットの任意の場所厳密名を持たない場合アプリケーションのディレクトリ、もしくはサブディレクトリGAC (Global Assembly Cache)複数のアプリケーションで共有する場合厳密名を持つ場合のみ登録可能gacutil.exe を使用して アセンブリのインストールや削除を行う
.NET での配置方法配置の特徴レジストリへの登録は不要アセンブリ単位で管理される高度なバージョン管理が可能配置方法XCopyによる配置 (XCopyデプロイメント)単純なファイルのコピーWindows インストーラを利用した配置.msiファイルを利用したセットアップ プログラムVisualStudio を使って作成ClickOnceHTTP を利用して Web サーバーからダウンロード
アセンブリのバージョン管理厳密名バージョンもアセンブリ区別の対象となるDLL HELL からの解放複数のバージョンの DLL を管理可能前提とするバージョンの DLL を勝手に更新しない (GACの場合)サイド バイ サイド 実行適切なバージョンの DLL を検索し、ロード
アセンブリのサイドバイ サイド実行プログラム ANew Class1()プログラム BNew Class1()プログラム CNew Class1()プログラム DNew Class1()ローカルな使用共有アセンブリとしての使用Example.dllExample.dllExample.dllExample.dllMANIFESTMANIFESTVer.1.0.0.0MANIFESTVer.2.0.0.0MANIFESTVer.2.0.1.0簡易名厳密名厳密名厳密名\Windows\assembly グローバル アセンブリ キャッシュ (GAC)バージョン管理の対象外Class1Class1Class1Class1異なるバージョンの共有 DLL が共存
実行
アセンブリの実行マネージ EXE .NET実行ファイル自身のロード実行アセンブリローダJITコンパイラ起動必要な型のロードコンパイル?コードの検証ヘッダー解析MSCorEE.dllMSCorWks.dllロード?初期化
ASP.NET ランタイムの実行プロセスコードビハインドクラス解析生成ASPXエンジンページクラスASPXファイル生成されたページクラスリクエストリクエストインスタンスコンパイルレスポンスレスポンスプロセスのインスタンス化Web サーバー (IIS)Web ブラウザ
ランタイムバージョンの選定アセンブリのファイル ヘッダで実行する CPU アーキテクチャを選定構成ファイルなどの情報で実行する CLR のバージョンを選定 (サイド バイ サイド 実行)CLR 1.0 のMSCorWks.dll32bit のMSCorEE.dllアセンブリのヘッダ構成ファイルCLR 1.1 のMSCorWks.dll64bit のMSCorEE.dllCLR 2.0 のMSCorWks.dll
アプリケーション ドメインプロセス論理的なプロセス空間SystemDomainmscoree.dllmscorwks.dllSharedDomainmscorelib.dllAppDomainアプリケーションAppDomain 1(Default AppDomain)AppDomain 2System.dllSystem.dllApp1.exeApp2.exeSharedDomainmscorlib.dllSystemDomain
JIT コンパイラJIT(Just In Time) コンパイラ実行時に未コンパイルの MSIL を ネイティブ コードにコンパイルコンパイル後のネイティブ コードはメモリに格納NGen.exe による事前コンパイルも可能
セキュリティ
セキュリティコード アクセス セキュリティロールベース セキュリティ
コード アクセス セキュリティとはコード アクセス セキュリティプログラムの実行時、アセンブリに対して、リソース アクセスや特定操作に関して行われるアクセス制御エビデンスベースのセキュリティ.NET Framework 実行環境が標準で備えている証拠 (エビデンス) の提示アセンブリCLRアクセス許可の付与
セキュリティポリシーコードグループとアクセス許可セットとの対応付け特定の条件ごとのグループアクセス許可(Permission)のグループGroupAll CodeFullTrustすべてのアクセス許可Groupゾーン – マイコンピュータLocalIntranetファイル ダイアログGroupゾーン – イントラネットMySetファイル IOGroupURL – http://srv/*ロード条件に照らし合わせ、コードグループに属するアクセス許可が付与されるメンテナンスアセンブリcaspol (コマンドライン)Microsoft . NET Framework 2.0 構成(MMC)
ロール ベース セキュリティ役割ごとにユーザーをグループ化した「ロール」単位で行うセキュリティ制御おもにビジネスロジック制御に利用ロールは Windows OS のアカウントに非依存ロールは Windows のグループア カウントにマップ可能実行スレッドに対して、Principal オブジェクトが関連付いている実行者を表す Principal オブジェクトを元に制御する
まとめ
CLR のメリット(まとめ)異なるプログラミング言語での簡単な連携異なる言語で記述された DLL を他の言語から利用できる複数言語間のクラス継承、例外処理高度なバージョン管理DLLHELL からの解放サイド バイ サイド実行ランタイムによるセキュリティ向上コード アクセス セキュリティロール ベース セキュリティ
多様なアプリケーション開発プラットフォームのパワーを最大限活用したアプリケーションの実現モバイル アプリケーション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.

More Related Content

Similar to 090916 X D E V今だから理解する[ (20)

『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
?
デブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組みデブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組み
Takeshi Shinmura
?
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
Akira Inoue
?
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
Microsoft
?
クロスプラットフォーム开発入门
クロスプラットフォーム开発入门クロスプラットフォーム开発入门
クロスプラットフォーム开発入门
minazou67
?
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
?
闘う滨罢エンジニアのための尝颈苍耻虫セキュリティ讲座
闘う滨罢エンジニアのための尝颈苍耻虫セキュリティ讲座闘う滨罢エンジニアのための尝颈苍耻虫セキュリティ讲座
闘う滨罢エンジニアのための尝颈苍耻虫セキュリティ讲座
Toshiharu Harada, Ph.D
?
惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み
惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み
惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み
Shinichiro Arai
?
Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00
Daisuke Nishino
?
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Akira Inoue
?
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
?
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
junichi anno
?
INF-009_PowerShell を 使いこなして、自動化対応 エンジニア になろう!!
INF-009_PowerShell を 使いこなして、自動化対応 エンジニア になろう!!INF-009_PowerShell を 使いこなして、自動化対応 エンジニア になろう!!
INF-009_PowerShell を 使いこなして、自動化対応 エンジニア になろう!!
decode2016
?
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
?
クラウドアプリケーション开発に必要なセキュリティ
クラウドアプリケーション开発に必要なセキュリティ クラウドアプリケーション开発に必要なセキュリティ
クラウドアプリケーション开発に必要なセキュリティ
Lumin Hacker
?
翱厂厂によるマッシュアップ&补尘辫;サービス化を実现する翱辫别苍栋梁サービス开発基盘
翱厂厂によるマッシュアップ&补尘辫;サービス化を実现する翱辫别苍栋梁サービス开発基盘翱厂厂によるマッシュアップ&补尘辫;サービス化を実现する翱辫别苍栋梁サービス开発基盘
翱厂厂によるマッシュアップ&补尘辫;サービス化を実现する翱辫别苍栋梁サービス开発基盘
Daisuke Nishino
?
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
?
デブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組みデブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組み
Takeshi Shinmura
?
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
Akira Inoue
?
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
Microsoft
?
クロスプラットフォーム开発入门
クロスプラットフォーム开発入门クロスプラットフォーム开発入门
クロスプラットフォーム开発入门
minazou67
?
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
?
闘う滨罢エンジニアのための尝颈苍耻虫セキュリティ讲座
闘う滨罢エンジニアのための尝颈苍耻虫セキュリティ讲座闘う滨罢エンジニアのための尝颈苍耻虫セキュリティ讲座
闘う滨罢エンジニアのための尝颈苍耻虫セキュリティ讲座
Toshiharu Harada, Ph.D
?
惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み
惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み
惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み
Shinichiro Arai
?
Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00
Daisuke Nishino
?
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Akira Inoue
?
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
Akira Inoue
?
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichiaPowerShell の基本操作とリモーティング&v3のご紹介 junichia
PowerShell の基本操作とリモーティング&v3のご紹介 junichia
junichi anno
?
INF-009_PowerShell を 使いこなして、自動化対応 エンジニア になろう!!
INF-009_PowerShell を 使いこなして、自動化対応 エンジニア になろう!!INF-009_PowerShell を 使いこなして、自動化対応 エンジニア になろう!!
INF-009_PowerShell を 使いこなして、自動化対応 エンジニア になろう!!
decode2016
?
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
?
クラウドアプリケーション开発に必要なセキュリティ
クラウドアプリケーション开発に必要なセキュリティ クラウドアプリケーション开発に必要なセキュリティ
クラウドアプリケーション开発に必要なセキュリティ
Lumin Hacker
?
翱厂厂によるマッシュアップ&补尘辫;サービス化を実现する翱辫别苍栋梁サービス开発基盘
翱厂厂によるマッシュアップ&补尘辫;サービス化を実现する翱辫别苍栋梁サービス开発基盘翱厂厂によるマッシュアップ&补尘辫;サービス化を実现する翱辫别苍栋梁サービス开発基盘
翱厂厂によるマッシュアップ&补尘辫;サービス化を実现する翱辫别苍栋梁サービス开発基盘
Daisuke Nishino
?

More from Masami Suzuki (6)

2014年OSC 東京 LT 「某開始記念!OSS利用者向けWindows Azureの ライトなライトな使い方」
2014年OSC 東京 LT 「某開始記念!OSS利用者向けWindows Azureのライトなライトな使い方」2014年OSC 東京 LT 「某開始記念!OSS利用者向けWindows Azureのライトなライトな使い方」
2014年OSC 東京 LT 「某開始記念!OSS利用者向けWindows Azureの ライトなライトな使い方」
Masami Suzuki
?
131110dot feswindowsazurewebsitefordesigners4x3
131110dot feswindowsazurewebsitefordesigners4x3131110dot feswindowsazurewebsitefordesigners4x3
131110dot feswindowsazurewebsitefordesigners4x3
Masami Suzuki
?
Windows Azure ミニシアター@日経BP Cloud Days 2013春展示会場
Windows Azure ミニシアター@日経BP Cloud Days 2013春展示会場Windows Azure ミニシアター@日経BP Cloud Days 2013春展示会場
Windows Azure ミニシアター@日経BP Cloud Days 2013春展示会場
Masami Suzuki
?
「Windows Azure がPaaS と IaaS を提供する理由」
「Windows Azure がPaaS と IaaS を提供する理由」「Windows Azure がPaaS と IaaS を提供する理由」
「Windows Azure がPaaS と IaaS を提供する理由」
Masami Suzuki
?
IT Pro Expo Booth Main Stage Windows Azure
IT Pro Expo Booth Main Stage Windows AzureIT Pro Expo Booth Main Stage Windows Azure
IT Pro Expo Booth Main Stage Windows Azure
Masami Suzuki
?
Cloud Solution for business development
Cloud Solution for business development Cloud Solution for business development
Cloud Solution for business development
Masami Suzuki
?
2014年OSC 東京 LT 「某開始記念!OSS利用者向けWindows Azureの ライトなライトな使い方」
2014年OSC 東京 LT 「某開始記念!OSS利用者向けWindows Azureのライトなライトな使い方」2014年OSC 東京 LT 「某開始記念!OSS利用者向けWindows Azureのライトなライトな使い方」
2014年OSC 東京 LT 「某開始記念!OSS利用者向けWindows Azureの ライトなライトな使い方」
Masami Suzuki
?
131110dot feswindowsazurewebsitefordesigners4x3
131110dot feswindowsazurewebsitefordesigners4x3131110dot feswindowsazurewebsitefordesigners4x3
131110dot feswindowsazurewebsitefordesigners4x3
Masami Suzuki
?
Windows Azure ミニシアター@日経BP Cloud Days 2013春展示会場
Windows Azure ミニシアター@日経BP Cloud Days 2013春展示会場Windows Azure ミニシアター@日経BP Cloud Days 2013春展示会場
Windows Azure ミニシアター@日経BP Cloud Days 2013春展示会場
Masami Suzuki
?
「Windows Azure がPaaS と IaaS を提供する理由」
「Windows Azure がPaaS と IaaS を提供する理由」「Windows Azure がPaaS と IaaS を提供する理由」
「Windows Azure がPaaS と IaaS を提供する理由」
Masami Suzuki
?
IT Pro Expo Booth Main Stage Windows Azure
IT Pro Expo Booth Main Stage Windows AzureIT Pro Expo Booth Main Stage Windows Azure
IT Pro Expo Booth Main Stage Windows Azure
Masami Suzuki
?
Cloud Solution for business development
Cloud Solution for business development Cloud Solution for business development
Cloud Solution for business development
Masami Suzuki
?

090916 X D E V今だから理解する[

Editor's Notes

  • #5: 少し経験谈を话す。忙しいと竞合情报がなかなかつかめない。もう5年以上利用されている技术だと、生い立ちや、バックグラウンド、どのバージョンを使っていいのか?等まったく想像がつかない。新バージョン登场で、记事はたくさんでるが、新规にフォーカスしすぎていて、前提知识がないと、よくわからない。かといって、初期の情报が今でも通用するのか?陈腐化していないか?わからないので読む気がしない。
  • #6: 4
  • #11: 10
  • #13: 12
  • #19: 18
  • #24: 30
  • #30: 38
  • #35: 43
  • #36: タイプシステム骋颁