Skip to main content
 首页 » 编程设计

c#之WCF Web 服务方法建议

2024年02月24日27exmyth

我的任务是实现一个 Web 服务方法,该方法可用于许多不同的事情(阅读:不存在任何要求)并且任何客户端都不必更改接口(interface)这是该方法应该是什么样子

[DataContract] 
    public class Status 
    { 
        [DataMember(Order = 0)] 
        public long Code 
        { 
            get; 
            set; 
        } 
 
        [DataMember(Order = 1)] 
        public string Message 
        { 
            get; 
            set; 
        } 
    } 
 
[DataContract] 
    public class Data 
    { 
        [DataMember(Order = 0)] 
        public string Name 
        { 
            get; 
            set; 
        } 
 
        [DataMember(Order = 1)] 
        public string Value 
        { 
            get; 
            set; 
        } 
    } 
 
public Status InitiateTransaction(long txnTypeId, Data [] txnData); 

这个想法是客户端会根据他们想要发起的“交易”类型在数据数组中传递不同的东西。与仅仅创建一堆不同的专门方法来做特定的事情相比,这样做有什么好处?

请您参考如下方法:

如果建议您实现此方法的人感到羞耻,请告诉他们这种模式是懒惰的明确标志。他们懒得弄清楚对行为的要求是什么,所以他们指定了一个方法;他们懒得弄清楚数据的要求,所以他们决定使用名称/值对。

只有一种情况我发现这种东西很有用。我已经看到定义接受一段 XML 并返回一段 XML 的 Web 服务的一些值(value),希望至少受 XML 模式的约束。当服务要与某些其他服务或其他根据 XML 文档操作的代码片段交互时,这会有一些用处。 EDI 场景就是一个例子,当文档格式已经由行业标准或协议(protocol)定义时,Web 服务实际上只不过是将执行实际工作的服务的代理。

看起来你的例子没有那个借口。