【发布时间】:2011-11-09 11:12:00
【问题描述】:
我正计划为我的 WCF 客户端创建包装器,用于封装对 WCF 服务的调用。
包装器将实例化代理(使用服务引用生成的类),处理服务返回的错误并将它们转发回调用者。 Wrappers 还会从 Business Objects 创建 DTO,反之亦然。
例如,当单击按钮时,登录的视图视图模型将调用登录包装器的“登录”方法。 View-Model 会将用户名和密码传递给 Wrapper,后者将创建一个新的数据传输对象 (DTO)。 Wrapper 会在我的 Service 上调用“登录”服务契约,传入 DTO,并将操作的结果返回给调用者(即:登录成功/失败)。
由于我使用 IoC 容器 (Unity) 将包装器注入到我的视图模型中,我需要为包装器创建一个接口。
我突然想到,我将创建的接口也可以强加包装器将实现的方法。
在这方面,定义包装器的项目是否应该引用定义服务合同的 Web 服务程序集?
然后,包装器将实施适当的服务合同。例如,UserManagementProxyWrapper 类将实现一个 IUserManagement 服务协定,该协定在 Web 服务也使用的程序集中定义。
这是一种可接受的方法吗?接口具有 WCF 属性(即:ServiceContracts / DataContract)这一事实是否对 Wrappers 的实现有任何影响?
【问题讨论】: