• Net Core Docker


    Net Core Docker轻量级的web框架

     

        .net core现在已经有了大的发展,虽然笔者现在已经从事python开发,但是一直在关注.net的发展,在逛博客园的时候,发现有大家都会提到Nancy这个框架,在简单的使用之后,发现竟然是如此的简单而优雅

    1
    2
    3
    4
    5
    6
    7
    public class SampleModule : Nancy.NancyModule
    {
        public SampleModule()
        {
            Get["/"] = _ => "Hello World!";
        }
    }

      代码已经上传到git上,包含源代码和docker打包脚本,大家有兴趣可以自行研究

          https://github.com/BruceDone/webapi

          这和python里面的flask 类似,都是简单好用。今天我们来做一个简单好用的.net core 版的nancy 应用,然后将程序打包到docker 并发布和使用。

    •  开发环境:Marc Pro
    •  IDE: vscode
    • .Net Core 
    • Docker

         在开发前请保证以上的环境都已经安装好了

    1.    创建文件夹webapi 执行命令             
    1
    dotnet new

      2.    执行完后将初使化一些必要的文件 ,打开package.json,将如下内容复制进去

       

    复制代码
    {
      "version": "1.0.0-*",
      "buildOptions": {
        "debugType": "portable",
        "emitEntryPoint": true
      },
      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.0",
          "type": "platform"
        },
        "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
        "Microsoft.AspNetCore.Owin": "1.0.0",
        "Nancy": "2.0.0-barneyrubble"
      },
      "commands": {
        "web": "Microsoft.AspNet.Server.Kestrel"
      },
      "frameworks": {
        "netcoreapp1.0": {}
      }
    }
    复制代码

        3.    OK.保存的时候vscode 会自动导入相关的dll文件,引入成功后我们先创建StartUp.cs文件 

    复制代码
    using Microsoft.AspNetCore.Builder;
    using Nancy.Owin;
    
    
    
    namespace NancyApplication
    {
        public class Startup
        {
            public void Configure(IApplicationBuilder app)
            {
                app.UseOwin(x => x.UseNancy());
            }
        }
    }
    复制代码

      4.    保存后创建HomeModel.cs 文件

    复制代码
    using Nancy;
    namespace NancyApplication
    {
        public class HomeModule : NancyModule
        {
            public HomeModule()
            {
                Get("/", args => "Hello World, it's Nancy on .NET Core");
            }
        }
    
    
        public class PageModule : NancyModule
        {
            public PageModule()
            {
                Get("/person/{name}", args => new Person() { Name = args.name });
            }
        }
    
    
        public class Person
        {
            public string Name { get; set; }
        }
    }
    复制代码

       路由与返回值都已经写好,我这里就不解释相关的代码了,有兴趣的可以自行深入了解

      4.    编辑Program.cs文件

    复制代码
    using System.IO;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
     
    
    namespace NancyApplication
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                var host = new WebHostBuilder()
                    .UseContentRoot(Directory.GetCurrentDirectory())
                    .UseKestrel()
                    .UseUrls("http://*:5000")
                    .UseStartup<Startup>()
                    .Build();
     
                host.Run();
            }
        }
    }
    复制代码

      

      5.    OK,必要的文件都已经准备好了,然后运行 dotnet run ,访问http://127.0.0.1:5000 就可以看到结果,    

         

     6.使用Docker来部署程序

    访问我们的api地址:

    ± |master ?:1 ✗| → curl http://127.0.0.1:5000/person/bruce
    {"name":"bruce"}

      程序和代码我都已经打包到git 上了,里面有相关的说明 ,程序很方便的打包成了docker ,这样就可以很轻松的集群或者部署。

      git地址:https://github.com/BruceDone/webapi

      如果你觉得对你有帮助,请不要吝啬你的star ,谢谢:)

     
  • 相关阅读:
    编程实现SQL Server备份和还原
    [推荐]asp.net string与color互换
    ASP.NET执行SQL超时的解决方案
    Starling 环形进度条实现
    [转]列举好游戏应具备的10个要素
    基于Starling的mask实现
    一直以来最头痛的问题:怎么样才能行之有效的解决游戏中后期枯燥的问题呢?求解
    [转]战棋系统的分析
    [转] java开源游戏
    设计模式(基础篇)软件设计七大设计原则(续一)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/5937006.html
Copyright © 2020-2023  润新知