1

既存の WCF サービスにいくつかの変更を加えようとしています。受け取った値を使用して実行するアクションを決定する Save() などのスーパーメソッドを作成するのが最善かどうか、またはアクションを独自のメソッドに分割してそれらを消費者に公開する必要があるかどうかを知りたかったそれらをいつ呼び出すかを決定します。

たとえば、マーチャントが支払いの試行とその結果を行ったときに、マーチャントから通知を受け取る支払いハンドラーがあります。ハンドラーがステータスを変更してオブジェクトを渡すことを許可し、スーパーメソッドがそれをどうするかを考えさせようとするか (バグがデータを台無しにしていないと仮定して)、拡張する別のメソッドを作成する方が良いでしょうか?そのため、意図が明確に定義されています。

スーパー メソッドは、プロセスの他のステップに沿ってデータを保存し、ステータスを変更する役割も担っていることに注意してください。

私はグーグルで調べましたが、具体的なものは何も見つかりませんでした。私にとって、スーパーメソッドはSOLIDに違反していますが、WCFには異なる標準セットがあり、消費者が考える必要がないようにスーパーメソッドを作成するのが最善であると言われました。

フィードバックは大歓迎です:)

4

1 に答える 1

2

私は、サービスの運用がビジネス上の意味を持つレベルで存在できることが最善であると考えています。

これが意味することは、ビジネスパーソンが操作名を教えられた場合、その操作を呼び出すことで何ができるかを大まかに理解し、それに渡す必要があるデータを推測できるということです。

これを実現するには、業務がビジネス プロセスの全部または一部を実行する必要があります。

たとえば、次の操作シグネチャにはビジネス上の意味があります。

void SolicitQuote(int brokerId, int userId, DateTime quoteRequiredBy);

int BindPolicyDocument(byte[] document, SomeType documentMetadata);

Guid BeginOnboardEmployee(string employeeName, DateTime employeeDateOfBirth);

サービス構成を考えるときにこのプリンシパルを使用すると、最適なパスからほとんど外れなくなるという利点があります。各操作が何をするかを知っており、いつ操作が不要になるかを知っています。

追加の利点は、ビジネス プロセスがほとんど変更されないため、サービス契約をそれほど変更する必要がないことです。

于 2013-10-04T07:09:53.133 に答える