2009-05-19 110 views
2

我正在尝试为Web服务考虑正确的设计。实质上,该服务将在多个不同系统中执行客户端搜索,并返回结果。使用可选部件返回复杂对象的Web服务

现在,客户可以附加各种信息 - 例如,各种联系信息,他们的地址,个人信息。这些信息中的一部分对于从某些系统中检索可能很复杂,所以如果消费者不打算使用它,我希望他们有某种方式向Web服务表明这一点。

一个显而易见的方法是针对不同的想要的细节组合有不同的方法 - 但随着组合的增长,方法的数量也会增加。我看过的另一种方法是在方法调用中添加两个字符串数组参数,其中一个数组是需要的项目列表(例如,我需要联系信息),另一个是可选项目(例如,如果您打算反正他们的名字,你可能还会回报给我)。

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

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

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

回答

3

创建“criteria”对象,并使用它作为一个参数。这样的对象应该有一堆属性来表示你想要的信息。例如“IncludeAddresses”或“IncludeFullContactInformation”。

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

1

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

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

Regards, Maciej

相关问题