首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web服务:单字符串参数或复杂类型参数

Web服务:单字符串参数或复杂类型参数
EN

Stack Overflow用户
提问于 2010-08-16 23:21:05
回答 5查看 1.8K关注 0票数 6

使用这些方法签名创建一个公开的web服务是或多或少可以接受的(即标准的):

代码语言:javascript
复制
ThisMethodDoesSomething(ComplexType param)

ThisMethodDoesSomethingElse(AnotherComplexType param)

或者这样:

代码语言:javascript
复制
ThisMethodDoesSomethingAndSomethingElse(string xml)

在哪里执行的操作依赖于传递给单个to it-all方法的XML字符串?我总是选择前者,但我的一个同事更喜欢后者,在我们开始一个新项目之前,我正试图权衡两种策略的利弊。哪一个更容易被公众接受和使用?为什么?

EN

回答 5

Stack Overflow用户

发布于 2010-09-22 04:20:45

我永远不会发送XML字符串。首先,"XML“和"string”不是一回事。他们不遵循相同的规则。

任何合理的客户端都可以递归地接受由原始类型和原始类型列表或数组组成的复杂类型(C#语法):

代码语言:javascript
复制
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;}
}

坦率地说,任何不能处理上述情况的客户都应该退休。

票数 2
EN

Stack Overflow用户

发布于 2010-09-14 18:46:40

以前我更倾向于后者,因为我不确定,如果在跨平台的情况下,每个SOAP客户端都能够正确地使用复杂类型。所以我认为一个SOAP调用,仅仅是接受并返回(XML-)字符串不会让我头疼。与此同时,据我所知,第一种方法通常没有问题,至少对于.Net和JAVA/AXIS的互操作来说是这样,反之亦然。不过,我仍在观察如何使复杂类型不太复杂。

我假设ThisMethodDoesSomething()ThisMethodDoesSomethingElse()是原子操作?如果不是这样(ThisMethodDoesSomethingElse()需要调用ThisMethodDoesSomething()才能执行),则第一种方法是不可行的。

票数 1
EN

Stack Overflow用户

发布于 2010-08-16 23:37:42

我更喜欢(这是关键字“首选”,因为对此没有标准)一个复杂的XML字符串来解释操作。你可以从my open-source project上看到这一点。

我更喜欢它的一些原因...

  1. 您的操作是一种可以灵活处理的解释性语言。
  2. 操作可以复合到一个网络行程中。
  3. XML允许扩展功能集,同时不会破坏过去的功能。
  4. XML层次结构允许操作在服务器端执行操作。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3494569

复制
相关文章

相似问题

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