让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加密传输)

最新文章

  1. C# Bitmap deep copy
  2. MultiDex到底有多坑
  3. 优先队列(stl)
  4. jQuery轻量级京东图片轮播代码等
  5. Net 高效开发
  6. 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法(转)
  7. twisted学习笔记No.3 Web Clients
  8. 基于Verilog HDL 的数字电压表设计
  9. SQL SERVER将多行数据合并成一行(转载)
  10. Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦
  11. JavaSE笔记-异常
  12. beta冲刺总结附(分工)-咸鱼
  13. C语言实现Linux命令——od
  14. 3.ifconfig
  15. 软工+C(6): 最近发展区/脚手架
  16. sql group by聚合函数
  17. VMware Workstation Pro 14 虚拟机安装教程
  18. linux中模糊查找文件
  19. Mycat实现mysql主从复制(读写分离)
  20. .Net MVC 当前上下文中不存在名称“Style”

热门文章

  1. 安装Kali里的应用程序或软件包
  2. Spring.Net学习笔记(5)-集合注入
  3. js实现浮动框跟随页面滚动,最后停留在原来位置
  4. CF848A From Y to Y
  5. Android屏幕尺寸与度量单位(px,dp,sp)简介
  6. React Native 出现红屏幕报连接服务失败
  7. C++(Typedef声明)
  8. jq封装插件
  9. Linux服务器文件权限被改
  10. redis源码(一):为redis添加自己的列表类型