WCF动态创建代码正确实现方法分析

WCF是一个使用托管代码以及面向服务的统一的应用框架。那么它的出现,给开发人员带来了非常大的好处。在这里我们就先来给大家介绍一种比较简单的应用技巧,WCF动态创建代码的相关实现方法。

目标服务原型

 
 
 
  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. }  

服务器代码

 
 
 
  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(); 

我们创建了一个 ServiceMetadataBehavior,只有这样我们才能获得 WSDL / MetaData。

WCF动态创建代码:

 
 
 
  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); 

运行上述代码后,打开 proxy.cs,你看到了什么?好了,把这个文件加到客户端项目中去就完成了WCF动态创建代码的操作。

当前题目:WCF动态创建代码正确实现方法分析
本文URL:http://www.shufengxianlan.com/qtweb/news5/362755.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联