前言

以前对比过enginx和其他几个web服务器(IIS,Apache,lighttpd)的处理静态文件的能力,enginx是最好的,甚至超过其他的几倍。

虽说enginx官方声明在Windows上的表现不如Linux等OS,经过测试enginx的异步处理和响应真出乎意料。

正文

测试的目的和思路:

后台接口用wcf,json作为请求和响应的类型,HTTP协议。

纯前端用angular及路由,enginx作为web服务器。

凡请求后台接口enginx都代理转发到wcf处理。

测试上下文:

Firebird3.0.3标准版、ORM微框架FluentData、VS2015、WebStorm2017.

数据库访问:

     class DbCxt
{
private static string _connStr = ""; static DbCxt()
{
FbConnectionStringBuilder connBuilder = new FbConnectionStringBuilder();
connBuilder.DataSource = "localhost";
connBuilder.UserID = "sysdba";
connBuilder.Password = "";
connBuilder.Database = "wms";
connBuilder.Charset = "utf8";
connBuilder.Dialect = ;
connBuilder.ServerType = FbServerType.Default; _connStr = connBuilder.ConnectionString; } public static IDbContext NewDbContext()
{
return new DbContext().ConnectionString(_connStr, new DB2Provider()
, FirebirdClientFactory.Instance);
} public static string ConnStr()
{
return _connStr;
}
}

wcf接口:

     [ServiceContract]
public interface IWmsService
{
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
DtoResult<DtoUser> AddUser(DtoUser usr);
}

接口实现:

     public class WmsService : IWmsService
{
public DtoResult<DtoUser> AddUser(DtoUser usr)
{
if (usr != null)
{
DateTime creTime = DateTime.Now;
DateTime.TryParse(usr.CreTime, out creTime);
using (var db = DbCxt.NewDbContext())
{
int count = db.Insert("m_user")
.Column("code", usr.Code)
.Column("label", usr.Label)
.Column("cre_time", creTime)
.Column("remark", usr.Remark)
.Execute();
return new DtoResult<DtoUser>() {State = , Data = usr};
}
}
return new DtoResult<DtoUser>() {State = , Msg = "用户不能为空"};
}
}

wcf宿主:

         static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(Wms.Service.WmsService));
host.Open();
Console.WriteLine("已启动");
Console.WriteLine("回车键退出");
Console.ReadLine();
}

wcf配置:

   <system.serviceModel>
<services> <service name="Wms.Service.WmsService" behaviorConfiguration="http" >
<host>
<baseAddresses>
<add baseAddress="http://localhost:20001/WmsService"/>
</baseAddresses>
</host>
<endpoint binding="webHttpBinding" contract="Wms.Service.IWmsService" behaviorConfiguration="web"></endpoint>
</service>
</services> <behaviors>
<serviceBehaviors>
<behavior name="mex">
<serviceMetadata/>
</behavior>
<behavior name="http">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp helpEnabled="true"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>

前端页面:

js提交代码:Note 请求URL最前的/不能省,因为后面enginx配置代理时不允许前缀后面加/

         $scope.data = {
Code: '', Label: '', CreTime: new Date().Format('yyyy-MM-dd hh:mm:ss'), Remark: '', Pwd:'123456'
}; $scope.save = function () {
$http.post('/wmsService/addUser', $scope.data).then(function (value) {
console.log(value);
})
};

enginx代理转发部分配置:~*表示URL不区分大小写匹配,因为默认wcf也不区分。

         location ~* /WmsService/ {
proxy_pass http://127.0.0.1:20001;
}

enginx其他配置都取默认,除端口改为10005以外。

nginx 代理转发 wcf接口的更多相关文章

  1. Nginx代理转发Apache+svn

    1.安装svn和httpd yum install httpd yum install subversion mod_dav_svn 创建仓库目录 mkdir -p /var/www/svn 3.创建 ...

  2. 10分钟学会windows中iis搭建服务器集群实现负载均衡和nginx代理转发

    前言 我们之前聊过 10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡:https://www.cnblogs.com/xiongze520/p/103087 ...

  3. 【转】Nginx反向代理转发tomcat

    http://blog.csdn.net/mlc1218559742/article/details/53117520 最近刚接触nginx,在网上查阅了相关资料,看到最多的形容nginx的词就是反向 ...

  4. nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token

    nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token 注意: proxy_pass http://192.168.40.54:22 ...

  5. 使用Nginx代理和转发Websocket连接

    1.Websocket 简介 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端. 2.Nginx 简介 ...

  6. nginx反向代理转发后页面上的js css文件无法加载【原创】

    故障现象:nginx做代理转发后,发现页面上的js css文件无法加载,页面样式乱了. 原因:没有配置静态资源 解决js css文件无法加载无法访问的问题 解决办法: 修改配置文件nginx.conf ...

  7. nginx反向代理转发apache配置 之 cookie去哪儿了?

    在公司接手了个微信项目,由于微信环境下访问网站需要使用对外开放的域名,所以有相关问题,都是直接运维同事帮忙处理. 原理是这样: 方案一: 1. 将域名解析指向测试服务器的地址: 2. 开放相关端口访问 ...

  8. 医院内外网之间通过网闸交互,通过端口转发加nginx代理实现内网访问外网

    首先介绍下主要需求,很简单,就是要在医院his系统内嵌公司的平台,实现内网直接访问外网 这是院方给我提供的网闸相关配置,105是医院内网的服务器,120是外网的服务器,中间通过网闸配置的几个端口实现互 ...

  9. Next.js 配置接口跨域代理转发

    使用 create-next-app 创建的 Next.js 项目配置接口跨域代理转发需要用到 custom server 功能. 先安装好 express 和 http-proxy-middlewa ...

随机推荐

  1. kvm虚拟机时间配置

    注:在虚拟化环境中,虚拟机在长时间运行过程中,时间会变慢,通常的作法是配置ntpdate定时与时间服务器进行时间同步的计划任务. KVM虚拟机默认采用utc时间,需要专门修改,以及考虑kvm时间同步问 ...

  2. UIView-frame-VS-bounds

    分享链接

  3. gdb调试参数

    参考 这里 1)gdb 打印字符串的全部内容 set print element 0 2)用x命令查看内存(examine的缩写) (gdb) x/1ub 0x7ffff7fbf7a00x7ffff7 ...

  4. window.onload和JQuery中$(function(){})的区别即其实现原理

    一.区别 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. 在Jquery中$(function(){ })和$(document).ready(function(){ ...

  5. DP 免费馅饼 HDU1176

    DP 免费馅饼 HDU1176 vjudge题面 一道基本的DP题,状态转移很好想,每一个状态的位置\(pos\)都只能由上一秒的\(pos-1, pos, pos+1\)三个位置转移而来(当然要判断 ...

  6. node爬取页面元素

    /** * Created by on 2018/12/25. */const http = require("https");const fs = require('fs'); ...

  7. 认识CSS中css引入方式、选择器、文本样式设置以及显示模式

    前端之HTML.CSS(三) CSS CSS-Cascading Styles Sheets,层叠样式表.用于网页的表现,主要用于布局和修饰网页. CSS引入方式 CSS的三种引入方式:行内样式,内部 ...

  8. odoo 二次开发的方法

    介绍 二开时模型创建完毕并配好视图后对于基本的CRUD操作不需要再在代码中实现,框架会自动提供这些功能,但如果我们的开发需求不仅仅是对当前对象的CRUD时,就需要在框架原来方法的基础上扩展出一些自己所 ...

  9. Hangfire项目

    什么是Hangfire Hangfire 是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core.个人认为它最大特点在于内置提供集成化的控制台,方便后台查看及监控: 另外,Hang ...

  10. netty总结

    eventLoopGroup中创建各个eventLoop处理线程,各个pipeLineHandler处理childEvent时是在自己的线程中, 全异步