這不是一篇教你瞭解WebService的博文,也不是對WebService的深刻理解, 這是一篇教你在開發過程當中,若是動態的調用WebService一個方法.web
1 public partial class Component1 : Component 2 { 3 public Component1() 4 { 5 InitializeComponent(); 6 } 7 8 public Component1(IContainer container) 9 { 10 container .Add(this ); 11 12 InitializeComponent(); 13 } 14 }
1 [ WebServiceBinding (Namespace = "http://tempuri.org/" )] 2 public class Component1 : SoapHttpClientProtocol 3 { 4 public Component1() 5 { 6 InitializeComponent(); 7 } 8 9 public Component1(IContainer container) 10 { 11 container . Add(this ); 12 13 InitializeComponent(); 14 } 15 }
SoapHttpClientProtocol SoapHttpClientProtocol類能夠直接訪問指定的webService的指定方法若要與 XML Web services 通訊,請爲要調用的 XML Web services 建立一個間接或直接從 WebClientProtocol 派生的代理類。 能夠不用手動建立代理類,而使用 Web 服務描述語言工具 (Wsdl.exe) 爲給定 XML Web services 的服務說明建立代理類。 當爲 SOAP 協議生成代理類時,對 XML Web services 方法的同步調用經過 Invoke 方法進行,而異步調用經過 BeginInvoke 方法和 EndInvoke 方法進行。
1 <add key="ServiceAddress" value="http://localhost:7340/CourseMakerService.asmx" />
在咱們添加的Conponent Class 構造中調用服務器連接地址服務器
1 public Component1( string serviceUrl) 2 { 3 if (serviceUrl. Equals( "UpdateServiceAddress" )) 4 base .Url = ConfigurationManager . AppSettings["UpdateServiceAddress" ]; 5 else 6 base .Url = ConfigurationManager . AppSettings["ServiceAddress" ]; 7 }
而後當咱們想要調用WebService中的方法時,只須要在Component1類中寫. 若是個人調用方式異步
1 [ WebServiceBinding(Namespace = "http://tempuri.org/" )] 2 public class OffLineLearingClient : SoapHttpClientProtocol 3 { 4 public OffLineLearingClient( string serviceUrl) 5 { 6 if (serviceUrl. Equals( "UpdateServiceAddress" )) 7 base .Url = ConfigurationManager . AppSettings["UpdateServiceAddress" ]; 8 else 9 base .Url = ConfigurationManager . AppSettings["ServiceAddress" ]; 10 } 11 public OffLineLearingClient() 12 { 13 base .Url = ConfigurationManager . AppSettings["ServiceAddress" ]; 14 } 15 [ SoapDocumentMethod ] 16 public YHBJUser GetUser( YHBJUser user) 17 { 18 return base . Invoke("GetUser" , new object [] { user })[0 ] as YHBJUser ; 19 } 20 21 [ SoapDocumentMethod ] 22 public List < YHBJClass> GetTrainings11( string userId) 23 { 24 return base . Invoke("GetTrainings11" , new object [] { userId })[0 ] as List <YHBJClass > ; 25 }
這樣咱們就能夠動態的實現若是調用WebService了.工具