当前位置: 首页 > 编程日记 > 正文

[Nancy On .Net Core Docker] 轻量级的web框架

.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 并发布和使用。

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

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

  1. 创建文件夹webapi 执行命令
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 ,谢谢:)

转载于:https://www.cnblogs.com/codefish/p/5924481.html

相关文章:

【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)

Dijkstra算法是用来求解从某个源点到其他各顶点的最短路径&#xff08;单源最短路径&#xff09;。 下面的Dijkstra算法的讲解都是基于这个有向图&#xff0c;在遇到其他问题可以类比。 算法的基本思想&#xff1a; 把图中的定点分成两组&#xff0c;第一组包括已确定最短路径…

智能POS常见问题整理

智能POS预警值为小于所设的数量&#xff0c;H5就会变为锁定状态 智能POS查看数据库方法&#xff1a; 商米D1&#xff1a;设置-存储设备和USB-内部存储设备-浏览-winboxcash tablet.db为智能POS数据库 Winbox文件夹内&#xff0c;为相应logcat文件&#xff0c;应用出现问题时&am…

解决安卓系统写入SD卡权限问题

1.需要用户手动赋予的权限&#xff08; Dangerous Permissions&#xff09; 所属权限组权限日历READ_CALENDAR日历WRITE_CALENDAR相机CAMERA联系人READ_CONTACTS联系人WRITE_CONTACTS联系人GET_ACCOUNTS位置ACCESS_FINE_LOCATION位置ACCESS_COARSE_LOCATION麦克风RECORD_AUDIO…

【ACM】【STL】stack应用

C Stacks&#xff08;堆栈&#xff09; C Stack&#xff08;堆栈&#xff09; 是一个容器类的改编&#xff0c;为程序员提供了堆栈的全部功能&#xff0c;——也就是说实现了一个先进后出&#xff08;FILO&#xff09;的数据结构。 操作比较和分配堆栈empty()堆栈为空则返回真…

CHUCK手把手带你搞定OPENSTACK

以下是原文链接&#xff1a;http://blog.oldboyedu.com/openstack/转载于:https://blog.51cto.com/bovin/1858198

JVM基础面试题及原理讲解

2019独角兽企业重金招聘Python工程师标准>>> 本文从 JVM 结构入手&#xff0c;介绍了 Java 内存管理、对象创建、常量池等基础知识&#xff0c;对面试中 JVM 相关的基础题目进行了讲解。 写在前面&#xff08;常见面试题&#xff09; 基本问题 介绍下 Java 内存区域…

SLAM前端 ---------特征提取之ORB(ORB与SIFT与SURF)

ORB 论文翻译&#xff1a; 一种特征匹配替代方法&#xff1a;对比SIFT或SURF 1.ORB特征简介 ORB是Oriented FAST and Rotated BRIEF&#xff08;oFAST and rBRIEF&#xff09;的简称&#xff0c;ORB的名字已经说明了其来源&#xff0c;其实ORB特征是采用FAST方法来检测提取特…

oracle 内存分配和调优 总结

一直都想总结一下oracle内存调整方面的知识&#xff0c;最近正好优化一个数据库内存参数&#xff0c;查找一些资料并且google很多下。现在记录下来&#xff0c;做下备份。 一、概述&#xff1a; oracle 的内存可以按照共享和私有的角度分为系统全局区…

【ACM】Doubly Linked List(STL list)

题目链接&#xff1a;https://vjudge.net/problem/Aizu-ALDS1_3_C 这一题一开始的时候想的是用vector&#xff0c;超时 #include <iostream> #include <stack> #include <cstdio> #include <cstring> #include <queue> #include <vector>…

IOS获取焦点页面上移问题

var u navigator.userAgent; var flag; var myFunction; var isIOS !!u.match(/(i1;( U;)? CPU.Mac OS X/); if (isIOS) { document.body.addEventListener(focusin, () > { //软键盘弹起事件flag true;clearTimeout(myFunction); }) document.body.addEventListener(f…

SLAM之特征匹配(二)————RANSAC--------翻译以及经典RANSAC以及其相关的改进的算法小结

本文翻译自维基百科&#xff0c;英文原文地址是&#xff1a;http://en.wikipedia.org/wiki/ransac RANSAC是“RANdom SAmple Consensus&#xff08;随机抽样一致&#xff09;”的缩写。它可以从一组包含“局外点”的观测数据集中&#xff0c;通过迭代方式估计数学模型的参数…

【ACM】树 小结

树是一种表达层级结构的数据结构&#xff0c;也是实现高效算法与数据结构的基础。 学习之前的基础&#xff1a;数组&#xff0c;循环处理&#xff0c;结构体&#xff0c;递归函数。 树&#xff1a;由结点&#xff08;node&#xff09;和连接结点的边&#xff08;edge&#xf…

【cocos2d-js官方文档】九、cc.loader

概述 原来的cc.Loader被改造为一个单例cc.loader&#xff0c;采用了插件机制设计&#xff0c;让loader做更纯粹的事。 各种资源类型的loader可以在外部注册进来&#xff0c;而不是直接将所有的代码杂揉在cc.Loader中&#xff0c;更好的方便管理以及用户自定义loader的创建。 cc…

更换VC后DDC提示证书不可用

问题描述&#xff1a;客户环境由Windows VC更换成Linux VC后&#xff0c;DDC提示证书不可用问题原因&#xff1a;因为VC更换后&#xff0c;存储在DDC数据库HostingUnitServiceSchema.HypervisorConnectionSSLThumbprint表中证书指纹信息和新得VC证书指纹信息不匹配。解决方法&a…

尺度空间理论与图像金字塔

我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性。也就是说使用卷积就是为了提取显著特征&#xff0c;减少特征维数&#xff0c;减少计算量。 在对图像进行卷积操作后的只管现象&#xff1a;图像变得模糊了&#xff0c;可是我们依然能够分辨出是什么&#x…

【ACM】 multiset 的 一些应用

一、The kth great number 题目链接&#xff1a;https://vjudge.net/problem/HDU-4006 用set写超时 &#xff08;在VJ里&#xff0c;用C显示Compilation Error&#xff0c;选择G&#xff0c;则是TLE&#xff09; #include <iostream> #include <set> #include &…

apache2.2 做后端,增加真实ip到日志中

apache2.2使用mod_remoteip模块 一.安装 wget https://github.com/ttkzw/mod_remoteip-httpd22/raw/master/mod_remoteip.c/usr/local/apache/bin/apxs -i -c -n mod_remoteip.so mod_remoteip.c 二.添加Apache配置vi /usr/local/apache/conf/httpd.confInclude conf/extra/htt…

高可用方案系统架构

2019独角兽企业重金招聘Python工程师标准>>> 高可用方案 系统架构 转载于:https://my.oschina.net/qiongtaoli/blog/3007587

OpenCV3.2.0+VS2017在window10开发环境配置记录

本机环境&#xff1a;win10 64位 OpenCV3.2.0 Visual Studio 2017 最后结果&#xff0c;亲测可用OpenCV官方下载地址&#xff1a; http://opencv.org/releases.html#本人选择opencv3.2.0基于Windows平台。读者根据自己需要选择合适版本及平台下载。 选择window版本的opencv下载…

C++vector迭代器失效的问题

转载:http://blog.csdn.net/olanmomo/article/details/38420907 转载:http://blog.csdn.net/stpeace/article/details/46507451 转载:http://www.cnblogs.com/xkfz007/articles/2509433.html 转载:http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/13/2636375.html 有这样…

【HDU】1251统计难题 (字典树:二维数组,结构体数组,链表,map)

使用二维数组或者结构体数组都可以&#xff0c;但是在计数的时候有一点点小区别 一、结构体数组 #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <string> typedef long long ll; using namespace…

Jmeter干货 不常用却极其有用的几个地方

1. Jmeter测试计划下Run Thread Groups consecutively 表示序列化执行测试计划下所有线程组中的各个请求 如下图配置&#xff0c;新建的测试计划中&#xff0c;不默认勾选此项&#xff0c; 而享用Jmeter做接口自动化测试的同学们&#xff0c;会发现一个问题是&#xff0c;可能多…

图像滤波总结(面试经验总结)

目录 图像平滑处理&#xff0c;6种滤波总结的综合示例 【盒式滤波、均值滤波、高斯滤波、中值滤波、双边滤波导向滤波】 1-图像滤波 2-代码演示 3-显示结果 4-程序说明 5 角点检测&#xff08;Harris,Fast,surf&#xff09; 图像平滑处理&#xff0c;6种滤波总结的综合示…

【小贴士】DEV 多行注释

多行注释 Ctrl / 取消多行注释 Ctrl &#xff0c;

JSP+Servlet基础一

2019独角兽企业重金招聘Python工程师标准>>> JSP中的指令: 格式&#xff1a;<%指令的名称(page&#xff0c;taglib&#xff0c;include...) 属性属性值%> 指令中的page&#xff1a;用于整个页面&#xff0c;定义与页面相关的属性。page属性一共有13个。 1、常…

Chameleon跨端框架——壹个理想主义团队的开源作品

文章较长&#xff0c;信息量很大&#xff0c;请耐心阅读&#xff0c;必然有收获。下面正文开始~背景解决方案原理久经考验生产应用举例易用性好多态协议学习成本低渐进式接入业内对比后期规划理想主义历经近20个月打磨&#xff0c;滴滴跨端方案chameleon终于开源了github.com/d…

尺度空间理论与图像金字塔(二)

SIFT简介 整理一下方便阅读&#xff0c;作者写的东西摘自论文&#xff0c;在此感谢xiaowei等的贡献 DoG尺度空间构造&#xff08;Scale-space extrema detection&#xff09;http://blog.csdn.net/xiaowei_cqu/article/details/8067881关键点搜索与定位&#xff08;Keypoint l…

仿桌面通知pnotify插件

在做网站的时候&#xff0c;alert弹出框是非常常见的情形。但是&#xff0c;有些情况下&#xff0c;弹框对用户来说是并不友好的。调研了几个其他的提示插件了&#xff0c;发现pnotify比较好用&#xff0c;可配置性也高。 使用示例&#xff1a; <!DOCTYPE html> <html…

【HDU】1305 Immediate Decodability(字典树:结构体数组,二维数组,链表/指针)

一、用的二维数组 #include <iostream> #include <cstring> #include <algorithm> using namespace std;const int maxn 100; int tr[maxn][2]; int mk[maxn]; int tot;void insert(string s) {int u 0;for(int i0;i<s.length();i){int x s[i]-0;if(tr…

Hyperledger Grid:一个用于分布式供应链解决方案的框架

Hyperledger在最近的一篇博文中发布了一个名为Hyperledger Grid的新项目。Grid是一个用于集成分布式账本技术&#xff08;DLT&#xff09;解决方案与供应链行业企业业务系统的框架。该项目提供了一个参考架构、通用数据模型和智能合约&#xff0c;所有这些都是基于开放标准和行…