デプロイされたユニットを反映するためにリポジトリの構造で通常行われることがあるとすれば、それは何でしょうか?
-
09-06-2019 - |
質問
これは質問の続きです。
ソリューション内のフォルダーは名前空間と一致する必要がありますか?
この質問に対するコンセンサスは、条件付きで「はい」でした。つまり、通常はフォルダー == 名前空間ですが、(Java が必要とする方法で) 奴隷的にはそうではありません。
実際、私はそうやってプロジェクトを立ち上げています。
しかし、ソース管理を設定することで、現在のフォルダー構造について躊躇するようになりました。.NET Framework と同様に、プロジェクト内の名前空間は、デプロイされたユニットと常に 1 対 1 で一致するとは限りません。持っていると言ってください
lib -> lib.dll lib.data -> lib.dll lib.ecom -> lib.ecom.dll lib.ecom.paypal -> lib.ecom.paypal.dll
つまり、子の名前空間は親に同梱される場合もあれば、同梱されない場合もあります。
では、一緒にデプロイされる名前空間は何らかの方法でグループ化されているのでしょうか?
ちなみに、私は VS や NAnt を使用していません。古き良きビルド バッチだけを使用しています。
解決
私は通常、これについてあまり考えず、「正しいと思うこと」だけを実行しますが、通常は、次の戦略にかなりよく適合する名前を使用することになります。
あなたがやっているように、.dll 名にはツリー内の最も一般的な名前空間を使用します。
lib と lib.data では、これは lib であるため、dll は lib と呼ばれます。lib.ecom と lib.ecom.paypal では、これは lib.ecom であるため、DLL は ecom と呼ばれます。
場合によっては、もう少し考慮する必要がある場合があります。たとえば、次のような名前空間があり (警告、単純化された例が表示されます)、それらを 2 つの DLL にグループ化したいと考えています。
myapp.view
myapp.presentation
myapp.model
myapp.dataaccess
myapp アセンブリは 2 つ必要になるため、myapp は使用できません。この場合、最も適切な名前空間の名前を使用します。これらの名前空間が最も重要である場合、最初の名前は myapp.presentation 、2 番目の名前は myapp.model という名前になります。