.NET跨平台 - WCF & Mono


讓WCF運行在Linux上(寄宿於服務器程序)

WCF介紹請自行 bing 搜索

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

服務器軟件為Jexus ( 詳情請看:  Jexus官網     國內唯一的 Linux DotNET 高級技術社區  )

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

Jexus版本信息 ( 下載地址:Jexus for linux V5.8.2 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

2、創建完成后刪除 默認創建的 Class1.cs 文件

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包:

                  

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加密傳輸)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM