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

相关文章
|
2月前
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
3月前
|
Cloud Native JavaScript API
一文读懂云原生 go-zero 微服务框架
一文读懂云原生 go-zero 微服务框架
|
2月前
|
消息中间件 NoSQL Go
PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践
【9月更文挑战第7天】在从 PHP 的 ThinkPHP 框架迁移到 Go 的 Gin 框架时,涉及 Redis 延时消息队列的技术实践主要包括:理解延时消息队列概念,其能在特定时间处理消息,适用于定时任务等场景;在 ThinkPHP 中使用 Redis 实现延时队列;在 Gin 中结合 Go 的 Redis 客户端库实现类似功能;Go 具有更高性能和简洁性,适合处理大量消息。迁移过程中需考虑业务需求及系统稳定性。
|
3月前
|
安全 JavaScript 前端开发
PHP与现代Web开发:探索语言的演变和挑战
【8月更文挑战第9天】本文深入探讨了PHP作为一门历史悠久的编程语言在现代Web开发中的地位,分析了它如何适应不断变化的技术环境。文章首先回顾了PHP的起源及其在Web开发中的早期应用,随后讨论了PHP 7及更高版本带来的性能提升和新特性,以及这些变化对开发者的意义。最后,文章探讨了PHP面临的挑战,包括与其他现代编程语言的竞争,安全性问题,以及社区和生态系统的支持。通过这篇文章,读者将获得对PHP在现代Web开发中角色的全面理解,以及它如何继续发展以适应新的技术要求。
33 3
|
3月前
|
Go API 数据库
[go 面试] 分布式事务框架选择与实践
[go 面试] 分布式事务框架选择与实践
|
3月前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
37 0
|
3月前
|
开发者 自然语言处理 存储
语言不再是壁垒:掌握 JSF 国际化技巧,轻松构建多语言支持的 Web 应用
【8月更文挑战第31天】JavaServer Faces (JSF) 框架提供了强大的国际化 (I18N) 和本地化 (L10N) 支持,使开发者能轻松添加多语言功能。本文通过具体案例展示如何在 JSF 应用中实现多语言支持,包括创建项目、配置语言资源文件 (`messages_xx.properties`)、设置 `web.xml`、编写 Managed Bean (`LanguageBean`) 处理语言选择,以及使用 Facelets 页面 (`index.xhtml`) 显示多语言消息。通过这些步骤,你将学会如何配置 JSF 环境、编写语言资源文件,并实现动态语言切换。
38 0
|
3月前
|
Rust 安全 Java
Rust语言在Web后端的应用:基于Actix-web构建高性能、安全可靠的服务器实践
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的无限潜力。
95 0
|
3月前
|
SQL JavaScript Go
Go Web 服务框架实现详解
Go Web 服务框架实现详解
|
3月前
|
存储 Prometheus 中间件
2020最佳人气项目之Go Web框架
2020最佳人气项目之Go Web框架