Web services 支持延迟加载所有属性的web服务模式

Web services 支持延迟加载所有属性的web服务模式,web-services,api,design-patterns,soap,lazy-loading,Web Services,Api,Design Patterns,Soap,Lazy Loading,我正在尝试为web服务设计端点模板。我的主要要求是调用方能够指定应该在返回的结果集中填充哪些属性 我的服务返回部分对象的大列表(最多1M条记录)以及单个完整对象,例如(粗略的示例XML,很抱歉有点冗长) 名单: 然后打电话的人就可以走了: User.Email = GetUser(User.ID, "Email").Email 通过广泛使用默认值和隐藏空值,返回的XML将是: <User> <ID>123</ID> <Email>exam

我正在尝试为web服务设计端点模板。我的主要要求是调用方能够指定应该在返回的结果集中填充哪些属性

我的服务返回部分对象的大列表(最多1M条记录)以及单个完整对象,例如(粗略的示例XML,很抱歉有点冗长)

名单:

然后打电话的人就可以走了:

User.Email = GetUser(User.ID, "Email").Email
通过广泛使用默认值和隐藏空值,返回的XML将是:

<User>
  <ID>123</ID>
  <Email>example@example.com</Email>
</User>

123
example@example.com
现在,上面提到的问题是试图让它更好地处理上面提到的
,它本身有子项,列表也可能有子项

由于我有太多的属性,我不能为每个属性都有一个ws方法

我正在考虑备选方案3。但是使用xml模式而不是
字符串[]
。。但是我想不出一个简单的方法来定义它,我也不想为属性使用字符串名称,比如
“Email”

最后一个计划是拥有一系列预定义的模式,这些模式通常使用,只有在高级情况下,我们才需要实际定义请求的属性。但我不知道所有与我的API对话的系统,更不用说它们各自想要什么属性了(我们不可能为每个调用方定制API)


还是我把一切都复杂化了?

我找到了谷歌API的部分回复和部分更新文档:

这似乎回答了我的问题

public User GetUser(long ID, string[] properties)
User.Email = GetUser(User.ID, "Email").Email
<User>
  <ID>123</ID>
  <Email>example@example.com</Email>
</User>