1

これはデザインに関する一般的な質問です。ビジネス層とプレゼンテーション層の間で通信するための最良の方法は何ですか?現在、ビジネスレイヤーに渡されるオブジェクトがあり、サービスはオブジェクトから情報を読み取り、結果をオブジェクトに設定します。サービスが終了すると、ビジネスレイヤーの結果がオブジェクトに入力され、オブジェクトの結果に応じてUIを表示できます。

これが最善のアプローチですか?他にどのようなアプローチがありますか?

4

3 に答える 3

1

ドメイン駆動設計の本(クイックバージョンはここで無料で入手できます)は、これについての洞察を与えることができます。

一言で言えば、彼らは次のアプローチを提案しています:モデルオブジェクトはモデル層からビュー層にシームレスに横断します(これは、静的な型付き言語またはclin​​et / serverで異なる言語を使用している場合は注意が必要ですが、動的な言語では簡単です)。また、サービスは、モデルオブジェクト自体に属していないアクションを実行するためにのみ使用する必要があります(または、多数のモデルオブジェクトを含むアクションがある場合)。

また、有名な貧血ドメインモデルのアンチパターンを防ぐために、ビジネスロジックをモデル層(エンティティ、サービス、値オブジェクト)に配置する必要があります。

これは別のアプローチです。それがあなたに合っているかどうかは、チーム、コードがどれだけ書かれたか、テストカバレッジの量、プロジェクトの期間、チームがアジャイルであるかどうかなどに大きく依存します。ドメイン駆動設計はそれをさらに迅速に議論し、少なくとも最初にそれをざっと見れば、決定のリスクははるかに低くなります(さらに掘り下げることを選択した場合は、Eric Evansから元の本を入手することが役立ちます)。

于 2009-06-02T19:57:35.330 に答える
0

リスナーパターンを使用し、ビジネスレイヤーのイベントでプレゼンテーションレイヤーに情報を送信します。

于 2009-06-02T19:57:41.103 に答える
0

それはあなたのアーキテクチャに依存します。

一部の人々は、コードをすべて同じexeまたはdllで構造化し、標準のn層アーキテクチャに従います。

他の人はそれを分割して、彼らのサービスが単なる標準クラスではなくすべてのWebサービスになるようにするかもしれません。これの利点は、物理インフラストラクチャ内の1か所にインストールされた再利用可能なビジネスロジックです。したがって、単一の変更がすべてのアプリケーションに適用されます。

サービスとしてのソフトウェアとクラウドコンピューティングは、物事が進むプラットフォームになりつつあります。Amazons Elasticクラウド、Microsofts Azure、およびその他のクラウドプロバイダーはすべて、アーキテクチャの決定に影響を与える可能性のある多数のサービスを提供しています。

私が使用しようとしているのは

Silverlight UI

WCFサービス-ここでのビジネスロジック

NHibernateデータアクセス

SQLServerデータベース

アプリケーションのレイヤーがインターフェイスを介して通信できるようにするだけで、成熟したAzureクラウドサービスに進むことができます。

于 2009-06-02T20:01:27.290 に答える