首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改用于WebChannelFactory的接口

修改用于WebChannelFactory的接口
EN

Stack Overflow用户
提问于 2012-05-02 20:07:31
回答 1查看 443关注 0票数 0

如果我有一个服务器/客户端应用程序,这两个应用程序都引用相同的DLL,其中包含用于REST服务器和用于WebChannelFactory引用web服务器的接口,那么如果服务器接口获取和更新,传统客户端会发生什么?例如,假设应用程序的第一个版本通过以下接口推出:

代码语言:javascript
复制
[ServiceContract]
public interface ISampleInterface
{
    [OperationContract]
    [WebInvoke(UriTemplate = "/PutDevice", ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml)]
    void PutDevice(Device device);
}

[DataContract(Namespace = "")]
public class Device
{
    [DataMember]
    public Guid id { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public string Description { get; set; }
} // End of Device

这是REST服务用作契约的内容,并且代理将具有类似于以下内容的代码:

代码语言:javascript
复制
WebChannelFactory<ISampleInterface> client = new WebChannelFactory<IGridVisionService>(new Uri(targetHost));
ISampleInterface sampleInterface = client.CreateChannel();
sampleInterface.PutDevice(new Device() { id = Guid.Empty(), Name = "Test Device", Description = "Test Device Description" });

因此,客户端应用程序已经部署到数百台计算机上,但我们意识到,对于版本,我们还希望客户端发送它的域,因此我们将设备数据契约修改为:

代码语言:javascript
复制
[DataContract(Namespace = "")]
public class Device
{
    [DataMember]
    public Guid id { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public string Domain { get; set; }

    [DataMember]
    public string Description { get; set; }
} // End of Device

更新服务器很容易,但是现在有一些不知道域的代理猎人。处理这种情况的正确方法是什么?我唯一的想法是不使用DataContract,而是使用我可以手动解析的XElement。然后添加登录到服务器,以处理缺少域的情况,但这似乎是草率的。有没有我忽略的更好的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-10 20:28:10

我能够自己测试这个。在我的客户端设备链接到不知道Domain参数的dll的情况下,方法调用仍然成功,Domain参数为空。这就是我所希望的结果!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10413417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档