質問

思を受け継ぐVB.net プロジェクトを生成する2つのDLL:一つのwebアプリケーション、および他の"ビジネスレイヤー"と呼びます。これは、サブアプリの大きなウェブサイトです。(VS2005).

問題はそのような香りと、DLL&名前空間構造"とは、どのような場合は性能に影響が及んでいる。

本ウェブアプリは"Foo"を生み出すFoo.dll.Foo.dll を含む名前空間アプリです。Fooを含むクラスのすべてのページ、ユーザーコントロール。

とあるプロジェクト"FooLib"を生成するFooLib.dll.FooLib.dll されています。Foo名前空間、バンチのクラスを規定します。ありその他の名前空間のようなアプリです。Foo.データのアプリです。Foo.ロジック等

あなたが間違っている。どのような実行時クラスを検索し、複数のDll?

役に立ちましたか?

解決

プログラムがコンパイルされると、完全な型名が「証拠」とともに含まれます。この証拠には、アセンブリの名前とバージョン情報が含まれます。そうしないと、クラスの1.0バージョン、1.1バージョン、2.0バージョンのどれが必要かわかりません。この同じシステムにより、異なるアセンブリの同じネームスペースで異なるクラスを見つけることができます。

パフォーマンスに関する限り、大きな影響はありません。有益な面では、いくつかのものを異なる時間にロードできることを意味します。これは通常、望ましい効果です。

ネームスペースは、見つけやすいように機能をパッケージ化することに関するものです。アセンブリは、ロードするのに効率的な方法で機能をパッケージ化することです。時々それらは同じではありません。

他のヒント

あいつ、この問題がある1)の開発者見を搭載しています。Foo.何か"がわからなくて組み立てどこを見ればよいか分かるように2)の場合と同じ名前が使用され、アプリの作成の対策クライアントまで、フルのc#少なくとも)を取得し誤差をつ曖昧なタイプ。

としてのランタイム時において、種類によって指定し組み立て、名前の名前空間は、typename.なので、実行していない課題の種類ときには、コンパイルの情報を組み立てら表が作成されます。

いいえ、これには何の問題もありません。

考慮して、私は多くのカスタムクラスライブラリを使用しており、それらのほぼすべてが次の名前空間構造を持っています:

  

.Web.UI.Controls。

System.Web.UI.Controls。に似ています(MSによってベストプラクティスとして提案されています)。

問題は、割り当てたDLLの数だけ正しい名前空間があることをコンパイラが認識することです(両方のDLLで名前空間を検索します)。この方法でまったく同じにすることをためらう唯一の理由は、開発者の混乱の可能性があるためです。もう1つの理由は、各名前空間にまったく同じ名前のクラスがある場合です。これは、完全に名前が付けられた名前空間宣言で解決されるまで、コンパイラエラーを投げます。

名前空間をエイリアスできる理由の一部です。エイリアシングは両方の概念を解決します。その構造は次のようになります。

using Foo.App.Foo;
using FooLib = FooLib.App.Foo;

したがって、Foo.App.FooとFooLib.App.Fooの両方にBarクラスがある場合、使用するアプリケーションバージョンにアクセスするには、

bar x = new bar();

使用するライブラリバージョン:

FooLib.bar x = new FooLib.bar();

いいえ、オーバーレイされた名前空間には何も問題はありません。多くの名前空間がオーバーレイされている.netフレームワーク自体を見てください。

名前空間はILレベルには存在しません。ランタイムは、疑似完全修飾名、つまりその名前空間が前に付いた型の名前からクラスを見つけます。

そのための技術的な問題はないと思います。実際には、.NET Framework自体が複数の物理アセンブリで同じ名前空間を使用することがあります。

ネームスペースは.NETの世界では最上級の市民ではありません。後悔しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top