私はあなたの最初の質問に答えることはできません。なぜなら、現状では合理的に答えられないからです。
あなたの2番目の質問の私の理解:
まず、私はあなたのサーバーアーキテクチャの基本的なレイアウトを理解してみましょう:
+--------+ 1 1..n +--------+ 1 1..n +---------+
| Server |<>------------| Module |<>-----------| Project |
+--------+ +--------+ +---------+
「持っているかで構成されて1台のサーバが、あります1つ以上のモジュールがあり、それぞれが複数のプロジェクトを持つ、または複数のプロジェクツから構成されています。私はあなたの質問からこれをまっすぐに取った。私がここで理解していない最初のことは、ランタイムコンポーネントやソースコードソリューションのレイアウトについてですか?
Server
|
+---- Accounting (module)
| ¦
| ? (projects)
|
+---- Offer (module)
¦ |
? +---- Action (project)
|
+---- Message (project)
|
+---- Entity (project)
|
+---- Query (project)
|
+---- ProductQuery (class)
|
+---- CustomerQuery (class)
¦
?
そして私が正しくあなたを理解していれば、あなたは今、例えばからのすべての「リモート」クエリメソッドを収集したい:
は具体的に、あなたは、モジュール、プロジェクト、およびクラスのこの階層を持っているように見えますProductQuery
とCustomerQuery
は共通のOfferQuery
クラス内にあります...これは正しいですか?あなたの2番目の質問のためのソリューションに向けた
案方向:
さて、あなたはあなたが使用した技術やフレームワークについて多くの詳細を提供していないことを考えると、私はまた、やや漠然と滞在されます:
あなたがしようとしていることは良いアプローチではないと思います。どうして?なぜなら、それらがすべて「クエリ」メソッドであるという考えに基づいて、完全に無関係なものを1つのクラスに入れるからです。しかし、彼らは非常に異なるものを照会します。 Offers
,Products
,Customers
。それは良いオブジェクト指向設計ではありません。なぜなら、それは「ドメイン指向」ではないからです。それはクエリ指向です。
クリーンなオブジェクト(ドメイン)モデルを開発することはうまくいくと思います。システム内の論理エンティティ(例えば、既に説明したオファー、製品、アカウント、顧客など)に関するクラスを設計します。対応するクラスにはクエリメソッドが完全に含まれないようにしてください。
ここで、クエリはどこに行きますか?この作業のために、オブジェクト・リレーショナル・モデル・マッパー(OR/M)を見ることができます。 Hibernate(または.NET、NHibernate)またはMicrosoftのEntity Framework for .NETは良いオプションです。彼らはあなたのドメインモデルをリレーショナルデータベースにマップし、DBの作成、クエリ、更新、削除をすべて行います。
あなたの最初の質問に関して、あなたは合理的な回答を得るにはあまりにも非特異的です。サーバーコンポーネントにどのようなフレームワークを使用しているのか、典型的で具体的なクエリはどのようなものかを知る必要があります。詳細をご記入ください。 – stakx