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

目录
相关文章
|
前端开发 关系型数据库 Go
Go语言学习路线 - 5.基础篇:从一个web项目来谈Go语言的技能点
经过了 入门篇 的学习,大家已经初步了解Go语言的语法,也能写常见的代码了。接下来,我们就从一个Web项目入手,看看一些常见的技能与知识吧。 我们先简单地聊一下这个Web项目的背景:我们要做的是一个简单的web系统 ,有前端同学负责界面的开发,后端不会考虑高并发等复杂情况。
101 0
|
14天前
|
安全 Java Go
Go语言有哪些优势
【10月更文挑战第10天】Go语言有哪些优势
13 0
|
3月前
|
Java Go 开发者
|
5月前
|
缓存 Java Go
如何用Go语言构建高性能服务
【6月更文挑战第8天】Go语言凭借其并发能力和简洁语法,成为构建高性能服务的首选。本文关注使用Go语言的关键设计原则(简洁、并发、错误处理和资源管理)、性能优化技巧(减少内存分配、使用缓存、避免锁竞争、优化数据结构和利用并发模式)以及代码示例,展示如何构建HTTP服务器。通过遵循这些原则和技巧,可创建出稳定、高效的Go服务。
|
6月前
|
缓存 监控 测试技术
【Go语言专栏】使用Go语言构建高性能Web服务
【4月更文挑战第30天】本文探讨了使用Go语言构建高性能Web服务的策略,包括Go语言在并发处理和内存管理上的优势、基本原则(如保持简单、缓存和并发控制)、标准库与第三方框架的选择、编写高效的HTTP处理器、数据库优化以及性能测试和监控。通过遵循最佳实践,开发者可以充分利用Go语言的特性,构建出高性能的Web服务。
57 0
|
6月前
|
开发框架 JSON Go
Go语言Web开发基础与框架探索
【2月更文挑战第21天】本文将带领读者深入了解Go语言在Web开发领域的基础知识和常用框架。通过介绍Go语言的Web开发特点、核心库的使用,以及流行框架如Gin、Echo等的基本用法和优势,帮助读者快速上手Go语言Web开发,提升开发效率。
|
6月前
|
存储 缓存 网络协议
Go语言并发编程实战:构建高性能Web服务器
【2月更文挑战第6天】本文将通过构建一个高性能的Web服务器实战案例,深入探讨如何在Go语言中运用并发编程技术。我们将利用goroutine和channel实现高效的请求处理、资源管理和并发控制,以提升Web服务器的性能和稳定性。通过这一实战,你将更好地理解和掌握Go语言在并发编程方面的优势和应用。
|
12月前
|
传感器 物联网 编译器
Go语言在硬件开发领域的应用
Go语言在硬件开发领域的应用
|
12月前
|
安全 前端开发 测试技术
|
前端开发 安全 JavaScript
Go语言 vs. 其他编程语言:谁更胜一筹?
Go语言 vs. 其他编程语言:谁更胜一筹?
130 0