dotweb——go语言的一个微型web框架(一)
dotweb是16年正式托管到github的一个开源项目,go语言的web框架目前也有很多,出名的有bee和echo。它们都是很优秀的框架,但是我们喜欢更轻、更小的东西,经历一些之后我们更青睐微服务这个设计理念。
dotweb是一个国人写的开源项目,据我所知它已经在多家公司的生产项目中使用,到目前为止它和早些年的web框架比显得很年轻,目前它还在以一种很快速的迭代速度完善。我们计划会在2017年推出1.0版本,那时候dotweb可以满足各种场景下的功能需求。我们在完善dotweb的过程中,轻巧是我们的原则,我们不是要做一个大而全的web框架(因为现在已经有这种框架了)我们要做的是一个小而精的框架,它会对扩展很友好,开发速度高效,性能良好。
dotweb的githun地址是:https://github.com/devfeel/dotweb,我们欢迎您提出建议或者贡献代码,我们也欢迎您加入官方QQ群,群号可以在github上找到。
dotweb和springmvc或者asp.net一样吗?它们是有不同的,springmvc和asp.net都是非常优秀的web框架,它们功能强大、性能良好、有着很高的开发效率,但是除此之外dotweb还有一个很迷人的特性——自宿主。有些朋友可能会疑惑什么叫做自宿主?如果您了解asp.net core您应该知道asp.net core可以脱离iis启动,iis作为一个web服务器它就是web程序的宿主,自宿主就是可以脱离传统web服务器自己启动运行。所以说dotweb既是一个web框架又是一个web服务器,自宿主也不可能脱离web服务器,只不过它脱离了传统的web服务器在内部集成了一个微型的web服务器。
oh,my god!它不使用传统web服务器,它性能会不会很差?我如何相信它的性能呢?事实上您不需要对性能太担心,go语言本身性能就很高,dotweb是用原生的go语言实现,dotweb性能就算不让人惊艳也不会差。在已上线的项目中,dotweb表现很令人满意,它在高并发的场景中占用的服务器资源却很少,这和go语言的特性是密不可分的。在今后的版本迭代中,性能是我们最关注的事情,我们会不遗余力的优化性能。
dotweb还有一个优点就是它很简单,如果您懂得go语言,那么读懂dotweb的源码是件很容易的事情。我们追求的就是精简,我们不会为了炫耀一些技巧就把代码写得不那么易懂,我们只会用最简洁的代码,您随时可以根据自己的需求修改dotweb的源码,这完全是可以的,dotweb不是一成不变的。
dotweb天生对分布式友好,你会发现它的session支持redis存储,未来版本支持基于cookie存储的session实现,更别说cache这类本身就需要分离的模块了。所以对未来业务扩展或是集群架设,dotweb都有着很好的支持。
dotweb对长连接和websocket也有着很好的支持,实测单机百万长连接。
dotweb内置了一个监控服务,通过它您可以查询dotweb的运行状态,这个服务我们计划在以后的时间里增强功能,方便用户掌握dotweb的状态。
更多的dotweb特性您可以登录github的dotweb项目地址查看,地址已经在上方贴出。您也可以加入官方QQ群咨询关于dotweb问题,我们会提供答疑。本篇文章将是dotweb系列文章第一篇,在接下来的文章中我会给大家详细介绍dotweb使用方法。重申以便,我们欢迎您对dotweb提出建议或者贡献代码,并且我们也感谢您提出建议或贡献源码,dotweb是一个开源、免费的项目,我们希望它能给您带来便利。
思来想去还是写个hello,world吧,仿佛不写就不像是编程技术博客一样。
第一步:您可以执行go get -u github.com/devfeel/dotweb 命令安装dotweb。
第二步:在您的go源文件中添加import "github.com/devfeel/dotweb"引用。
第三步:
func main(){
dotapp := dotweb.New()
dotapp.SetLogPath("/home/logs/wwwroot/")
dotapp.HttpServer.Router().Get("/index",func(ctx *dotweb.HttpContext){
ctx.WriteString("Hello,World!")
})
dotapp.StartServer(8080)
}
博客园竟然不支持GO语言代码块,囧,在以后的文章我会使用截图,不过幸好js的风格可以伪装下Go语言代码块。
dotweb——go语言的一个微型web框架(一)的更多相关文章
- dotweb——go语言的一个微型web框架(二)启动dotweb
以上的代码截图表示启动一个dotweb服务,在浏览器里输入127.0.0.1:8080,将会得到一个"index"的页面. app := dotweb.New() dotweb.N ...
- dotweb——go语言的一个微型web框架(三)路由注册
上一章我们讲了如何启动一个dotweb程序,本篇文章将介绍如何注册路由. router是dotweb用来管理路由的结构体,它提供了一些关于路由操作函数. app := dotweb.New() rou ...
- 【Flask】微型web框架flask大概介绍
Flask Flask是一个基于python的,微型web框架.之所以被称为微型是因为其核心非常简单,同时具有很强的扩展能力.它几乎不给使用者做任何技术决定. 安装flask时应该注意其必须的几个支持 ...
- .NET的微型Web框架 Nancy
.NET的微型Web框架 Nancy .NET的微型Web框架 Nancy 大部分微软平台的开发人员如果选择开发框架只能是在ASP.NET WEBFORM和ASP.NET MVC两个之间选择. 而 ...
- 笔记:学习go语言的网络基础库,并尝试搭一个简易Web框架
在日常的 web 开发中,后端人员常基于现有的 web 框架进行开发.但单纯会用框架总感觉不太踏实,所以有空的时候还是看看这些框架是怎么实现的会比较好,万一要排查问题也快一些. 最近在学习 go 语言 ...
- 运行第一个Go Web框架
GO 语言的web框架很多,相对来说, Beego 框架,入门简单,文档齐全(中文),功能强大,本文以Beego 示例. Beego提供了详细的开发文档:http://beego.me/docs/in ...
- 探讨后端选型中不同语言及对应的Web框架
在进行后端选型的时候,实际上我们要选择的是一个框架.后端领域所使用的技术和框架已经趋于稳定,我们只需要按我们的需要选择所需要的框架.当存在多个框架适合时,我们再选择适合的语言.不得不指出的是,当我们喜 ...
- 选择一个 Python Web 框架:Django vs Flask vs Pyramid
Pyramid, Django, 和 Flask都是优秀的框架,为项目选择其中的哪一个都是伤脑筋的事.我们将会用三种框架实现相同功能的应用来更容易的对比三者.也可以直接跳到框架实战(Framework ...
- 使用go语言开发一个后端gin框架的web项目
用liteide来开发go的后端项目,需要注意的是环境变量要配置正确了 主要是GOROOT, GOPATH, GOBIN, PATH这几个, GOPATH主要用来存放要安的包,主要使用go get 来 ...
随机推荐
- 一个想法(续四):IT技术联盟创业众筹进度公示
为了将整个创业过程更加的公开公正透明化,特开此篇用于展示众筹进度. 首轮众筹进度如下:(每天24点更新1次)
- MVC - 云服务器部署
本章将和大家分享的是如果在云服务器上部署mvc,云服务器部署其实也不高大上,就和咋们在自己电脑上用iis发布部署站点一样,只是需要使用云解析把自己购买的域名解析到对应的自己的云服务器上,这些都是用的云 ...
- Swift2.2 看完这篇博客 你不想懂也会懂得----二叉树
一:初衷 我自己也好奇,为什么莫名其妙的想起写这个,其实数据里面包含的结构和逻辑我自己觉得才是最原始经典的,最近也在学swift,就向着利用swift整理一些二叉树.自己刚开始的时候也是用OC看着别的 ...
- github在windows下的安装和基本使用
1.在win下安装github时花费的时间是非常长的,有时还会出现因各种原因安装不成功.离线包本地安装方便的解决了此问题.点击http://pan.baidu.com/s/1boGrNLP可下载,解压 ...
- java socket tcp(服务器循环检测)
刚才看了下以前写了的代码,tcp通信,发现太简单了,直接又摘抄了一个,运行 博客:http://blog.csdn.net/zhy_cheng/article/details/7819659 优点是服 ...
- webpack1.x 升级到 webpack2.x 英文文档翻译
近日项目要升级到webpack2.2,原来使用的webpack版本是1.12,在升级项目的同时,翻译一下官方的升级文档,去掉了一些不常用的配置 resolve.root, resolve.fallba ...
- jquery实现显示和隐藏toggle()方法的使用
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- typedef struct 是什么意思
typedef用于定义一种新类型例如定义了如下的结构typedef struct student{int age;int score;}STUDENT;那么则有STUDENT stu1;就相当于str ...
- 《C++ Primer》读书笔记—第二章 变量和基本类型
声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.8比特的char类型计算机表示的实际范围是-12 ...
- JTextArea与TextArea自动换行和滚动条的区别对比
最近在用Java写一个仿记事本的程序,但是发现用JTextArea写的效果有点差,但是用TextArea自动换行并不那么方便,经过对比和实践,我也发现自己对这两个标签认识存在不足,下面就来讨论一下他们 ...