我已经获得了一个WSDL文件和几个XSD文件来构建一个Web服务。现在,我正试图让它设置为接收请求并做出响应。
我对WebServices的体验仅限于带有asmx文件等的旧asp版本。
XSD文件中有很多信息,我不想手工构建这些类,我也不知道究竟是什么意思(我想象的只是一个xml)可序列化的课程,但没有考虑过它。)
我从哪里开始?我调查了WCF,但它对我来说完全陌生,所以我更倾向于使用旧式,但我很难找到有关如何设置或开始自动生成类的任何信息来自XSD文件。
我确实尝试了一下WCF,但是当我尝试生成WebService代码时,WSCF blue给了我错误(Cannot import wsdl:portType
)。并且svcutil.exe
会生成部分的XSD文件信息,但由于某种原因而不是全部。
所以有两个问题:
如何从XSD文件生成一些存根类以实现此目的
从WSDL生成WCF服务的教程/演练以及不使用wscf blue的多个XSD文件?
答案 0 :(得分:4)
假设您有一个WSDL,您可以执行以下操作。我的任务是在现有Web服务之上实现中间调度层。新服务应公开与原始服务相同的接口,但在内部执行不同的功能。请注意,我正在谈论"经典"这里的WCF服务(基于SOAP)。
步骤1:从WSDL
创建服务接口的代码wsdl.exe /si /out:<targetfolder> <url-to-wsdl>
这将生成一个.cs文件,其中包含接口和其他数据类型(用于传输对象)。请注意,此文件尚未准备好WCF,因为wsdl.exe似乎假设您要创建旧的.asmx服务。
第2步:将界面代码导入项目
将生成的文件添加到项目中。添加用于使接口及其操作准备好WCF的属性。您需要将[ServiceContract]添加到接口,并将[OperationContract]添加到操作。
第3步:创建WCF服务
创建WCF服务(.svc文件)并删除生成的接口。相反,使服务从生成的接口实现合同。现在,您可以实现新功能。
第4步:调整剩余的绑定,身份验证设置等以匹配原始网络服务。
答案 1 :(得分:1)
您可以使用svcutil.exe从wsdl和xsd文件为服务设置的客户端部分生成代理.cs类和app.config文件。
以下是一个cmd,它将从visual studio cmd行生成一个代理:
svcutil.exe c:\OutputFolder\ /o:serviceproxy.cs /config:app.config "C:\WSDL And XSD Folder\*.wsdl" "C:\WSDL And XSD Folder\*.xsd"
答案 2 :(得分:0)
这些可能会帮助您入门 - 如果您打算使用RESTful路线:
http://www.codeproject.com/Articles/571813/A-Beginners-Tutorial-on-Creating-WCF-REST-Services
http://msdn.microsoft.com/en-us/library/bb412178.aspx
http://nareshkamuni.blogspot.com/2011/12/window-communication-foundation-wcf-in.html
更深入 - http://www.thatindigogirl.com/ - 几年前的Michele Leroux Bustamante。
与其说是一次演练 - 但信息良好http://rest.elkstein.org/2008/02/what-is-rest.html