自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF動(dòng)態(tài)創(chuàng)建代碼正確實(shí)現(xiàn)方法分析

開發(fā) 開發(fā)工具
我們?cè)谶@篇文章中,通過(guò)一個(gè)簡(jiǎn)單的代碼示例來(lái)為大家詳細(xì)介紹了WCF動(dòng)態(tài)創(chuàng)建代碼的實(shí)現(xiàn)方法,相信朋友們可以從中獲得一些幫助。

WCF是一個(gè)使用托管代碼以及面向服務(wù)的統(tǒng)一的應(yīng)用框架。那么它的出現(xiàn),給開發(fā)人員帶來(lái)了非常大的好處。在這里我們就先來(lái)給大家介紹一種比較簡(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)建代碼的操作。

【編輯推薦】

  1. WCF tcpTrace實(shí)現(xiàn)功能淺析
  2. WCF單向協(xié)定基本創(chuàng)建步驟解析
  3. WCF返回自定義格式具體應(yīng)用技巧詳解
  4. WCF響應(yīng)服務(wù)基本應(yīng)用技巧分享
  5. WCF排隊(duì)調(diào)用由NetMsmqBinding支持
責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-02-26 11:22:16

LitwareHR使用

2010-02-25 16:52:12

引用WCF服務(wù)

2010-02-25 09:13:34

WCF異步調(diào)用

2010-02-25 10:10:29

WCF使用Header

2010-02-24 10:07:48

WCF跨越邊界

2010-02-26 08:59:10

WCF服務(wù)宿主程序

2009-12-21 10:09:26

WCF創(chuàng)建客戶端服務(wù)對(duì)

2010-02-24 13:48:44

MSMQ使用WCF

2010-02-24 10:41:28

WCF服務(wù)保護(hù)

2010-01-22 13:08:50

VB.NET創(chuàng)建數(shù)組

2010-02-26 10:30:03

ASP.NET Aja

2010-03-04 11:12:02

Python AOP

2010-02-22 14:28:35

WCF實(shí)現(xiàn)loadin

2010-03-03 17:10:57

Python操作Sql

2010-01-06 15:56:18

.Net Framew

2009-12-15 14:09:39

Ruby創(chuàng)建可參數(shù)化類

2010-03-05 16:51:01

Python程序轉(zhuǎn)為E

2009-12-08 14:10:55

Silverlight

2010-05-10 16:25:15

Oracle組件

2010-01-14 17:52:54

VB.NET顯示系統(tǒng)信
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)