8

ビジネス ロジックをどこに配置すればよいかわかりません。メソッドをクライアントに公開する WCF サービスがあります。

ビジネス ロジックをサービス メソッドに入れる必要があるかどうか

public User GetUser(int id)
{  
     //Retrieve the user from a repository and perform business logic
     return user;
}

または、各 WCF サービス メソッドがビジネス層メソッドを順番に呼び出す別のクラスにある必要があります。

public User GetUser(int id)
{  
     return _userLogic.GetUser(id);
}
4

5 に答える 5

8

私の個人的な好みは、WCF を別のビジネス レイヤーの上に非常に薄いレイヤーとして配置することです。WCF レイヤーは、オプション 2 で示したものと同様に、ビジネス レイヤーへの呼び出しを行うだけです。これにより、ビジネス レイヤーを WCF クライアント以外の何かで使用したい場合 (たとえば、 、WCF 経由ではなくビジネス層を直接呼び出す WPF アプリケーション)。

于 2011-12-05T16:59:58.723 に答える
2

決定はあなたのビジネスニーズに依存すると思います。WCFは、サーバーとクライアント間でデータ(オブジェクト)を転送するメカニズムです。ビジネスロジックをサーバー上で実行する場合は、ビジネスロジックの実行後にWCFにオブジェクトを公開させる必要があります。

于 2011-12-05T16:55:36.707 に答える
2

WCF サービスは、既定で再利用できるように設計されています。サービスに何らかのロジックを持たない理由はないと思いますが、多数のことを行うサービスになってしまわないように、Single Responsibility Principle などのことを覚えておいてください。

それでも、機能を小さなクラスに分割することになった場合でも、それらのクラスを WCF サービスとしてホストすることはまったく悪い考えではありません。その後、必要に応じて (パイプを介して) インプロセスで使用したり、マシンの境界 (tcp) を越えたり、Web サービスとして使用したりできます。必要に応じてファサードを作成して、他の小規模なサービスの機能へのアクセスを提供します。

WCF サービス クラスにロジックを配置することを避ける必要はありません。

于 2011-12-05T16:50:33.510 に答える
1

それは別のクラスのセットに入る必要があります。WCF レイヤーには、サービスの製品がどのように配信されるかに直接関連するロジックのみを含める必要があります。

あなたの場合、ユーザーを返す WCF メソッドがあることがわかります (これはカスタム クラスだと思います)。なぜ、ユーザー オブジェクトを返す際にそのプロパティを設定するのではなく、別のメソッドでユーザー ID を返す必要があるのでしょうか?

于 2011-12-05T16:46:43.287 に答える
0

再利用/テスト容易性/保守/可読性のために、常に BL を別のレイヤーに配置する必要があります。

于 2011-12-05T16:47:06.617 に答える