1. 程式人生 > >WCF的簡單例項

WCF的簡單例項

以訂票為例簡單應用wcf程式,需要的朋友可以參考下

申明:

本篇為轉載,寫部落格只是本人的興趣愛好,而且也是記錄學習的一種好的方法,經過本人測試,本部落格真實有效,本人是個小菜鳥,但是學一行愛一行,有時候看一下不妨自己敲一邊,還能給人帶來一種成就感以及提升對學習的熱愛,所以愛學習的小夥伴動起來吧。

本文轉自百度文件

以訂票為例簡單應用wcf 

新建一個wcf服務應用程式

在IService1.cs定義服務契約

  1. namespace WcfDemo   
  2. {   
  3. // 注意: 如果更改此處的介面名稱 "IService1",也必須更新 Web.config 中對 "IService1" 的引用。 
  4. [ServiceContract] // 服務合同 即提供服務的介面或類 
  5. publicinterface IService1   
  6. {   
  7. [OperationContract]   
  8. /* 增加車票的方法*/
  9. void AddTicket(int count);   
  10. [OperationContract]   
  11. /*購買車票的方法*/
  12. int BuyTickets(int Num);   
  13. [OperationContract] //服務契約 即提供服務的實現方法 
  14. /*查詢車票的方法*/
  15. int GetRemainingNum();   
  16. // 任務: 在此處新增服務操作 
  17. }   
  18. // 使用下面示例中說明的資料約定將複合型別新增到服務操作。 
  19. [DataContract] //資料契約 
  20. publicclass Ticket   
  21. {   
  22. bool boolCount = true;//判斷是否還有車票 
  23. int howmany = 10;//還有多少車票 
  24. [DataMember]   
  25. /*判斷是否還有票*/
  26. publicbool BoolCalue   
  27. {   
  28. get
  29.             {  
  30.                 if (HowMany > 0)  
  31.                 {  
  32.                     boolCount = true;  
  33.                 }  
  34.                 else
  35.                 {  
  36.                     boolCount = false;  
  37.                 }  
  38.                 return boolCount;   
  39.             }  
  40. }   
  41. [DataMember]   
  42. /*返回票數*/
  43. publicint HowMany   
  44. {   
  45. get { return howmany; }   
  46. set { howmany = value;}   
  47. }   
  48. }   
  49. }   

在Service1.svc中實現契約服務
  1. namespace WcfDemo   
  2. {   
  3. // 注意: 如果更改此處的類名“Service1”,也必須更新 Web.config 和關聯的 .svc 檔案中對“Service1”的引用。 
  4. publicclass Service1 : IService1   
  5. {   
  6. Ticket T=new Ticket();   
  7. /*實現新增票數的方法*/
  8. publicvoid AddTicket(int count)   
  9. {   
  10. T.HowMany=T.HowMany+count;   
  11. }   
  12. /*實現返回票數的方法*/
  13. publicint GetRemainingNum()   
  14. {   
  15. return T.HowMany;   
  16. }   
  17. /*實現購買車票的方法*/
  18. publicint BuyTickets(int Num)   
  19. {   
  20. if (T.BoolCalue)   
  21. {   
  22. T.HowMany = T.HowMany - Num;   
  23. return 1;   
  24. }   
  25. else
  26. {   
  27. return 0;   
  28. }   
  29. }   
  30. }   
  31. }   

編譯後生成WcfDemo.dll

新增宿主程式用於監測服務 

新增WinForm專案加入解決方案 
介面如下圖:

介面上兩個按鈕: 
啟動服務按鈕: 用於啟動wcf服務 
停止服務按鈕: 用於停止wcf服務 
Label: 用於顯示服務相關資訊 
後臺程式碼為: 
應用名稱空間 using System.ServiceModel; 
新增引用 wcf服務生成的dll檔案 WcfDemo.dll

  1. public partial class Form1 : Form   
  2. {   
  3. public Form1()   
  4. {   
  5. InitializeComponent();   
  6. }   
  7. ServiceHost host = null;//定義 ServiceHost 
  8. privatevoid button1_Click(object sender, EventArgs e)   
  9. {   
  10. host = new ServiceHost(typeof(WcfDemo.Service1));//WcfDemo.Service1 為引用的dll中的服務 
  11. host.Open();//啟動服務 
  12. this.label1.Text = "服務已啟動";   
  13. }   
  14. privatevoid button2_Click(object sender, EventArgs e)   
  15. {   
  16. if (host.State != CommunicationState.Closed)//判斷服務是否關閉 
  17. {   
  18. host.Close();//關閉服務 
  19. }   
  20. this.label1.Text = "服務已關閉";   
  21. }   
  22. }   

接下來配置app.config
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <configuration>
  3. <system.serviceModel>
  4. <services><!--新增服務-->
  5. <servicename="WcfDemo.Service1"behaviorConfiguration="CalculatorServiceBehavior">
  6. <!--name 必須與程式碼中的host例項初始化的服務一樣   
  7. behaviorConfiguration 行為配置 -->
  8. <host>
  9. <baseAddresses>
  10. <!--新增呼叫服務地址-->
  11. <addbaseAddress="http://localhost:8000/"/>
  12. </baseAddresses>
  13. </host>
  14. <!--新增契約介面 contract="WcfDemo.IService1" WcfDemo.IService1為契約介面 binding="wsHttpBinding" wsHttpBinding為通過Http呼叫-->
  15. <endpointaddress=""binding="wsHttpBinding"contract="WcfDemo.IService1"></endpoint>
  16. </service>
  17. </services>
  18. <!--定義CalculatorServiceBehavior的行為-->
  19. <behaviors>
  20. <serviceBehaviors>
  21. <behaviorname="CalculatorServiceBehavior">
  22. <serviceMetadatahttpGetEnabled="true"/>
  23. <serviceDebugincludeExceptionDetailInFaults="false"/>
  24. </behavior>
  25. </serviceBehaviors>
  26. </behaviors

    相關推薦

    .net WCF簡單例項

    最近看到網上招聘有許多都需要WCF技術的人員,我之前一直沒接觸過這個東西,以後工作中難免會遇到,所謂笨鳥先飛,於是我就一探究竟,便有了這邊文章。由於是初學WCF沒有深入研究其原理,只是寫了一個demo留著以後,如果哪裡寫的不對希望大佬們能指出批評。個人認為WCF類似於Web

    【5】.net WCF 簡單例項

    1.建立WCF專案 2.系統自動生成IWcfService // 注意: 使用“重構”選單上的“重新命名”命令,可以同時更改程式碼和配置檔案中的介面名“IService1”。 [ServiceContract] public interface

    WCF簡單例項

    以訂票為例簡單應用wcf程式,需要的朋友可以參考下申明: 本篇為轉載,寫部落格只是本人的興趣愛好,而且也是記錄學習的一種好的方法,經過本人測試,本部落格真實有效,本人是個小菜鳥,但是學一行愛一行,有時候看一下不妨自己敲一邊,還能給人帶來一種成就感以及提升對學習的熱愛,所以愛

    WCF duplex 簡單例項

    1.定義兩個介面 //客戶端呼叫 [ServiceContract(CallbackContract = typeof(IContractCallback))] public interfac

    WCF簡單使用(分別部署在控制臺和IIS上)

    啟動項 找到 utf col 調用服務 cti 圖片 pub console WCF部署到控制臺 1.下面通過一個簡單的服務示例來認識WCF1.新建項目,名稱IBLL,解決方案名稱WcfDemo,模板選擇類庫2.修改Class1.cs文件名稱為 IUserInfoSe

    S2SH簡單例項註解版——登入功能實現

    第一步:Spring4 整合 Hibernate4 Spring4 接管 Hibernate4 所有 Bean 例項,以及 SessionFactory,事務管理器; 泛型注入; Entity  package com.java1234.entity; import j

    簡單知識點例項之三:Bootstrap-Table和後臺進行百分百互動的簡單例項

    這是一個針對前後臺互動的例子,可以直接套進專案中通暢執行。第二頁之所以資料不對,是因為例子畢竟沒有真正的後臺,所以資料不對。但是可以套入專案中,就正常了。 重點: 其中bootstrap-table有一個search:truse搜尋框的引數我沒有使用,而是自己寫了一個搜尋框,

    express-session 簡單例項

    express-session 例項 app.js var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); v

    qt拖拽事件簡單例項

    話不多說直接上程式碼,一看就懂 注意:當使用管理員許可權執行qt creator時,程式可能無法檢測到拖拽事件! widget.h  檔案 class Widget : public QWidget { Q_OBJECT public: explicit

    Vue.js + Vue Router簡單例項

    Vue.js + Vue Router簡單例項 使用 Vue.js ,我們已經可以通過組合元件來組成應用程式,當你要把 Vue Router 新增進來,我們需要做的是,將元件 (components) 對映到路由 (routes),然後告訴 Vue Router 在哪裡渲染它們。 1

    WPF 路由事件簡單例項

    在Winform窗體中,新增一個按鈕然後雙擊按鈕就可以在.cs程式碼自動生成有關事件的程式碼,這就是一個簡單的事件模型,但是如果對於大型的設計介面,數量過多的控制元件通過每次都生成相關的時間程式碼,將是一個好大的時間與控制元件的浪費,如何解決這個問題,可以用路由事件解決(通俗籠統的解釋,詳解自行查閱

    使用scala基於AKKA HTTP開發REST介面的簡單例項

    一般情況下會使用SpringMVC開發REST介面,但是公司主開發語言是scala,因此採用AKKA HTTP(spray已經不再維護)來開發REST介面,具體可參看官網文件:AKKA HTTP 本文依據官網開發REST介面,具體如下: 開發環境:IDEA,MAVEN,SCALA

    Keras 使用自己的資料分類,並使用tensorboard記錄的簡單例項

    Keras 使用自己的資料分類,並使用tensorboard記錄的簡單例項 1.使用的分類圖片按照不同類別儲存在不同資料夾子中,並且切分好訓練集和測試集,如下圖顯示 注意:檔名建議使用標籤名 from keras.models import Sequential import

    LTE關鍵技術之一:OFDMA(OFDM基本原理及簡單例項應用)

           OFDM即正交頻分複用(Orthogonal Frequency Division Multiplexing),是多載波調製的一種,通俗來說就是通過多條互相沒有關係的通道傳輸不同的資訊。OFDM現在主要用於4G通訊上

    JSON簡單例項

    var a= { "_id" : 1, "name" : "abc", "age" : 13, "color" : "WHITE", "birthday" : "2000-12-10" } { "_id" : 2, "name" : "ed

    關於Java中timer的一個簡單例項應用

    效果展示 核心程式碼: Timer timer = new Timer();//新增定時器 timer.schedule( new TimerTask(){//重寫定時任務 public void run(){ button2.setText("取消"+S

    JSON的簡單例項

      JSON全稱是JavaScript Object Notation(JavaScript物件表示法),是一種儲存與交換文字資訊的語法,類似與XML,但 比 XML 更小、更快,更易解析。   理論就不多說了,直接上程式碼 <!DOCTYPE html> <htm

    詳解Scala集合類之陣列的語法格式以及簡單例項

    簡介 Scala 語言中提供的陣列是用來儲存固定大小的同類型元素。宣告陣列是宣告一個就像numbers這樣的變數,然後使用 numbers[0]、numbers[1]、…、numbers[99] 來表示一個個單獨的變數。陣列中某個指定的元素是通過索引來訪問的。 陣列的第一個元素索引為0,最

    Kafka學習(三)簡單例項(可以簡單做測試)

    java客戶端連線kafka簡單測試 本案例kafka版本是kafka_2.11-0.9.0.1,用java來實現kafka生產者、消費者的示例  在測試的過程中遇到的特別的問題以及解決辦法,其他小問題就不一一列舉了。 1 . 使用kafka-clients進行測試,maven依賴

    HTML下拉選擇 簡單例項 新增刪除節點到另一個節點下

     下拉選擇 簡單例項   <html> <head> <title>HTML</title> <style type="text/css"> </style> </h