国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - WCF實現的計算器功能實例

WCF實現的計算器功能實例

2022-01-10 14:06傻丫頭與科技 C#

這篇文章主要介紹了WCF實現的計算器功能,結合具體實例形式較為詳細的分析了WCF實現計算器功能的具體步驟與相關操作技巧,需要的朋友可以參考下

本文實例講述了wcf實現的計算器功能。分享給大家供大家參考,具體如下:

對于wcf,我們有了前面的理論基礎,今天通過一個計算器的實例主要給大家講解怎么一步一步地創建一個完整的wcf應用。

一、創建整個解決方案

calculator.service:一個類庫項目,定義服務契約(service contract),應用system.servicemodel程序集;提供對wcf服務的實現。
calculator.host:一個windows窗體應用程序,實現對定義在calculator.service項目中的服務的寄宿,該項目需要引用calculator.service項目和system.servicemodel程序集。
calculator.client:一個windows窗體應用程序模擬服務的客戶端,該項目應用system.servicemodel程序集。

WCF實現的計算器功能實例

二、創建服務契約

一般,我們通過接口的形式定義服務契約。通過下面的代碼,將一個接口icalculator定義成服務契約。我們通過在接口上應用system.servicemodel.servicecontractattribute特性將一個接口定義成服務契約。

將接口定義成服務契約后,接口的方法成員并不能自動成為服務的操作。我們需要在相應的操作方法上面顯式地應用operationcontractattribute特性。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.servicemodel;
namespace calculator.service
{
  [servicecontract]
  public interface icalculator
  {
    [operationcontract]
    double add(double x, double y);
    [operationcontract]
    double subtract(double x, double y);
    [operationcontract]
    double multiply(double x, double y);
    [operationcontract]
    double divide(double x, double y);
  }
}

三、創建服務

當服務契約創建成功后,我們需要通過實現服務契約來創建具體的wcf服務,wcf服務calculatorservice實現了服務契約的接口icalculator,實現了所有的服務操作。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace calculator.service
{
  public class calculatorservice:icalculator
  {
    public double add(double x, double y)
    {
      return x + y;
    }
    public double subtract(double x, double y)
    {
      return x - y;
    }
    public double multiply(double x, double y)
    {
      return x * y;
    }
    public double divide(double x, double y)
    {
      return x / y;
    }
  }
}

四、通過自我寄宿的方式寄宿服務

服務寄宿的目的就是開啟一個進程,為wcf服務提供一個運行的環境。通過為服務添加一個或多個中級誒單,使之暴露給潛在的服務消費者。服務消費者最終通過相匹配的終結點對該服務進行調用。我們完全可以通過代碼的方式完成所有的服務寄宿工作。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using calculator.service;
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.servicemodel;
using system.servicemodel.description;
using system.text;
using system.windows.forms;
namespace calculator.host
{
  public partial class form1 : form
  {
    public form1()
    {
      initializecomponent();
    }
    servicehost host = null;
    private void btnopen_click(object sender, eventargs e)
    {
      host = new servicehost(typeof(calculatorservice));
      host.addserviceendpoint(typeof(icalculator), new wshttpbinding(), "http://localhost:8008/calculator");
      if (host.description.behaviors.find<servicemetadatabehavior>()==null)
      {
        servicemetadatabehavior behavior = new servicemetadatabehavior();
        behavior.httpgetenabled = true;
        behavior.httpgeturl = new uri("http://localhost:8008/calculator/metadata");
        host.description.behaviors.add(behavior);
      }
      host.opened += delegate { label1.text = "服務已經啟動!"; };
      host.open();
    }
    private void btnclose_click(object sender, eventargs e)
    {
      if (host.state != communicationstate.closed)
      {
        host.closed += delegate { label1.text = "服務已經停止!"; };
        host.close();
      }
    }
  }
}

WCF實現的計算器功能實例

五、創建客戶端調用服務

服務被成功寄宿后,服務端便開始了服務調用請求的監聽工作。此外,服務寄宿將服務描述通過元數據的形式發布出來,相應的客戶端就可以獲取這些元數據,創建愛你客戶端程序進行服務的消費。在vs下,當我們添加服務引用的時候,vs在內部幫我們實現元數據的獲取,并借組這些元數據通過代碼生成工具自動生成用于服務調用的服務代理相關代碼和相應的配置。

WCF實現的計算器功能實例

我們可以創建calculatorclient對象,執行相應方法調用服務操作。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
namespace calculator.client
{
  public partial class form1 : form
  {
    public form1()
    {
      initializecomponent();
    }
    private void form1_load(object sender, eventargs e)
    {
      combobox1.text = "+";
    }
    private void button1_click(object sender, eventargs e)
    {
      calculatorservice.calculatorclient client = new calculatorservice.calculatorclient();
      double x = convert.todouble (textbox1.text);
      double y = convert.todouble(textbox2.text);
      double result=0;
      string operater = combobox1.text;
      switch (operater )
      {
        case "+":
          result = client.add(x, y);
          break;
        case "-":
          result = client.subtract(x, y);
          break;
        case "*":
          result = client.multiply(x, y);
          break;
        case "/":
          if (y==0)
          {
            messagebox.show("除數不能為0!");
            return;
          }
          result = client.divide(x, y);
          break;
      }
      label1.text = textbox1.text + combobox1.text + textbox2.text + " = " + convert.tostring(result);
    }
  }
}

WCF實現的計算器功能實例

在這個計算器實例中,我們實現了一個簡單的計算服務(calculatorservice),提供基本的加、減、乘、除的運算。客戶端和服務通過運行在不同進程模擬,體現了客戶端和服務端進程互相調用的關系。

希望本文所述對大家c#程序設計有所幫助。

延伸 · 閱讀

精彩推薦
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
主站蜘蛛池模板: 欧美天堂在线观看 | 中文久久 | 日韩在线精品视频 | 日韩成人免费 | 黄色最新网站 | 26uuu国产电影一区二区 | 久久久久久网站 | 三级在线观看 | 欧美a在线 | 成人黄页在线观看 | 免费av一区 | 国产精品不卡视频 | 成人免费视频观看视频 | 九色国产 | 91视频网址 | 久草在线新视觉 | 国产精品二区一区二区aⅴ污介绍 | 亚洲狠狠爱一区二区三区 | 欧美激情一区二区三级高清视频 | 亚洲免费精品 | 亚洲综合在线播放 | 日本在线观看一区 | 成人羞羞视频免费 | 日韩精品一区二区三区视频播放 | 高清精品一区二区 | 免费国产网站 | 国产成人精品免高潮在线观看 | 黄色网页在线观看 | 精品一区二区不卡 | 毛片激情永久免费 | 国产精品久久久久久久久久 | 亚洲国产精品久久久久久久 | 日韩欧美久久 | 国产精品福利视频 | 欧美日韩在线免费观看 | 国产精品视频免费看 | 欧美三级电影 | 欧美国产精品一区二区三区 | 中文字幕日韩欧美 | 99在线视频播放 | 五月天激情综合网 |