我的任务是实现一个可用于许多不同事物的 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 服务实际上只不过是执行实际工作的服务的代理。
看起来你的例子没有这个借口。
关于c# - WCF Web 服务方法建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/769661/