天天看點

.NET跨平台 - WCF & Mono

讓WCF運作在Linux上(寄宿于伺服器程式)

WCF介紹請自行 bing 搜尋

使用的開發工具為vs2017,系統為 Ubuntu16.04

伺服器軟體為Jexus ( 詳情請看:  Jexus官網     國内唯一的 Linux DotNET 進階技術社群  )

Mono版本資訊( 具體安裝請百度 Ubuntu安裝Mono,推薦: Ubuntu安裝Mono ): 

.NET跨平台 - WCF & Mono
Jexus版本資訊 ( 下載下傳位址:Jexus for linux V5.8.2 Mono通用版 ) :
.NET跨平台 - WCF & Mono

以上準備工作完成以後,

打開 VS2017-->檔案-->建立項目-->其他項目類型-->空白解決方案  建立工程名稱為 WcfDemoProgram 

( 一 ) 建立WCF服務限制接口

1、建立類庫,類庫名為IBLL,.net版本選擇4.5

2、建立完成後删除 預設建立的 Class1.cs 檔案

3、選中引用,右鍵添加引用,将  程式集-->架構  中的  Sytem.ServiceModel 添加到項目中

4、建立接口 IWcfDemoService ,标記為 [ServiceContract] 伺服器契約接口

5、建立一個操作契約函數 Add, 标記為 [OperationContract] (等同于WebService中的WebMethod标記)

  代碼如下:

using System.ServiceModel;

namespace IBLL
{
    /// <summary>
    /// 服務契約接口
    /// </summary>
    [ServiceContract]
    public interface IWcfDemoService
    {
        /// <summary>
        /// 一個操作契約 (等同于WebService中的WebMethod)
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        [OperationContract]
        int Add(int a, int b);
    }
}      

( 二 ) 實作服務契約

1、建立類庫,類庫名為BLL,.net版本選擇4.5

3、選中引用,右鍵添加引用,将  項目-->解決方案  中的  IBLL 添加到項目中

4、建立類 WcfDemoService,繼承IWcfDemoService接口,并實作 Add 函數

using IBLL;

namespace BLL
{
    /// <summary>
    /// 實作服務契約業務類
    /// </summary>
    public class WcfDemoService: IWcfDemoService
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }
}      

( 三 ) 建立WCF宿主程式

1、建立一個空的WebApplication項目 WebHost

2、需要将vs2017建立項目時預設引用的幾個dll取消引用,右鍵選中 引用-->管理NuGet程式包-->已安裝  删除這兩個NuGet包:

.NET跨平台 - WCF &amp; Mono

3、選中引用,右鍵添加引用,将  項目-->解決方案  中的  BLL, IBLL 添加到項目中

4、建立一個 類檔案 名為WcfTestService.cs

5、将 WcfTestService.cs 重命名為 WcfTestService.svc

6、将 WcfTestService.svc 中的内容清空,寫入内容(Service 的值 為 Web.config 中 service 節點的 name 屬性值相同)

<%@ ServiceHost Service="BLL.WcfDemoService" %>      

7、修改 WcfApp 的 Web.config 檔案内容

    注:  serivce節點中 name屬性的值必須為服務契約實作業務類的類名

<?xml version="1.0" encoding="utf-8"?>
<!--
  有關如何配置 ASP.NET 應用程式的詳細資訊,請通路
  https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime targetFramework="4.5"/>
    <customErrors mode="Off"/>
  </system.web>


  <!-- =============================== WCF 配置開始  ===============================-->
  <system.serviceModel>

    <!-- services配置 -->
    <services>
      <!-- 單個服務配置 -->
      <!-- 注意: 服務名稱必須與服務實作的配置名稱相比對。 -->
      <service name="BLL.WcfDemoService" behaviorConfiguration="WcfDemoServiceBehavior">
        <!-- 添加下列終結點。 -->
        <endpoint binding="basicHttpBinding" contract="IBLL.IWcfDemoService"/>
      </service>
      
    </services>
    

    <!-- 行為配置 -->
    <behaviors>
      <!-- 配置單個服務的行為 -->
      <serviceBehaviors>
        <behavior name="WcfDemoServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
      
    </behaviors>

  </system.serviceModel>
  <!-- =============================== WCF 配置結束  ===============================-->

</configuration>      

以上就完成了一個簡單的WCF服務的建立,隻需要釋出到伺服器即可使用。

Demo位址:   GitHub位址

補充:

  經測試,使用Jexus獨立版也同樣能夠正常運作Demo(Linux版本為Centos7.1)  點選下載下傳Jexus獨立版 5.8.2-x64.tar.gz

推薦:

     張善友的技術部落格

     衣明志的技術部落格

     驚鴻哥的部落格

     無需安裝Mono就能運作ASP.NET的Jexus“獨立版”

     [mononet原創] VIM超簡教程

     讓Jexus支援高并發請求的優化技巧

     成倍提高伺服器的負載能力:淺談Jexus的ASP.NET前置緩存技術

     Linux伺服器上,用ASP.NET生成中文圖檔的要點

     讓jexus 支援HTTPS協定(ssl加密傳輸)

目前學習.NET Core 最好的教程

.NET Core 官方教程

ASP.NET Core

官方教程

如果您認為這篇文章還不錯或者有所收獲,您可以點選右下角的【推薦】支援,或請我喝杯咖啡【贊賞】,這将是我繼續寫作,分享的最大動力!

作者:玩雙截棍的熊貓

聲明:原創部落格!請在轉載時在文章開頭注明本人部落格位址。如發現錯誤,歡迎批評指正。凡是轉載于本人的文章,不能設定打賞功能,如有特殊需求請與本人聯系!

繼續閱讀