Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 模式/最佳实践参数WebService_Web Services_Design Patterns - Fatal编程技术网

Web services 模式/最佳实践参数WebService

Web services 模式/最佳实践参数WebService,web-services,design-patterns,Web Services,Design Patterns,我正在开发一个Web服务,希望以一种简单实用的方式让所有人都能用所有语言访问它。对于其中一个访问,我需要发送两条信息,一个令牌和一个XML 在本例中,我使用参数:String-String还是String-XmlDocument 换句话说,我的问题是,建议使用字符串参数是XML文档吗?您在这方面有什么经验?如果您打算将XML发送到web服务,那么您可能应该将其作为XML文档公开,以确保查看服务定义的人员了解需要传递的内容 也就是说,对于传统的SOAP服务,通常认为将XML blob作为参数是不好

我正在开发一个Web服务,希望以一种简单实用的方式让所有人都能用所有语言访问它。对于其中一个访问,我需要发送两条信息,一个令牌和一个XML

在本例中,我使用参数:String-String还是String-XmlDocument


换句话说,我的问题是,建议使用字符串参数是XML文档吗?您在这方面有什么经验?

如果您打算将XML发送到web服务,那么您可能应该将其作为XML文档公开,以确保查看服务定义的人员了解需要传递的内容


也就是说,对于传统的SOAP服务,通常认为将XML blob作为参数是不好的,因为它们不是自描述的,版本控制成为一场噩梦(您需要支持您的服务能够使用的XML文档的所有版本…因此,如果您每年更改两次,3年后您将有6种不同的XML文档格式需要支持)。

我一直使用字符串参数。 我认为,但我不确定序列化的xmldocument是否比xml数据本身大。
除此之外,我认为PHP应用程序不能调用需要XmlDocument的webservices。

如果您希望任何客户端都可以使用您的服务,那么传递XmlElement就不是一个好办法。这不会将任何信息放入WSDL中,客户端可以使用它来决定向您发送什么

而是传递一个简单的“数据传输对象”类。这将是一个没有行为的简单类,只有数据。例如:

public class PersonDTO
{
    public int ID {get;set;}
    public string Name {get;set;}
    public List<AddressDTO> Addresses {get;set;}
}

public class AddressDTO
{
    public string Line1 {get;set;}
    public string City {get;set;}
    public string PostalCode {get;set;}
}
public class PersonDTO
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共列表地址{get;set;}
}
公共类地址
{
公共字符串Line1{get;set;}
公共字符串City{get;set;}
公共字符串PostalCode{get;set;}
}

让您的webmethod接受其中一个作为参数,世界上几乎每一个客户端都可以使用它。

在C#应用程序中,建议使用XmlDocument或XmlElement?我将执行一些测试,感谢您分享经验和响应。@Ph:您最好使用XmlElement。使用XmlDocument时,XmlEleme而是使用nt。仔细想想,将一个XML文档嵌套在另一个XML文档中是没有意义的。@John Saunders是的,我正在阅读关于类之间关系的文章。我想到了这一点,为什么我创建了一个带有XmlDocument参数的web方法,以及何时使用它(参考)参数是XmlElement。谢谢。-1:如果您对某些内容不确定,那么我建议您在确定之前保留它。在这种情况下,您完全错了。但是我的数据在一个结构中,并且这个结构不是从web服务导入的。在客户端上,它创建了一个新的对象ArraOfT[StructObject]。因此,许多控件确实需要修改和处理信息。因此,我考虑在两端序列化对象。这将解决我的问题。因此,我考虑序列化对象,作为字符串或XmlDocument发送,获取它,然后再次序列化对象。@Ph:您的结构或其他类型永远不会“导入”从web服务。它就是不这样工作。请查看以了解为什么您的结构永远不会到达客户端。