0

ローカルおよびリモートでアクセスできるように、基になる SQL Server ではなく WCF サービスによって供給されるデータ駆動型の Windows アプリケーションを設計しています。

上記の WCF は、ユーザー、在庫、顧客などを取得するための特定の機能を提供し、実際に次の行に沿って ADO 操作を実行します。

[OperationContract]
UserAdapter GetUserByWindowsIdentity(string Domain, string Account);

次のいずれかを返します。

[DataContract]
public class UserAdapter
{
    [DataMember]
    public int? ID;

    [DataMember]
    public string Domain;

    [DataMember]
    public string Account;

    [DataMember]
    public string Name;
}

WPF フロント エンド アプリケーションで WCF クライアントへの特定の参照を使用するのではなく、その間の別のレイヤーでさらにいくつかの機能を抽象化する必要があります。たとえば、WindowsIdentity を介したユーザー ログオンの検証は、データ レイヤーにもプレゼンテーションにも属しません。レイヤですが、中間のビジネス ロジック レイヤです。

これについてどうすればよいかわかりません。プレゼンテーション層で、次のようなことができるようにしたいと思います。

User.Login();

UserAdapterクラスに従って、Userオブジェクトがドメイン、アカウントなどの同じプロパティを抽象化しますが、データレイヤーから返されたオブジェクトをダウンキャストできないため、これをサブクラス化できません。

「チャック・イット・アウト」を含む、私がこれを取ることができる提案は非常に高く評価されます. 皆さん、ありがとうございました!

4

1 に答える 1

1

ビジネスロジックがある場合は、その間にレイヤーを追加することは絶対に理にかなっています。実装の詳細は、もちろん要件によって異なります。

考えてみれば、基礎となるデータ クラスはログイン方法を知っているべきではありません。それはすでにビジネス ロジックであるためです。これは実際に、検討したアプローチの背後にある本当の問題です。

ビジネス ロジックを別のサービス セットの背後に隠すことも検討すべきオプションであり、ビジネス ロジック レベルで WCF のすべての利点 (および所有コスト) を得ることができます。

Dino Esposito は、エンタープライズ アプリケーションのアーキテクチャについての優れた本を書いています。

于 2012-07-12T15:56:50.563 に答える