Go Web编程 - (EPUB全文下载)
文件大小:0.31 mb。
文件格式:epub 格式。
书籍内容:
Go Web编程
第1章 Go与Web应用
第2章 ChitChat论坛
第二部分 Web应用的基本组成部分
第3章 接收请求
第4章 处理请求
第5章 内容展示
第6章 存储数据
第三部分 实战演练
第7章 Go Web服务
第8章 应用测试
第9章 发挥Go的并发优势
第10章 Go的部署
附录 安装和设置Go
欢迎来到异步社区!
第1章 Go与Web应用
本章主要内容
Web应用的定义
使用Go语言编写Web应用的优点
Web应用编程的基本知识
使用Go语言编写一个极为简单的Web应用
Web应用在我们的生活中无处不在。看看我们日常使用的各个应用程序,它们要么是Web应用,要么是移动App这类Web应用的变种。无论哪一种编程语言,只要它能够开发出与人类交互的软件,它就必然会支持Web应用开发。对一门崭新的编程语言来说,它的开发者首先要做的一件事,就是构建与互联网(internet)和万维网(World Wide Web)交互的库(library)和框架,而那些更为成熟的编程语言还会有各种五花八门的Web开发工具。
Go是一门刚开始崭露头角的语言,它是为了让人们能够简单且高效地编写后端系统(back end system)而创建的。这门语言拥有众多先进的特性,并且密切关注程序员的生产力以及各种与速度相关的事项。和其他语言一样,Go语言也提供了对Web编程的支持。自从问世以来,Go语言在编写Web应用以及“×即服务系统”(*-as-a-service system)方面就受到了热烈追捧。
本章接下来将列举一些使用Go编写Web应用的优点,并介绍一些关于Web应用的基本知识。
1.1 使用Go语言构建Web应用
“为什么要使用Go语言编写Web应用呢?”作为本书的读者,我想你肯定很想知道这个问题的答案。本书是一本教人们如何使用Go语言进行Web编程的图书,而作为本书的作者,我的任务就是向你解释为什么人们会使用Go语言进行Web编程。本书将在接下来的内容中陆续介绍Go语言在Web开发方面的优点,我衷心地希望你也能够对这些优点有感同身受的想法。
Go是一门相对比较年轻的编程语言,它拥有繁荣并且仍在不断成长的社区,并且它也非常适合用来编写那些需要快速运行的服务器端程序。因为Go语言提供了很多过程式编程语言的特性,所以拥有过程式编程语言使用经验的程序员对Go应该都不会感到陌生,但与此同时,Go语言也提供了函数式编程方面的特性。除了内置对并发编程的支持之外,Go语言还拥有现代化的包管理系统、垃圾收集特性以及一系列包罗万象、威力强大的标准库。
虽然Go自带的标准库已经非常丰富和宏大了,但Go仍然拥有许多质量上乘的开源库,它们可以对标准库不足的地方进行补充。本书在大部分情况下都会尽可能地使用标准库,但是偶尔也会使用一些第三方开源库,以此来展示开源社区提供的一些另辟蹊径并且富有创意的方法。
使用Go语言进行Web开发正变得日益流行,很多公司都已经开始使用Go了,其中包括Dropbox、SendGrid这样的基础设施公司,Square和Hailo这样的技术驱动的公司,甚至是BBC、纽约时报这样的传统公司。
在开发大规模Web应用方面,Go语言提供了一种不同于现有语言和平台但又切实可行的方案。大规模可扩展的Web应用通常需要具备以下特质:
可扩展;
模块化;
可维护;
高性能。
接下来的几小节将分别对这些特质进行讨论。
1.1.1 Go与可扩展Web应用
大规模的Web应用应该是可扩展的(scalable),这意味着应用的管理者应该能够简单、快速地提升应用的性能以便处理更多请求。如果一个应用是可扩展的,那么它就是线性的,这意味着应用的管理者可以通过添加更多硬件来获得更强的请求处理能力。
有两种方式可以对性能进行扩展:
一种是垂直扩展(vertical scaling),即提升单台设备的CPU数量或者性能;
另一种则是水平扩展(horizontal scaling),即通过增加计算机的数量来提升性能。
因为Go语言拥有非常优异的并发编程支持,所以它在垂直扩展方面拥有不俗的表现:一个Go Web应用只需要使用一个操作系统线程(OS thread),就可以通过调度来高效地运行数十万个goroutine。
跟其他Web应用一样,Go也可以通过在多个Go Web应用之上架设代理来进行高效的水平扩展。因为Go Web应用都会被编译为不包含任何动态依赖关系的静态二进制文件,所以我们可以把这些文件分发到没有安装Go语言的系统里,从而以一种简单且一致的方式部署Go Web应用。
1.1.2 Go与模块化Web应用
大规模Web应用应该由可替换的组件构成,这种做法能够使开发者更容易添加、移除或者修改特性,从而更好地满足程序不断变化的需求。除此之外,这种做法的另一个好处是使开发者可以通过复用模块化的组件来降低软件开发所需的费用。
尽管Go是一门静态类型语言,但用户可以通过它的接口机制对行为进行描述,以此来实现动态类型匹配(dynamic typing)。Go语言的函数可以接受接口作为参数,这意味着用户只要实现了接口所需的方法,就可以在继续使用现有代码的同时向系统中引入新的代码。与此同时,因为Go语言的所有类型都实现了空接口,所以用户只需要创建出一个接受空接口作为参数的函数,就可以把任何类型的值用作该函数的实际参数。此外,Go语言还实现了一些在函数式编程中非常常见的特性,其中包括函数类型、使用函数作为值以及闭包,这些特性允许用户使用已有的函数来构建新的函数,从而帮助用户构建出更为模块化的代码。
Go语言也经常会被用于创建微服务(microservice)。在微服务架构中,大型应用通常由多个规模较小的独立服务组合而成,这些独立服务通常可以相互替换,并根据它们各自的功能进行组织。比如,日志记录服务会被归类为系统级服务,而开具账单、风险分析这样的服务则会被归类为应用级服务。创建多个规模较小的Go服务并将它们组合为单个Web应用,这种做法使得我们可以在有需要 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Go Web编程 - (EPUB全文下载)