Web服务接口 - 复杂类型作为参数?

Dun*_*can 5 web-services

只是寻找有关Web服务界面设计的最佳实践的一些反馈.

我有两个选择:

选项1

public string GetSomeData(SomeCriteriaClass criteria);
Run Code Online (Sandbox Code Playgroud)

其中SomeCriteriaClass定义为:

public int ID;
public string Name;
public string Property2; etc.
Run Code Online (Sandbox Code Playgroud)

选项2

public string GetSomeData(int id, string name, string property2)
Run Code Online (Sandbox Code Playgroud)

哪个是首选?这似乎是设计模式的冲突 - 1是在一个类中包装参数,而另一个是保持Web服务接口的灵活性和开放性.

第二个问题是 - 如果我们选择Option1 - 你如何通过URL调用它?

谢谢

Dan*_*Dan 2

您可以采取困难的方式并使用 SOAP 实现选项 #1。使用 SOAP,您可以定义复杂的数据类型。另一方面,您可以按照选项 #2 中的“hack”方式执行此操作,即使用 REST 并仅对 URL 或 HTTP POST 消息中的参数进行编码。