先前写过一篇文章:http://www.cnblogs.com/gengzhe/p/5557789.html,也是asp.net core和golang web的对比,热心的园友提出了几点问题,如下:

1、需要加入sleep来模拟实际业务,这样才能考验协程调度能力。

2、golang擅长的是多核环境。

于是今天修正了一下再次进行测试

CPU:E1230-v2

内存:16GB

操作系统:centos 7 (3核心2GB内存)

下面是代码:

go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main
 
import (
    "fmt"
    "net/http"
    "time"
)
 
func main() {
    fmt.Println("This is webserver base!")
 
    //第一个参数为客户端发起http请求时的接口名,第二个参数是一个func,负责处理这个请求。
    http.HandleFunc("/login", loginTask)
 
    //服务器要监听的主机地址和端口号
    err := http.ListenAndServe("192.168.199.236:8081", nil)
 
    if err != nil {
        fmt.Println("ListenAndServe error: ", err.Error())
    }
}
 
func loginTask(w http.ResponseWriter, req *http.Request) {
 
    //获取客户端通过GET/POST方式传递的参数
    time.Sleep(time.Millisecond*300)
    req.ParseForm()
    fmt.Fprint(w, "Hello Word!")
}

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MyHandlerMiddleware
{
 
    // Must have constructor with this signature, otherwise exception at run time
    public MyHandlerMiddleware(RequestDelegate next)
    {
        // This is an HTTP Handler, so no need to store next
    }
 
    public async Task Invoke(HttpContext context)
    {
        await Task.Delay(1*300);
        await context.Response.WriteAsync("Hello World!");
    }
 
    // ...
}
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }
 
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app)
    {
        app.MapWhen(context => { return context.Request.Path.ToString().EndsWith("jjj.go"); }, ap =>
        {
            ap.UseMiddleware<MyHandlerMiddleware>();
        });
    }
}

测试结果(1000用户并发)

go

C#

 

测试结果确实是golang稍微好一点。

个人总结的差距有2点

1、go是静态编译,运行速度按理应该快一些。

2、.NET MVC的封装度更好,请求在进入业务逻辑前需要进行大量的处理。

以上仅为个人观点。

net core VS goang web的更多相关文章

  1. asp.net core VS goang web[修正篇]

    先前写过一篇文章:http://www.cnblogs.com/gengzhe/p/5557789.html,也是asp.net core和golang web的对比,热心的园友提出了几点问题,如下: ...

  2. Core第三方开源Web框架

    NET Core第三方开源Web框架YOYOFx   YOYOFx框架 YOYOFx是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台. 本着学习的态度,造了这个 ...

  3. net core与golang web

    Asp.net core与golang web简单对比测试 最近因为工作需要接触了go语言,又恰好asp.net core发布RC2,就想简单做个对比测试. 下面是测试环境: CPU:E3-1230 ...

  4. 从头编写 asp.net core 2.0 web api 基础框架 (1)

    工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...

  5. 从头编写 asp.net core 2.0 web api 基础框架 (3)

    第一部分:http://www.cnblogs.com/cgzl/p/7637250.html 第二部分:http://www.cnblogs.com/cgzl/p/7640077.html 之前我介 ...

  6. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (3)

    Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratc ...

  7. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (1)

    工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...

  8. 从头编写asp.net core 2.0 web api 基础框架 (5) + 使用Identity Server 4建立Authorization Server (7) 可运行前后台源码

    前台使用angular 5, 后台是asp.net core 2.0 web api + identity server 4. 从头编写asp.net core 2.0 web api 基础框架: 第 ...

  9. 使用 ASP.NET Core MVC 创建 Web API(五)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 使 ...

随机推荐

  1. Android Input设备debug技巧

    一.驱动层 检查是否有点上报 adb shell getevent -l /dev/input/eventX 检查input设备支持的属性值 adb shell getevent -i /dev/in ...

  2. Opencv2系列学习笔记2(图像的其它操作)

    本节主要涉及到图像的领域.算术操作以及如何操作图像感兴趣的区域. 一:邻域操作 以下例子主要对图像进行锐化.基于拉普拉斯算子<后面讨论>.这幅图像的边缘部分将得到放大,细节部分将更加的锐利 ...

  3. Android广播——短信拦截

    MainActivity.java package com.example.broadcasttest; import android.content.Intent; import android.c ...

  4. C++ cout 如何保留小数输出

    参考 : http://upliu.net/how-cout-out-2-precision.html 大家都知道用 C 语言中 printf () 函数可以非常方便控制保留 几位小数输出 不过在 C ...

  5. VS Code开发调试ASP.NET Core 1.0

    VS Code开发调试ASP.NET Core 1.0 使用VS Code开发调试ASP.NET Core 1.0,微软在今天凌晨发布了.NET Core 1.0,ASP.NET Core 1.0 与 ...

  6. JQuery插件使用小结

    JQuery插件使用小结

  7. C#如何在panl控件上添加Form窗体

    . if (treeView1.SelectedNode.Text == "个人信息") { Form1 f4 = new Form1(); f4.TopLevel = false ...

  8. HDOJ 3047 带权并查集

    解题思路转自: http://blog.csdn.net/azheng51714/article/details/8500459 http://blog.csdn.net/acresume/artic ...

  9. Qt状态机框架

    The State Machine Framework 状态机框架提供了用于创建和执行状态图的类.概念和符号是基于Harel的Statecharts: A visual formalism for c ...

  10. Visual Studio 2012的新技术特性

    前言 我更换了VS2012开发工具,那么它有什么特性呢? [caption id="attachment_1235" align="alignnone" wid ...