成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF初次操作實踐

開發 后端
本文將通過實現一個簡單的示例來對WCF有個直觀而淺顯的認識,希望對初次涉及WCF的朋友有所幫助。

  我們通過實現一個簡單的示例來對WCF有個直觀而淺顯的認識,希望對初次涉及WCF的朋友有所幫助。

  可以簡單地認為WCF程序分為4部分:契約、服務、宿主、客戶端。我們通過一個例子來逐步完成各部分,示例程序中,客戶端可以獲取一個信息列表,列表中每一項包括ID、值、讀值時刻、狀態、狀態變動時刻。這里我用的是VS2010。

  首先,創建一個空白解決方案WCFDemo。

  我們將在其中添加n個項目,分別實現契約、服務、宿主、客戶端。如果用VS2010新建“WCF服務庫”或者“WCF服務應用程序”,它會默認把契約和服務放在一個項目中,我們這個示例把契約和服務分別放在2個類庫項目中。

  第一步:契約

  1、添加一個類庫WCFDemo.Contracts。

  2、在類庫中添加2個文件DataContracts.cs和ServiceContracts.cs,分別放置數據契約和服務契約。

  3、添加引用System.Runtime.Serialization和System.ServiceModel。

  4、編寫代碼如下:

 

  1.   DataContracts.cs  
  2.   usingSystem;  
  3.   usingSystem.Runtime.Serialization;  
  4.   namespaceWCFDemo.Contracts  
  5.   {  
  6.   [DataContract]  
  7.  publicclassDemoData  
  8.   {  
  9.   [DataMember]  
  10.   publicintID { get;set;}  
  11.   [DataMember]  
  12.  publicdoubleValue { get;set;}  
  13.   [DataMember]  
  14.   publicDateTime ValueTime { get;set;}  
  15.   [DataMember]  
  16.   publicDeviceState State { get;set;}  
  17.  [DataMember]  
  18.  publicDateTime StateTime { get;set;}  
  19.  }  
  20.   publicenumDeviceState  
  21.   {  
  22.   Unknown,  
  23.   Working,  
  24.   Broken  
  25.   }  
  26.   } 

 

  (題外話:DemoData類中各個屬性的寫法有些偷懶,其實個人不建議這樣。這里是為了代碼簡單……)

 

  1.   ServiceContracts.cs  
  2.   usingSystem.Collections.Generic;  
  3.   usingSystem.ServiceModel;  
  4.   namespaceWCFDemo.Contracts  
  5.   {  
  6.   [ServiceContract]  
  7.   publicinterfaceIDemoService  
  8.   {  
  9.   [OperationContract]  
  10.   List<DemoData> GetMonitorData();  
  11.   }  
  12.   } 

 

  第二步:服務

  1、添加一個類庫WCFDemo.Services。

  2、在類庫中加入一個文件Services.cs用來放置實現服務的類。

  3、添加引用WCFDemo.Contracts。

  4、編寫代碼如下:

 

  1.   usingSystem;  
  2.   usingSystem.Collections.Generic;  
  3.   usingWCFDemo.Contracts;  
  4.   namespaceWCFDemo.Services  
  5.  {  
  6.   publicclassDemoService : IDemoService  
  7.   {  
  8.   Random random = newRandom();  
  9.   publicList<DemoData> GetMonitorData()  
  10.   {  
  11.   List<DemoData> r = newList<DemoData>();  
  12.   r.Add(newDemoData() { ID = 1, Value = random.Next(100), ValueTime = DateTime.Now, State = DeviceState.Unknown, StateTime = DateTime.Now });  
  13.   r.Add(newDemoData() { ID = 2, Value = random.Next(100), ValueTime = DateTime.Now, State = DeviceState.Working, StateTime = DateTime.Now });  
  14.   r.Add(newDemoData() { ID = 3, Value = random.Next(100), ValueTime = DateTime.Now, State = DeviceState.Broken, StateTime = DateTime.Now });  
  15.   returnr;  
  16.   }  
  17.   }  
  18.   } 

 

  (題外話:第一步時說過DemoData的偷懶寫法。如果DemoData中針對每個屬性定義私有字段,并提供帶參數的構造函數,構造函數中對字段賦值而不是對屬性賦值,那么每個DemoData實例化時比這里的示例代碼效率高。)

  到這里,服務和契約已經完成。

  剩下的就是宿主如何對外提供服務和客戶端如何享受服務了,我們先使用最最簡單的方式來實現。

  我們先以最簡單的方式來實現宿主和客戶端:直接引用契約和服務項目、采用硬編碼的方式。

  第三步:宿主

  1、添加一個Windows窗體應用程序WCFDemo.Host.WithoutConfig。

  2、添加引用System.ServiceModel。

  3、引用之前的兩個項目。

  4、在窗體放置兩個Button和一個Label,并編寫代碼如下:

 

  1.   usingSystem;  
  2.   usingSystem.Windows.Forms;  
  3.   usingSystem.ServiceModel;  
  4.   usingWCFDemo.Services;  
  5.   usingWCFDemo.Contracts;  
  6.   namespaceWCFDemo.Host.WithoutConfig  
  7.   {  
  8.   publicpartialclassHostForm : Form  
  9.   {  
  10.   publicHostForm()  
  11.   {  
  12.   InitializeComponent();  
  13.   }  
  14.   ServiceHost host;  
  15.   privatevoidbutton1_Click(objectsender, EventArgs e)  
  16.   {  
  17.   host = newServiceHost(typeof(DemoService));  
  18.   host.AddServiceEndpoint(typeof(IDemoService), newBasicHttpBinding(), "http://localhost:5678/DemoService");  
  19.   host.Opened += delegate{ label1.Text = "服務啟動";};  
  20.   host.Open();  
  21.   }  
  22.   privatevoidbutton2_Click(objectsender, EventArgs e)  
  23.   {  
  24.   if(host != null&&host.State == CommunicationState.Opened)  
  25.   {  
  26.   host.Closed += delegate{ label1.Text = "服務停止";};  
  27.   host.Close();  
  28.   }  
  29.   }  
  30.   }  
  31.   } 

 

  第四步:客戶端

  1、添加一個Windows窗體應用程序WCFDemo.Client.WithoutConfig。

  2、添加引用System.ServiceModel。

  3、引用之前契約項目。

  4、在窗體放置一個Button和一個DataGridView,并編寫代碼如下:

 

  1.   usingSystem;  
  2.   usingSystem.Windows.Forms;  
  3.   usingSystem.ServiceModel;  
  4.   usingWCFDemo.Contracts;  
  5.   namespaceWCFDemo.Client.WithoutConfig  
  6.   {  
  7.   publicpartialclassClientForm : Form  
  8.   {  
  9.   publicClientForm()  
  10.   {  
  11.   InitializeComponent();  
  12.   }  
  13.   privatevoidbutton1_Click(objectsender, EventArgs e)  
  14.   {  
  15.   using(ChannelFactory<IDemoService> f = newChannelFactory<IDemoService>(newBasicHttpBinding(), "http://localhost:5678/DemoService"))  
  16.   {  
  17.   dataGridView1.DataSource = f.CreateChannel().GetMonitorData();  
  18.   }  
  19.   }  
  20.   }  
  21.   } 

 

  到這里,已經完成了一個最簡單的WCF程序,也涉及到了WCF的基本概念:終結點、ABC(地址、綁定、契約)……。

  這個示例很簡單(甚至簡陋,而且編碼風格和習慣也不好 ),只是用來初識WCF,要做的還有很多。

原文鏈接:http://www.cnblogs.com/Higel/archive/2011/12/26/2301835.html

【編輯推薦】

  1. 5月最新超有趣的免費jQuery插件推薦
  2. 從零開始學習jQuery之管理jQuery包裝集
  3. jQuery性能指標和調優
  4. 手把手教你jQuery jqPlot畫圖插件
  5. 從零開始學習jQuery之萬能的選擇器
責任編輯:彭凡 來源: 博客園
相關推薦

2010-02-22 13:56:35

WCF服務契約

2010-03-01 15:27:35

WCF分布操作

2009-11-09 13:12:14

WCF事物操作

2009-12-22 19:06:51

WCF自承載

2010-03-01 15:08:05

WCF單向操作

2009-11-09 13:47:22

WCF Stream操

2009-12-21 15:12:40

WCF操作Stream

2010-03-01 10:12:54

WCF異步操作

2010-02-23 17:59:52

WSIT連接WCF

2010-03-01 16:31:58

WCF實現SOA

2009-11-05 16:21:51

WCF服務

2009-11-06 16:35:56

WCF Stream對

2010-02-26 09:33:18

WCF創建WebSer

2010-03-01 15:51:01

WCF限流

2010-02-22 15:13:04

WCF分布式事務

2009-12-21 11:19:50

WCF配置文件

2009-12-07 14:35:42

WCF異步調用

2010-02-24 13:06:27

WCF使用Nhiber

2010-03-02 09:39:11

保護WCF服務

2010-03-02 16:15:59

WCF控制事務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品成人佐山爱一区二区 | 国产精品日日摸夜夜添夜夜av | 久草免费电影 | 综合另类 | 日韩欧美手机在线 | 国产精品综合色区在线观看 | 亚洲国产精品一区在线观看 | 亚洲精品久久久久久一区二区 | 欧美一区二区在线观看视频 | 日韩高清一区二区 | 天天躁人人躁人人躁狂躁 | 国产免费a视频 | 日韩一区二区三区在线看 | 中文字幕影院 | 在线观看国产视频 | 欧美日韩一本 | 日韩在线观看中文字幕 | 91精品久久久久久久久 | 精品久久久久国产免费第一页 | 精品国产一区二区三区久久影院 | 成人欧美一区二区三区1314 | 天堂资源最新在线 | 久久福利 | www.久久精品| 久久av网| 亚洲天堂精品一区 | 日韩精品免费 | 国产精品夜夜夜一区二区三区尤 | 在线激情视频 | 国产精品18hdxxxⅹ在线 | 超碰人人做 | 久久国产精品免费一区二区三区 | 精品久久久网站 | 精品一区二区视频 | 日韩视频―中文字幕 | 成人精品一区二区 | 97色在线视频 | 日韩精品一区二区三区视频播放 | 成av在线 | 亚洲综合区| 日韩欧美在线观看 |