一、环境及工具

1、服务器

  • VirtualBox5.1.4 安装 Ubuntu Server 16.04 amd64
  • MySql Ver 14.14 Distrib 5.6.21
  • Jexus 5.8.1
  • nginx 1.10.0
  • dotnet core 1.0.0-preview2-003121
  • supervisor 3.2.1

2、开发环境

  • VS2015 + Update 3
  • DotNetCore.1.0.0-VS2015Tools.Preview2.0.1.exe

3、测试工具

二、项目及代码

1、mysql 数据访问、ORM

  • MySql.Data.Core 7.0.4-IR-191
  • Dapper 1.50.2

2、数据库及表

  • 数据库:Test
  • 数据表:User 两个字段:Id,Name,数据4条
CREATE TABLE `User` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of User
-- ----------------------------
INSERT INTO `User` VALUES ('', 'LXY-1');
INSERT INTO `User` VALUES ('', 'LXY-2');
INSERT INTO `User` VALUES ('', 'LXY-3');
INSERT INTO `User` VALUES ('', 'LXY-5-New');
  • 项目,最简单的三层结构,实现增删改查(下载

如需使用项目,请修改数据库连接字符串,在 appsettings.json 文件里:

{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"TestDb": "server=192.168.2.117;Port=51889;userid=test8888;password=test8888;database=Test;SslMode=None;"
}
}

项目使用ASP.NET CORE 自带的依赖注入,没有使用第三方的,Controller代码如下:

[Route("api/[controller]")]
public class UserController : Controller
{
readonly IUserBll _userBll; public UserController(IUserBll userBll)
{
_userBll = userBll;
} [HttpGet]
public IEnumerable<User> Get()
{
return _userBll.GetList();
} [HttpGet("{name}")]
public User Get(string name)
{
return _userBll.Get(name);
} [HttpPost]
public void Post([FromBody]User user)
{
if(user == null || string.IsNullOrEmpty(user.Name))
{
return;
} _userBll.Add(user);
} [HttpPut]
public void Put([FromBody]User user)
{
if (user == null || user.Id < || string.IsNullOrEmpty(user.Name))
{
return;
} _userBll.Update(user);
} [HttpDelete("{id}")]
public void Delete(int id)
{
_userBll.Delete(id);
}
}

三、ASP.NET CORE 在 Ubuntu 的配置

  参考大神 savorboard 的博客:http://www.cnblogs.com/savorboard

四、测试结果

   说明:因为使用jexus端口转发模式测试时,Requests:10000   Users:50  KeepAlive:False 的时候,就出现了很多错误连接,所以没有继续测试,不知道是不是我的配置有问题,配置如下:

######################
# Web Site: Default
######################################## port=8080
root=/ /hoem/vsftpd/website/webapitest
hosts=* #OR your.com,*.your.com # addr=0.0.0.0
# CheckQuery=false
NoLog=true
AppHost.Port=5000
# NoFile=/index.aspx
# Keep_Alive=false
# UseGZIP=false
# UseHttps=true
# DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24
# AllowFrom=192.168.*.*
# DenyDirs=~/cgi, ~/upfiles
# indexes=myindex.aspx
# rewrite=^/.+?\.(asp|php|cgi|pl|sh)$ /index.aspx

  端口转发测试结果如下:

  

  

  下面是 nginx 和 jexus 反向代理模式下的测试结果:

  1. Requests:10000; Users:50;KeppAlive:False

  nginx:

  

  

  jexus:

  

  

  2. Requests:10000; Users:50;KeppAlive:True

  nginx:

  

  

  jexus:

  

  

  3. Requests:10000; Users:200;KeppAlive:False

  nginx:

  

  

  jexus:

  

  

  4. Requests:10000; Users:200;KeppAlive:True

  nginx:

  

  

  jexus:

  

  

  5. Requests:10000; Users:500;KeppAlive:False

  nginx:

  

  

  jexus:

  

  

  6. Requests:10000; Users:500;KeppAlive:True

  nginx:

  

  

  jexus:

  

  

  7. Requests:10000; Users:100;KeppAlive:False

  nginx:

  

  

  jexus:

  

  

  8. Requests:10000; Users:1000;KeppAlive:True

  nginx:

  

  

  jexus:

  

  

五、总结

  1. 测试环境非常简陋,测试到1000用户的时候,路由器受不了了,其他应用程序都纷纷离线了,包括QQ。上面结果可能不是非常准确,但是有一定的参考价值。
  2. 只测试了GET,没有测试POST。
  3. 感觉ASP.NET CORE 应该慢慢的可以使用到生产环境中了:)。

Ubuntu Server 16.04下ASP.NET Core Web Api + MySql + Dapper在 Jexus、nginx 下的简单测试的更多相关文章

  1. Docker容器环境下ASP.NET Core Web API

    Docker容器环境下ASP.NET Core Web API应用程序的调试 本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Dock ...

  2. Docker容器环境下ASP.NET Core Web API应用程序的调试

    本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...

  3. 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持

    HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...

  4. Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程

    Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...

  5. VirtualBox下安装Ubuntu Server 16.04

    安装环境: Windows:确保磁盘空间足够,一般需要8个G左右. 所需文件: 首先在Ubuntu的官网上下载.iso的镜像文件,链接是:http://www.ubuntu.org.cn/server ...

  6. [原创]在HP DL380 G7服务器上部署基于Ubuntu Server 16.04 和 VirtualBox的云平台

    对于一线开发人员来说,一提到虚拟机平台,往往会让人联想到在价格昂贵的服务器上部署VMware vSphere之类软件来实现. 笔者作为一个资深码农,也是一直梦寐着在自己家中打造一个真正的家庭私有云,秒 ...

  7. Ubuntu Server 14.04升级Ubuntu Server 16.04

    Ubuntu Server 14.04升级Ubuntu Server 16.04 :转 http://blog.csdn.net/chszs 1.终端下执行命令 $ sudo apt-get upda ...

  8. 虚拟机Vmware成功安装Ubuntu Server 16.04中文版

    最近想在Linux下学习Python的爬虫开发技术,经过认真考虑优先选择在在Ubuntu环境下进行学习Python的开发,虽然Ubuntu Server 16.04 LTS版本已经集成了Python ...

  9. Ubuntu server 16.04安装,无网卡驱动解决

    因为使用一个软件必须要在ubuntu server 16.04上安装,因此先在裸机上安装ubuntu server 16.04,具体信息: 镜像版本:ubuntu-16.04.6-server-amd ...

随机推荐

  1. Unity3D热更新全书-脚本(一) 初识脚本

    开篇之前还是要先说明,这是一份给经验并不丰富的程序员阅读的文字. 有需求.有疑惑,往下看. 第一个问题什么是脚本?程序和脚本如何区分?我们给Unity编写的组件是程序还是脚本? 这些问题本文无意去解答 ...

  2. Unity3D使用经验总结 编辑器扩展篇

    一个引擎,最重要的就是工具,工具除了提升开发速度,提供可视化操作环境以外,还带了容错功能. 它使得大家的工作局限在一定的范围内,比如一个变量的配置,或者是一些类型的选择. 使用编辑器,使得既使不太明白 ...

  3. vim添加或删除多行注释

    一.多行注释的添加 1. vim的命令模式下(ESC 进入命令模式): 2. 按CTRL+V进入可视化模式(VISUAL BLOCK): 注意:vim命令模式下v进入的是visual模式,ctrl+v ...

  4. React Native01-开始 Windows环境安装配置篇

    转载本文章的童鞋请注明原链接. 查阅文档之类的资料,建议到 http://reactnative.cn/ 本人使用环境Win10. 在阅读本文之前,请了解我们安装React Native之前,要安装P ...

  5. IBatisNet:让insert操作返回新增记录的主键值

    项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目 ...

  6. 大叔最新课程~EF核心技术剖析

    EF核心技术剖析介绍 数据上下文(共享对象与实例对象的选择) 自动初始化(Initializer初始化的几种方式) 数据迁移(Migrations如何使用及其重要作用) 实体关系映射(一对一,一对多, ...

  7. [CSS]复选框单选框与文字对齐问题的研究与解决.

    前言:今天碰到的这个问题, 恰好找到一个很好的博文, 在这里转载过来 学习下. 原文地址:复选框单选框与文字对齐问题的研究与解决. 目前中文网站上面的文字,就我的个人感觉而言,绝大多数网站的主流文字大 ...

  8. Atitit 热更新资源管理器 自动更新管理器 功能设计

    Atitit 热更新资源管理器 自动更新管理器 功能设计 · 多线程并行下载支持 · 两层进度统计信息:文件级以及字节级 · Zip压缩文件支持 · 断点续传 · 详细的错误报告 · 文件下载失败重试 ...

  9. javascript_core_10之继承与数组API

    1.现有两对象间的继承:Object.setPrototypeOf(child,father): 2.基于现有父对象创建子对象:var child=Object.create(father,{新属性} ...

  10. Enterprise Solution 应用程序开发框架培训

    一.系统架构 C# .NET 4.0 + Win Form + SQL Server 2005 二.五大核心模块 (菜单设计器Menu Designer,查询设计器Query Designer,报表设 ...