.NET Core 上的 Web -- ASP.NET Core

.NET Core 上不光可以做控制台的程序, 还可也实现 AST.NET 的 Web 应用, 而且是自带服务器的那种. 像 NodeJS, Spring Boot, Netty 那种非容器型的嵌入式的 Web Server, 非常适合于做微服务应用. 谁说 ASP.NET 就一定要部署到 IIS 上呢?

本文参考 https://docs.asp.net/en/latest/getting-started.html 而来, 基本步骤是一致的

1. 安装 .NET Core

参考上一篇 .NET Core 上手体验 Hello World

2. 创建 .NET Core 项目

mkdir appnetcoreapp
cd aspnetcoreapp
dotnet new

3. 更新 project.json 引入 Kestrel HTTP server 依赖

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        },
        "Microsoft.AspNetCore.Server.Kestrel": "1.0.0"
      },
      "imports": "dnxcore50"
    }
  }
}

4. 恢复包 -- 依据 package.json 恢复项目依赖, 生成在  package.lock.json 文件中

dotnet restore

这一步由 package.json 确定好了 package.lock.json 之好, 才有可能在 IDE 中引入该项目, 使用所依赖的类. 或者 dotnet run 编译时也需要用到 package.lock.json 文件.

5. 添加 Startup.cs 定义最简单的请求逻辑

using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;

namespace aspnetcoreapp
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.Run(context =>
            {
                return context.Response.WriteAsync("Hello from ASP.NET Core!");
            });
        }
    }
}

6. 修改 Program.cs 使之启动一个 Web 服务

using System;
using Microsoft.AspNetCore.Hosting;

namespace aspnetcoreapp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseStartup()
                .Build();

            host.Run();
        }
    }
}

7. 用 dotnet run 启动 Web 服务

➜ aspnetcoreapp$ dotnet run
Project aspnetcoreapp (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
Hosting environment: Production
Content root path: /Users/Yanbin/Desktop/aspnetcoreapp/bin/Debug/netcoreapp1.0
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

8 访问服务 http://localhost:5000

➜ aspnetcoreapp$ curl -i http://localhost:5000
HTTP/1.1 200 OK
Date: Sat, 03 Sep 2016 05:09:33 GMT
Transfer-Encoding: chunked
Server: Kestrel

Hello from ASP.NET Core!

Server 是 Kestrel, 没实现路由, 不管你访问 http://localhost:5000 下的什么都是显示一样的内容. 其他的是高级内容, 诸如路由, 静态文件, 国际化, 错误处理, MVC 等. ASP.NET Core 项目可以被部署到许多地方, 例如 IIS, Docker, Azure 等.

附录: 1. ASP.NET Core Documentation

类别: .Net. 标签: , . 阅读(41). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar
wpDiscuz