dotNet Linux 学习记录 - Jexus寄宿WCF服务
让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“独立版”
成倍提高服务器的负载能力:浅谈Jexus的ASP.NET前置缓存技术
dotNet Linux 学习记录 - Jexus寄宿WCF服务的更多相关文章
- 轻松搞定Win8 IIS支持SVC 从而实现IIS寄宿WCF服务
写在前面 为了尝试在IIS中寄宿WCF服务,需要配置IIS支持SVC命令,于是便有了在DOS命令中用到ServiceModelReg.exe注册svc命令. 坑爹的是注册成功后就开始报错.无奈之下两次 ...
- 通过IIS寄宿WCF服务
WCF全面解析一书中的例子S104,直接将Service目录部署到iis是无法得到服务相应的,需要在项目中新建一个web项目,删除掉自动生成的所有文件之后,把Service目录下的Calculator ...
- 多线程编程学习笔记——异步调用WCF服务
接上文 多线程编程学习笔记——使用异步IO 接上文 多线程编程学习笔记——编写一个异步的HTTP服务器和客户端 接上文 多线程编程学习笔记——异步操作数据库 本示例描述了如何创建一个WCF服务,并宿主 ...
- 关于IIS寄宿WCF服务,客户端不能生成代理类
我在使用VS2010写好WCF的Web服务后,部署在IIS7.0上,可以在IE9上进行访问,并且能显示XML数据,如下图 然后我在项目的客户端进行服务的添加引用,如下图 VS2010自动生成代理类,但 ...
- 控制台中寄宿WCF服务
一.首先创建一个类库,用来定义WCF服务 修改服务代码定义,具体代码如下 // 注意: 使用"重构"菜单上的"重命名"命令,可以同时更改代码和配置文件中的接口名 ...
- Linux学习-什么是 daemon 与服务 (service)
『常驻在记体体中的程序,且可以提供 一些系统或网络功能,那就是服务』.而服务一般的英文说法是『 service 』. 那么 daemon 与 service 有关啰?否则为什么都能够提供 某些系统或网 ...
- Linux 学习记录 一(安装、基本文件操作).
Linux distributions主要分为两大系统,一种是RPM方式安装软件的系统,包括Red Hat,Fedora,SuSE等都是这类:一种则是使用Debian的dpkg方式安装软件的 ...
- Linux 学习记录一(安装、基本文件操作).
Linux 名字的由来,是当时作者将初版的 Linux 发布在网上,供别人下载完善,而那个核心文件夹就叫 Linux,就这么叫着了.而为什么 Linux 的吉祥物是一只企鹅呢?是因为当时大家要发行稳定 ...
- Linux学习记录
---恢复内容开始--- linux与unix的关系 linux是借鉴了unix设计思想,也称linux位类unix系统. Linux常用命令 1.命令基本格式 命令[选项][参数] 注意:个别命令不 ...
随机推荐
- webpack使用总结
我们可以在js中引入样式文件 require('myStyle.css') 这时我们便需要引入相应的webpack loader来帮助我们解析这段代码. 一般来说需要引入css-loader和styl ...
- java Servlet接口及应用(转)
基本类和接口 一.javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理 ...
- 【机器学习】代价函数(cost function)
注:代价函数(有的地方也叫损失函数,Loss Function)在机器学习中的每一种算法中都很重要,因为训练模型的过程就是优化代价函数的过程,代价函数对每个参数的偏导数就是梯度下降中提到的梯度,防止过 ...
- VMware workstation转到vsphere解决办法
一.前因 上一篇http://www.cnblogs.com/cuncunjun/p/6611837.html 中提到,我想把本地的vmware workstation的虚拟机拷贝到服务器上,因为鄙人 ...
- WPF之路五:wpf 隐藏与显示 Visibility
WPF里枚举变量Visibility 有三个值:Visible, Collapsed和Hidden.其中Collapsed是WPF新引进的,其作用是不仅隐去Control,同时也会移除Control所 ...
- 项目的ip地址更改,用git从远程提取代码出现错误,提示为 network error connection timed out
昨天公司的ip进行了修改,在今天从远程提取代码的过程中提示network error connection timed out错误,从网上看了一下解决方法 1:打开项目文件夹,点击查看 2:勾选隐藏的 ...
- js面向对象二级菜单
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...
- 前端开发必须说的那些事之——同源策略(same origin policy)
同源策略指的是三个相同 协议相同 域名相同 端口相同 如https://www.baidu.com/hahah.html这个网址来说 https是使用的协议,www.baidu.com是域名,端口号默 ...
- javascript继承详解(待续)
常见继承分两种,一种接口继承,继承方法签名:一种实现继承,继承实际方法.js只支持后一种. 1原型链 首先看原型.构造函数.实例的关系.如果我们让一个函数的原型对象等于另一个的实例,然后另一个的原型对 ...
- 浅谈echo、print、var_dump()、print_r()的区别
1.echo 和 print 的区别 共同点:首先echo 和 print 都不是严格意义上的函数,他们都是语言结构;他们都只能输出 字符串,整型跟int型浮点型数据.不能打印复合型和资源型数据: 而 ...