Web Service使用可选部件返回复杂对象

时间:2009-05-19 09:00:04

标签: web-services

我正在考虑为Web服务设计正确的设计。从本质上讲,这项服务将在许多不同的系统中执行客户端搜索,并返回结果。

现在,客户可以附加各种信息 - 例如各种联系信息,他们的地址,个人信息。从某些系统中检索某些信息可能很复杂,因此如果消费者不打算使用它,我希望他们能够通过某种方式向Web服务指示。

一种显而易见的方法是针对所需细节的不同组合使用不同的方法 - 但随着组合的增长,方法的数量也会增加。我看过的另一种方法是在方法调用中添加两个字符串数组参数,其中一个数组是必需项的列表(例如,我需要联系信息),另一个是可选项(例如,如果你要去无论如何都要提起他们的名字,你也可以把它归还给我。)

第三种方法是添加其他方法来检索细节。但是,如果我需要有数百个构成结果的客户的所有细节,这将会导致往返次数的增加。

说实话,我不确定我是否喜欢上述任何一种方法。那你将如何设计这样一个通用的客户端搜索服务呢?

(考虑到CW因为可能没有一个“正确”的答案,但我会等着看看会有什么样的答案)

2 个答案:

答案 0 :(得分:3)

创建“criteria”对象并将其用作参数。这样的对象应该有一堆属性来指示您想要的信息。例如“IncludeAddresses”或“IncludeFullContactInformation”。

然后,消费者负责将正确的属性设置为true,并且所有组合都是可能的。这也将使服务中的代码更容易。您只需撰写if(criteria.IncludeAddresses){response.Addresses = GetAddresses;}

即可

答案 1 :(得分:1)

任何非结构化或半结构化数据最好由XML处理。您可以通过字符串传递XML数据,也可以将其包装在类中,为其添加一些功能。使用XPathNavigator来浏览XML。您也可以使用XMLDocument类,尽管使用它不太友好。无论如何,当然你需要某种类来处理XML内容。

这就是为什么发明XML - 处理结构没有明确定义的数据。

此致 马切伊