前言

以前对比过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. c++分块算法(暴力数据结构)

    快要noip了,该写些题解攒攒rp了(逃) 看到题解里那么多线段树啊,树状数组啊,本蒟蒻表示:这都是什么鬼东西? 在所有高级数据结构中,树状数组是码量最小的,跑的也基本是最快的,但理解很难,并且支持的 ...

  2. django admin后台的简单使用

    创建自己的model.py文件 from django.db import models from django.contrib.auth.models import ( BaseUserManage ...

  3. “全栈2019”Java第六十四章:接口与静态方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. MD5算法分析

    1. MD5是什么? MD5即Message-Digest Algorithm 5(消息摘要算法第五版)的简称,是当前计算机领域用于确保信息传输完整一致而广泛使用的散列算法之一(又译哈希算法.摘要算法 ...

  5. 跟刘欣学习造spring

    1: 读取配置文件并获取对象实例

  6. react的一些思考

    在做好第一个需求之后,我接到了一个react写的产品,这让我异常的兴奋,终于能写react了 开始做的时候整体框架已经搭建好了,这让我有点小失落,我还以为我要开始搭框架了呢,没事,搭的也挺好的. 有了 ...

  7. P2046 [NOI2010]海拔 平面图转对偶图(最小割-》最短路)

    $ \color{#0066ff}{ 题目描述 }$ YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形. ...

  8. [bzoj4445] [SCOI2015]小凸想跑步 (半平面交)

    题意:凸包上一个点\(p\),使得\(p\)和点\(0,1\)组成的三角形面积最小 用叉积来求: \(p,i,i+1\)组成的三角形面积为: (\(\times\)为叉积) \((p_p-i)\tim ...

  9. ubuntu 16.04 安装opencv 2.4.13

    ubuntu 16.04 安装opencv 2.4.13 https://blog.csdn.net/u011557212/article/details/54706966?utm_source=it ...

  10. MySQL:管理MySQL、事务(三)

    干货: 命令行程序mysql实际上是MySQL客户端,真正的MySQL服务器程序是mysqld,在后台运行. 数据库事务具有ACID特性,用来保证多条SQL的全部执行. 五.MySQL 通过mysql ...