webservice 調用與生成的過程,其實都非常簡單,有人說,現在都說改用WCF了。要我說啊,WCF是微軟典型的敗筆而已,明明有webapi方便、簡繁、快捷。
俺在這裏寫寫,只是爲了記錄一下,歲數大很容忘記東西,但凡高手直接繞過就好了。
這個東西好像是大象裝冰箱分,也就是1和2嘛
1.生成客戶端代碼調用webservice代碼
wsdl E:\WS.wsdl /out:WS.cs
這個生成代碼和引用方式生成的代碼幾乎一樣,代碼這裏就不賣弄了。這麼幹的理由也就是可以少一個引用動作而已。似乎有點先進性的感覺。
2.反過來生成服務端
wsdl /si C:\webserver.wsdl /out:D:\
服務端代碼當然是一個接口,大概如下
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
//
// 此源代碼由 wsdl 自動生成, Version=4.0.30319.17929。
//
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.17929")]
[System.Web.Services.WebServiceBindingAttribute(Name="webserver", Namespace="http://localhost:8080/webserver.wsdl")]
[System.Xml.Serialization.SoapIncludeAttribute(typeof(WebSoeInfo))]
[System.Xml.Serialization.SoapIncludeAttribute(typeof(VarValue))]
public interface IWebserver {
/// <remarks/>
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="urn:scada", ResponseNamespace="urn:scada")]
[return: System.Xml.Serialization.SoapElementAttribute("result")]
int UserLogin(string username, string password);
/// <remarks/>
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="urn:scada", ResponseNamespace="urn:scada")]
[return: System.Xml.Serialization.SoapElementAttribute("result")]
VarValue[] ReadVarValue(string varNameList);
/// <remarks/>
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="urn:scada", ResponseNamespace="urn:scada")]
[return: System.Xml.Serialization.SoapElementAttribute("result")]
int WriteVarValue(string varName, int waitTime, string value);