将库转换为WCF Web服务

时间:2011-06-16 18:40:14

标签: wcf

正如主题部分所描述的那样,我正在将C#库暴露给WCF服务。最终我们希望公开所有功能,但目前范围仅限于库API的子集。本练习的目标之一还是确保WCF服务使用请求/响应消息交换模式。因此,接口/ API将随着现有库不使用此模式而改变

我已经开始实施服务合同和请求/响应对象,但是在设计DataContracts时,我不确定要走哪条路。 我在返回和使用DataContract / DataMember属性VS注释现有库类之间分开,定义新类,类似于现有类的代理类。

有没有人有类似任务的经验,或者有哪些方法最佳?我想指出我们的团队拥有现有的库,所以请确保它的源代码。任何指针或最佳实践都会有所帮助

3 个答案:

答案 0 :(得分:4)

我的建议是使用适配器模式,在这种情况下基本上意味着创建全新的DataContracts和ServiceContracts。这将允许所有内容独立变化,并允许您优化WCF的WCF内容和API的API内容(如果这有意义)。你想要的最后一件事就是沿着修改路线走下去,发现一旦你差不多完成就不会映射出来。

答案 1 :(得分:2)

从.NET 3.5 SP1开始,您不再需要使用[DataContract] / [DataMember]属性来装饰要公开的对象。所有公共属性都将自动公开。据我个人而言,我更喜欢使用我公开的特殊DTO对象并使用这些属性进行装饰。然后我使用AutoMapper在实际的域模型和我想要公开的对象之间进行映射。

答案 2 :(得分:1)

如果您要继续使用现有库但希望控制您作为Web服务API公开的内容,我建议将新类定义为库周围的包装器。

我的意思是,即使您认为自己不会继续在其他环境中使用它,也不要“转换”现有的库。如果它已经过测试和验证,那么就利用这个事实并将其包裹起来。