SOAP-方法参数的最佳实践

SOAP-方法参数的最佳实践,soap,soa,Soap,Soa,有这样的方法更好吗: #1void AddPerson(Person p) 或 #2void AddPerson(int-id,string-lastName,string-firstName) 解释一下 我注意到的一个问题是,我无法将我的web浏览器指向AddPerson并测试#1,但我可以测试#2 如果您传递的是一个人而不是不同的元素,那么在将来增强此人时会更容易,例如使用出生日期:您的方法名称保持不变,您只需在需要时增强域模型填充或读取出生日期 此外,您还会发现,一旦获得嵌套对象(如果您想

有这样的方法更好吗:

#1
void AddPerson(Person p)

#2
void AddPerson(int-id,string-lastName,string-firstName)

解释一下


我注意到的一个问题是,我无法将我的web浏览器指向AddPerson并测试#1,但我可以测试#2

如果您传递的是一个人而不是不同的元素,那么在将来增强此人时会更容易,例如使用出生日期:您的方法名称保持不变,您只需在需要时增强域模型填充或读取出生日期

此外,您还会发现,一旦获得嵌套对象(如果您想添加地址),一个人而不是元素将为您的方法提供统一的方式

致以最良好的祝愿,
Alexander.

除了ahus1所说的之外,创建一个单独的Person.xsd XML模式几乎总是一个好主意,因为通过这种方式,您可以将这个Person.xsd导入到其他XML模式(如Invoice.xsd)中,创建一种公共语言来描述您的业务

此外,它使协调服务变得更加简单,想象一下,您可能会将一个给定的客户atribute放入实际上来自个人类型的发票中。通过这种方式,您可以在一个步骤中将customer值分配给其他Person元素,而不必在每个步骤中复制所有Person属性


您可以在SOA模式中找到关于这种方法好处的好信息。

您已经用SOAP标记了这个问题-您将如何用浏览器来测试这个问题,因为SOAP通常会在请求和响应中包含XML?使用Web浏览器或curl来测试SOAP并不容易,您最好使用SOAPUI来创建测试和模拟。此外,在您的服务名称中,避免使用弱(一般)动词,如add或process,并使用强(特定)动词,如register、submit或create from business domain术语,如CreditCustomer、OnlineCustomer。在这方面,用例命名约定将很好地为您服务。