dotweb——go语言的一个微型web框架(一)

简介: dotweb是16年正式托管到github的一个开源项目,go语言的web框架目前也有很多,出名的有bee和echo。它们都是很优秀的框架,但是我们喜欢更轻、更小的东西,经历一些之后我们更青睐微服务这个设计理念。

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语言代码块。

目录
相关文章
|
SQL 缓存 JavaScript
Go 语言入门练手项目推荐
大家好,我是 roseduan,经常看到一些小伙伴学习完 Go 语言的基础知识之后,无法找到合适的练手项目,然后就很迷茫。 今天我向大家推荐几个我觉得还不错的 Go 语言入门练手项目,你可以根据自己的兴趣,选择一个合适的,自己去看看,学习一下。
1727 0
|
机器学习/深度学习 算法 语音技术
深入浅出:使用深度学习进行图像识别
【9月更文挑战第19天】本文将带你进入深度学习的神奇世界,了解如何通过神经网络实现图像识别。我们将从基础理论出发,逐步深入到实际应用,让你对深度学习在图像处理领域的强大能力有一个全面的认识。无论你是初学者还是有一定基础的学习者,都能从中获得新的启发和理解。让我们一起探索这个充满可能性的领域吧!
|
9月前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
394 8
|
数据采集 API 网络安全
Python Requests代理使用入门指南
《Python Requests 代理使用入门指南》将带你深入了解如何使用Python Requests库来配置HTTP代理,并灵活处理各种权限和服务器响应问题。从代理服务器的基础知识,到代理认证与授权设置,本指南为初学者提供了全面的教学内容。
Python Requests代理使用入门指南
|
设计模式 Go
Go语言事件系统设计解析:发布-订阅模式实战
Go语言事件系统设计解析:发布-订阅模式实战
775 0
|
Linux
Centos7设置增加swap分区
Centos7设置增加swap分区
865 1
|
Java
SpringBoot 发送邮箱验证码(HTML模板)
SpringBoot 发送邮箱验证码(HTML模板)
3692 0
SpringBoot 发送邮箱验证码(HTML模板)
|
JavaScript 索引 容器
vue element plus Carousel 走马灯
vue element plus Carousel 走马灯
559 0
|
移动开发 前端开发
基于若依的ruoyi-nbcio流程管理系统自定义业务撤回功能的修复
基于若依的ruoyi-nbcio流程管理系统自定义业务撤回功能的修复
186 0
|
Oracle 关系型数据库 Linux
服务器Centos7 静默安装Oracle Database 12.2
服务器Centos7 静默安装Oracle Database 12.2
544 0