我打算为我的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的实现有什么影响?
答案 0 :(得分:2)
如果你想要与WCF数据契约相同的输入/输出参数,那将是一个合适的解决方案。这些接口用属性修饰的事实绝对没有任何区别。