日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
WCF動(dòng)態(tài)創(chuàng)建代碼正確實(shí)現(xiàn)方法分析

WCF是一個(gè)使用托管代碼以及面向服務(wù)的統(tǒng)一的應(yīng)用框架。那么它的出現(xiàn),給開發(fā)人員帶來了非常大的好處。在這里我們就先來給大家介紹一種比較簡(jiǎn)單的應(yīng)用技巧,WCF動(dòng)態(tài)創(chuàng)建代碼的相關(guān)實(shí)現(xiàn)方法。

目標(biāo)服務(wù)原型

 
 
 
  1. [ServiceContract]  
  2. public interface ICalculate  
  3. {  
  4. [OperationContract]  
  5. double Add(double a, double b);  
  6. }  
  7. public class CalculateService : ICalculate  
  8. {  
  9. public double Add(double a, double b)  
  10. {  
  11. return a + b;  
  12. }  

服務(wù)器代碼

 
 
 
  1. ServiceHost host = new ServiceHost(typeof(CalculateService));  
  2. host.AddServiceEndpoint(typeof(ICalculate), new BasicHttpBinding(),
     "http://localhost:8080/calc");  
  3. ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();  
  4. behavior.HttpGetEnabled = true;  
  5. behavior.HttpGetUrl = new Uri("http://localhost:8080/calc");  
  6. host.Description.Behaviors.Add(behavior);  
  7. host.Open(); 

我們創(chuàng)建了一個(gè) ServiceMetadataBehavior,只有這樣我們才能獲得 WSDL / MetaData。

WCF動(dòng)態(tài)創(chuàng)建代碼:

 
 
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.CodeDom;  
  5. using System.CodeDom.Compiler;  
  6. using System.IO;  
  7. using System.Reflection;  
  8. using System.ServiceModel;  
  9. using System.ServiceModel.Channels;  
  10. using System.ServiceModel.Description;  
  11. Uri uri = new Uri("http://localhost:8080/calc");  
  12. MetadataExchangeClient client = new MetadataExchangeClient
    (uri, MetadataExchangeClientMode.HttpGet);  
  13. MetadataSet metadata = client.GetMetadata();  
  14. WsdlImporter importer = new WsdlImporter(metadata);  
  15. CodeCompileUnit ccu = new CodeCompileUnit();  
  16. CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");  
  17. ServiceContractGenerator generator = new ServiceContractGenerator(ccu);  
  18. foreach (ContractDescription description in importer.ImportAllContracts())  
  19. {  
  20. generator.GenerateServiceContractType(description);  
  21. }  
  22. StringWriter writer = new StringWriter();  
  23. provider.GenerateCodeFromCompileUnit(ccu, writer, null);  
  24. string code = writer.ToString();  
  25. File.WriteAllText("proxy.cs", code, Encoding.Default); 

運(yùn)行上述代碼后,打開 proxy.cs,你看到了什么?好了,把這個(gè)文件加到客戶端項(xiàng)目中去就完成了WCF動(dòng)態(tài)創(chuàng)建代碼的操作。


網(wǎng)站題目:WCF動(dòng)態(tài)創(chuàng)建代碼正確實(shí)現(xiàn)方法分析
本文URL:http://www.dlmjj.cn/article/djchicc.html