使用这些方法签名创建一个公开的web服务是或多或少可以接受的(即标准的):
ThisMethodDoesSomething(ComplexType param)
ThisMethodDoesSomethingElse(AnotherComplexType param)或者这样:
ThisMethodDoesSomethingAndSomethingElse(string xml)在哪里执行的操作依赖于传递给单个to it-all方法的XML字符串?我总是选择前者,但我的一个同事更喜欢后者,在我们开始一个新项目之前,我正试图权衡两种策略的利弊。哪一个更容易被公众接受和使用?为什么?
发布于 2010-09-22 04:20:45
我永远不会发送XML字符串。首先,"XML“和"string”不是一回事。他们不遵循相同的规则。
任何合理的客户端都可以递归地接受由原始类型和原始类型列表或数组组成的复杂类型(C#语法):
public class ComplexType1
{
public int IntegerProperty {get;set;}
public int[] ArrayOfIntegers {get;set;}
public List<int> ListOfIntegers {get;set;} // Same as ArrayOfIntegers
}
public class ComplexType2
{
public ComplexType1 CT1 {get;set;}
public List<ComplexType1> LCT1 {get;set;}
}坦率地说,任何不能处理上述情况的客户都应该退休。
发布于 2010-09-14 18:46:40
以前我更倾向于后者,因为我不确定,如果在跨平台的情况下,每个SOAP客户端都能够正确地使用复杂类型。所以我认为一个SOAP调用,仅仅是接受并返回(XML-)字符串不会让我头疼。与此同时,据我所知,第一种方法通常没有问题,至少对于.Net和JAVA/AXIS的互操作来说是这样,反之亦然。不过,我仍在观察如何使复杂类型不太复杂。
我假设ThisMethodDoesSomething()和ThisMethodDoesSomethingElse()是原子操作?如果不是这样(ThisMethodDoesSomethingElse()需要调用ThisMethodDoesSomething()才能执行),则第一种方法是不可行的。
发布于 2010-08-16 23:37:42
我更喜欢(这是关键字“首选”,因为对此没有标准)一个复杂的XML字符串来解释操作。你可以从my open-source project上看到这一点。
我更喜欢它的一些原因...
https://stackoverflow.com/questions/3494569
复制相似问题