【问题标题】:Creating a DataContract for an external object为外部对象创建 DataContract
【发布时间】:2013-03-27 10:28:47
【问题描述】:

我目前正在用 C#.NET 开发 WCF Web 服务。我对此很陌生。我正在考虑应该如何实现某个方法,因为它需要返回一个“外部”对象作为 DataContract。我不确定这是如何工作的。

我的网络服务实现了另一个第 3 方网络服务。这样做的原因是因为我们不允许将所有方法和数据公开给公众。因此,我们正在设计一个 Web 服务,它去除了第 3 方 Web 服务公开的某些数据和方法。

第 3 方 Web 服务公开了这样一个方法:

CourtVerdictResults GetVerdict ( CourtVerdictRequest verdict );

我的 Web 服务实现了该方法的精简版本,如下所示:

CourtVerdictResults GetVerdict ( String verdictCaseNumber );

在该方法中,我会删除一些敏感数据,然后我应该返回 CourtVerdictResults 对象。

但是这个对象是在第 3 方 Web 服务中定义的。我的项目引用了该 Web 服务,因此它知道该对象。但是我自己的 Web 服务没有将该对象作为 DataContract。那么当其他人开始使用我的 Web 服务时,我如何才能返回这样的对象呢?

我是否需要做一些特别的事情,以便当其他人实现我的 Web 服务时,他们的代码会自动知道 CourtVerdictResults

【问题讨论】:

    标签: c# wcf web-services datacontract


    【解决方案1】:

    您可以创建自己的CourtVerdictResults 类(在不同的命名空间中,否则名称会发生​​冲突)与第三方对象相同(或与您希望的相同)。

    从他们的服务中检索第 3 方对象,将其值映射到您的对象(如果使用 ValueInjector 或类似的东西则很简单),然后返回您的对象。

    【讨论】:

    • 这是唯一的方法吗?因为该类非常大且复杂,并且包含对其他对象等的引用。有没有办法告诉我的 WCF 服务它应该从外部 Web 服务的 CourtVerdictResults 自动生成数据协定?
    • 第 3 方站点是否公开 WSDL?如果是这样:stackoverflow.com/questions/2582341/…
    • 我想如果我需要返回一个对象,那么将 WSDL 转换为一个类是最好的方法(在这种情况下)。我所要做的就是将[DataContract][DataMemebers] 添加到我要公开的属性中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2020-01-30
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多