WCF:与客户端的代理包装器共享服务合同

时间:2011-09-02 20:13:00

标签: .net wcf

我打算为我的WCF客户端创建包装器,它封装了对WCF服务的调用。

Wrappers会实例化代理(使用服务引用生成的类),处理服务返回的错误并将它们转发回调用者。 Wrappers也会从Business Objects创建DTO,反之亦然。

例如,单击按钮时,Login的View View-Model会调用Login Wrapper的“Login”方法。 View-Model会将用户名和密码传递给Wrapper,后者将创建一个新的数据传输对象(DTO)。然后,Wrapper将在我的服务上调用“登录”服务合同,传入DTO,并将操作的结果返回给调用者(即:登录成功/失败)。

由于我使用IoC容器(Unity)在我的View模型中注入Wrappers,我需要为Wrappers创建一个接口。

我想到我创建的接口可能会强制Wrappers实现的方法。

在这方面,定义Wrappers的项目是否应该引用定义服务合同的Web Service程序集?

然后,Wrappers将实施相应的服务合同。例如,UserManagementProxyWrapper类将实现在Web服务也使用的程序集中定义的IUserManagement服务契约。

这是一种可接受的方法吗?接口是否具有WCF属性(即:ServiceContracts / DataContract)对Wrappers的实现有什么影响?

1 个答案:

答案 0 :(得分:2)

如果你想要与WCF数据契约相同的输入/输出参数,那将是一个合适的解决方案。这些接口用属性修饰的事实绝对没有任何区别。