码迷,mamicode.com
首页 > Web开发 > 详细

net core VS goang web

时间:2016-06-05 23:25:36      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:

先前写过一篇文章: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

标签:

原文地址:http://www.cnblogs.com/Leo_wl/p/5562116.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!