讓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
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加密傳輸)
目前學習.NET Core 最好的教程
.NET Core 官方教程
ASP.NET Core
官方教程
如果您認為這篇文章還不錯或者有所收獲,您可以點選右下角的【推薦】支援,或請我喝杯咖啡【贊賞】,這将是我繼續寫作,分享的最大動力!
作者:玩雙截棍的熊貓
聲明:原創部落格!請在轉載時在文章開頭注明本人部落格位址。如發現錯誤,歡迎批評指正。凡是轉載于本人的文章,不能設定打賞功能,如有特殊需求請與本人聯系!