0

我正在设计一个数据驱动的 Windows 应用程序,它不是由底层 SQL Server 而是由 WCF 服务提供的,以便允许本地和远程访问。

所述 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 类抽象域、帐户等相同的属性,但我不能子类化它,因为我不能向下转换我的数据层返回的对象。

任何我可以接受的建议,包括“把它拿出来”,都将不胜感激。谢谢你们!

4

1 回答 1

1

如果您有一些业务逻辑,那么中间的附加层绝对有意义,实现细节当然取决于您的要求。

如果您考虑一下,底层数据类应该不知道如何登录,因为这已经是业务逻辑:这实际上是您考虑的方法背后的真正问题。

将业务逻辑隐藏在另一组服务后面也是您应该考虑的一个选项,在业务逻辑级别获得 WCF 的所有好处(和拥有成本)。

Dino Esposito 写了一本关于架构企业应用程序的好书,也许你可以从中找到一些灵感来实现你的分层架构。

于 2012-07-12T15:56:50.563 回答