.net core現在已經有了大的發展,雖然筆者現在已經從事python開發,但是一直在關注.net的發展,在逛博客園的時候,發現有大家都會提到Nancy這個框架,在簡單的使用之後,發現竟然是如此的簡單而優雅
public class SampleModule : Nancy.NancyModule
{
public SampleModule()
{
Get["/"] = _ => "Hello World!";
}
}
代碼已經上傳到git上,包含源代碼和docker打包腳本,大家有興趣可以自行研究
https://github.com/BruceDone/webapi
這和python裡面的flask 類似,都是簡單好用。今天我們來做一個簡單好用的.net core 版的nancy 應用,然後將程序打包到docker 並發布和使用。
在開發前請保證以上的環境都已經安裝好了
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 ,謝謝:)