0

私が働いている会社は最近、今後のすべての開発作業に .NET と Java を組み合わせて使用​​することを決定しました。私たちは、コードを名前空間 (.NET) とパッケージ (Java) に整理する方法を標準化しようとしてきましたが、複数のプラットフォームを含む複数の製品の名前空間を整理しようとした経験はありません。

最近、Java フロントエンド (Blackberry デバイスで実行) と .NET バックエンド (Java フロントエンドが従来の VB6/COM コードと通信できるようにするメッセージ ブローカー) を使用する新製品に関与しました。 Java 側で COM を処理したい場合、既存の VB6 コードで .NET を簡単に動作させることができます)。現在、私は .NET 側に焦点を当てています。

という名前の新しい .NET ソリューションを作成しCompanyName.ProductName.Broker、最終的に 2 つのサブプロジェクトができましCoreた。ブローカー コードの大部分を実装するクラス ライブラリ プロジェクトと、BrokerConsoleブローカーをコマンドラインから開始および停止できるようにするコンソール プロジェクトです (ブローカーは実行されます)。サーバー上で RabbitMQ メッセージ キュー サーバーと一緒に)。

現在、両方のプロジェクトがCompanyName.ProductName.Broker名前空間のサブ名前空間にあります。問題は、これは理にかなっていますか?

一方では、BrokerConsoleプロジェクトはプロジェクトにかなり緊密に結合されていCoreますが、他方ではBrokerConsole、スタンドアロンの EXE にコンパイルされます。BrokerConsoleプロジェクトを別のルート名前空間に配置する方が理にかなっているのではないかと考えていました。CompanyName.Apps.ProductNameこれは、実際にはフロントエンドでCompanyName.ProductName.Broker.Core.dllあり、ライブラリではなくアプリケーションであるためです。

まったく新しいCompanyName.Appsルート名前空間を作成する理由は、通常、アプリケーションを作成するときに、参照しているライブラリとは別の名前空間に配置する (つまり、Web サーバー アプリケーションをSystem.Web名前空間に配置しない) ことです。参照されているライブラリがたまたま会社によって開発されたライブラリであることを除いて、私は同じ方向に沿って考えています。

これは良い考えですか、それとも「製品」(マーケティング用語で) に関連するすべてのものを共通のCompanyName.ProductName名前空間に保持するように努めるべきですか? 1 つの製品を構成する複数のプロジェクトを管理するためのより良い方法はありますか?

4

5 に答える 5

2

私は従来、実行可能なアプリケーションを独自の名前空間に分割してきました。私の理解では、名前空間はコード編成を支援するために存在するため、誰かが別のプロジェクトから BrokerConsole アプリケーションを参照することはほとんどないと思います。

したがって、基本的には、次のように作成します。

  • CompanyName.ProductName.Broker.Core
  • ブローカーコンソール
于 2009-07-15T17:48:39.567 に答える
1

あなたのアプローチは理にかなっていると思います。それは私が通常従うのとほとんど同じ論理に従っており、それは私の現在のクライアント (かなり大きな会社) でも従われています。

私が名前を付けていた場合、違いはこれかもしれないと思います: アセンブリCompanyName.ProductName.Broker.CoreはおそらくCompanyName.ProductName.Broker「トップレベル」の名前空間 (単語を除くCore) を持ちますが、コンソールアプリ (私が名前を付けるCompanyName.ProductName.Broker.Console; 名前空間は既に確立されています) Broker 部分) には、アセンブリ名と名前空間名の間に 1 対 1 の関係があります。

Console を完全に別の名前空間に配置してライブラリから分離しても意味がありません。まったく逆です。それらは同じ製品の一部であるため、同じ名前空間に存在する必要があると思います。

于 2009-07-15T17:44:37.530 に答える
1

この 2 つを CompanyName.ProductName.Broker.Console と CompanyName.ProductName.Broker.Core に分けます。これに関する唯一の潜在的な問題は、System.Console が存在する場合に、Console を名前として使用することです。(これは、CompanyName.ProductName.Broker.BrokerConsole を使用して回避できますが、少し見苦しいです。)

2 つを分離することで、コア機能も使用する可能性のある将来のアプリで明確になります。

于 2009-07-15T17:42:09.407 に答える
1

通常、ソリューション内の各プロジェクトに独自の名前空間があり、各プロジェクト内にサブ名前空間が存在するように分割します。したがって、各プロジェクト、したがって各名前空間は、独自の dll に含まれています。

于 2009-07-15T17:50:04.523 に答える