gopher-1.png
gopher-one.png
大家好,我叫谢伟,是一名程序员。
今天和大家谈谈项目的组织结构。在这之前的文章,我给大家推荐了一个适合爬虫的项目组织结构:
workspace
download
download.go
engine
engine.go
objects.go
infra
utils.go
main
main.go
parse
github
github_trending_parse.go
整个项目设计成下面几块:
这样把逻辑顺序理顺了,写代码的逻辑顺序也理顺了。知道什么地方做什么。之所以对项目进行良好的组织,一方面是便于理清逻辑顺序,一方面是便于项目的可扩展性,低耦合性。
什么意思呢。
打个比方,你现在的解析层是解析的是github 网站的源代码,如果将数据和业务等混杂在一起,以后可能你换一个网站抓取,代码就需要改动。这样的强耦合性失去了代码的可扩展,完全不适合扩展。
好,上面的例子是我借鉴之后形成的专门给爬虫定下的框架。
这个例子可能没有说服力。
再举个例子:beego 是著名的 HTTP 框架。
整体设计架构分为八大独立的模块构成,高度解耦。
architecture.png
└─beego
├─.github
├─cache
│ ├─memcache
│ ├─redis
│ └─ssdb
├─config
│ ├─env
│ ├─xml
│ └─yaml
├─context
│ └─param
├─grace
├─httplib
├─logs
│ ├─alils
│ └─es
├─migration
├─orm
├─plugins
│ ├─apiauth
│ ├─auth
│ ├─authz
│ └─cors
├─session
│ ├─couchbase
│ ├─ledis
│ ├─memcache
│ ├─mysql
│ ├─postgres
│ ├─redis
│ └─ssdb
├─swagger
├─testing
├─toolbox
├─utils
│ ├─captcha
│ ├─pagination
│ └─testdata
└─validation
这些独立的模块最后反应在项目组织上就是一个个相互独立的文件夹,各个文件夹下完成相应的任务。
所以,我们需要打造属于自己的项目框架(项目组织结构)。当然需要按场景来,比如,这是一个 web 项目,你还傻乎乎的按照上文提的爬虫的项目组织进行组织代码。
相信你是孤独的
我司技术教练正在推进领域驱动设计(Domain-Driven-Design DDD),强调将分析模型和领域模型当做一个不可分割的实体进行代码梳理和设计。
先讲述下领域驱动设计的层结构:
我认识不是太深刻。
在此还是分享下提供restful api 服务的项目组织结构,希望对大家有帮助,而且这个项目结构会是我今后主推的代码框架。直到能够熟练的使用。
workspace
app
domain
infra
main
scheduler
scheduler.go
ui
api-server
api_server.go
router_function.go
parse
parse
所以:
ui
api-server
api_server.go
router_function.go
parse
parse
不难发现,对于一个 restful api 服务,UI 层便是 http 的那些东西、和用户解析数据的那些东西
app
app 层是应用层:比如说 restful api 需要操作的是一个学生管理系统,那么App 便是和 学生、学校有关的一些应用
domain
domain 层:领域层,学生管理系统,那么领域表示学生、学校、知识、课本等这些属于该一领域的知识集;PaaS 系统,那么领域表示组件、安装部署、场景等属于该一领域的知识集
infra
infra 基础设施层:为其他层提供服务,比如字符串操作、比如排序操作、比如数据清洗操作等
scheduler
scheduler 调度层,UI 层API 和 APP 实体存在一些调度关系,都交于scheduler 层进行操作。
main
主函数入口,启动 restful api 服务等。
以上就是我想本节分享的关于项目结构和组织的两个框架:1. 一个适用于爬虫 2. 一个适用restful api 服务
再会,我是谢伟。