Xml VB.Net虚拟机Web服务

Xml VB.Net虚拟机Web服务,xml,vb.net,web-services,Xml,Vb.net,Web Services,(编辑后添加了一个示例,希望能让它更清晰) 我主要是一名VB6开发人员,但目前正在尝试使用VB.Net编写一个web服务,以允许我们的产品和第三方之间的通信。第三方软件将调用我们的web服务来更新各种数据 我已经阅读了关于如何实现这一点的各种内容,并成功地生成了一个原型web服务。我现在关心的是如何正确地做到这一点。我们的客户希望我们为我们的web服务提供WSDL和XSD,这样他们就可以在他们的终端实现它,所以我想确保我得到了正确的结果。因此,我有以下假设/问题: web服务将接收应更新的各种字

(编辑后添加了一个示例,希望能让它更清晰)

我主要是一名VB6开发人员,但目前正在尝试使用VB.Net编写一个web服务,以允许我们的产品和第三方之间的通信。第三方软件将调用我们的web服务来更新各种数据

我已经阅读了关于如何实现这一点的各种内容,并成功地生成了一个原型web服务。我现在关心的是如何正确地做到这一点。我们的客户希望我们为我们的web服务提供WSDL和XSD,这样他们就可以在他们的终端实现它,所以我想确保我得到了正确的结果。因此,我有以下假设/问题:

web服务将接收应更新的各种字段。为了保持灵活性,我认为这可以是单个XML参数。我猜这就是为什么我们的客户想要XSD。这个假设正确吗?传递XML输入参数是一种好的做法吗

我创建了一个简单的类,其中包含一个应该更新的字段示例(Title、Address1、Address2等等),然后使用XSD.Exe从中生成一个XSD。这让我思考——我的输入参数应该是这个类的实例,而不是基于XSD的XML文档吗

例如,要更新的字段与客户端数据相关。有许多可能的字段可以更新,但一次可能只更新少数字段。显然,我不希望每个可能的字段都有40个参数的方法,我还被要求只提供一个方法。因此,我的想法是使用一个参数来命名要更新的字段及其值。对这个参数使用XML似乎是明智的。关于客户机对XSD的请求,我的假设是为了确保XML参数只包含有效字段。但同时,我使用VisualStudio基于我创建的示例类生成了一个XSD。但现在我不确定哪种方法最好,即:

a) XML:cliData作为XML.XmlDocument:出现在WSDL中,但如何生成XSD以确保XML有效?手动

b) Class:cliData作为ClientData:在WSDL中序列化,因此每个字段显示为单独的元素。大概不需要XSD,但我不认为这给了我只包含几个字段的选项,这不等于有大量的参数吗

c) String:cliData As String:传入某种类型的字符串,手动分解,但不进行验证

我最初计划返回web服务的状态(例如“OK”或一些失败消息),尽管我在其他地方看到了SOAP错误的引用。有一些链接指向一篇讨论此问题的MSDN文章,但链接似乎已断开!有人对此有什么建议吗

如果有人在别处问我这些问题,我深表歉意——我浏览了这个网站,也浏览了整个互联网,但是信息太多了,结果我的问题多于答案

谢谢,
奥利

听起来你真的让你的生活变得比你不得不做的更复杂了。ASP.NET将为您处理web服务的所有脏活。老实说,我不确定XSD的用途。我只想在web服务上创建一个方法,该方法将字符串作为参数或自定义类。ASP.NET Web服务或WCF服务将为您处理序列化。请查看msdn站点以开始此操作

我使用过接受XML字符串作为输入的服务,发现这比一组带参数的方法调用更麻烦。如果您在服务中收到一个XML字符串,您必须解析它才能得到值。我发现用所需的参数编写一个或多个方法更容易


我假设你的客户不会使用.NET调用你的Web服务。如果他们愿意,您可以使用wsdl.exe为他们生成代理

太灵活是错误的。服务应该做服务应该做的事情。如果以后需求发生变化,那么向服务中添加一个新操作,或者更好的是,添加一个新版本的服务——这样做既便宜又容易

而且,如果你刚刚开始,那么在过去开始是没有意义的。直接转到WCF,不要关注ASMX web服务,这是过时的第二个最好的东西——对它们进行的增强(如果有的话)很少,可能只有关键的安全修复


此外,基本WCF更简单。此外,在很大程度上,您为简单案例编写的代码在以后可能出现的更复杂的案例中也可以使用,几乎没有更改或没有更改。

XSD将是用于序列化自定义类的模式。。。。假设是一个非.Net客户端,也就是说。我的理解是XSD也是用于此目的的。谢谢-使用自定义类肯定是最好的方法。我没有意识到ASP.NET使它变得如此简单,所以我甚至不需要传递所有属性。WCF在这里不是一个选项,因为它不会安装在任何机器上。