在WCF数据层和WPF前端之间构建业务层

时间:2012-07-12 11:46:24

标签: wcf n-tier-architecture

我正在设计一个数据驱动的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();

并且User对象根据我的UserAdapter类抽象相同的属性,如Domain,Account等,但我不能将其子类化,因为我无法向下转换数据层返回的对象。

我可以采取任何建议,包括'搞砸',我将非常感激。谢谢大家!

1 个答案:

答案 0 :(得分:1)

如果你有一些业务逻辑,介于两者之间的附加层是绝对有意义的,实现细节当然取决于你的要求。

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

将业务逻辑隐藏在另一组服务背后也是您应该考虑的选项,从而在业务逻辑级别获得WCF的所有好处(以及所有权成本)。

Dino Esposito写了一本关于architecting enterprise applications的好书,也许你可以在那里找到一些实现分层架构的灵感。