From a2eee8b3d20aec69722847ce848506290e46ffaf Mon Sep 17 00:00:00 2001 From: Xargin Date: Mon, 28 May 2018 19:19:32 +0800 Subject: [PATCH] update --- ch6-web/ch6-08-layout-of-web-project.md | 12 ++---------- images/ch6-08-control-flow-2.png | Bin 0 -> 36107 bytes 2 files changed, 2 insertions(+), 10 deletions(-) create mode 100644 images/ch6-08-control-flow-2.png diff --git a/ch6-web/ch6-08-layout-of-web-project.md b/ch6-web/ch6-08-layout-of-web-project.md index 4ebc38c..2af7d3c 100644 --- a/ch6-web/ch6-08-layout-of-web-project.md +++ b/ch6-web/ch6-08-layout-of-web-project.md @@ -127,16 +127,8 @@ type FeatureSetParams struct { 虽然我们成功地使自己的项目在入口支持了多种交互协议,但是还有一些问题没有解决。本节中所叙述的分层没有将 middleware 作为项目的分层考虑进去。如果我们考虑 middleware 的话,请求的流程是什么样的? -TODOTODO,这里是带上 middleware 之后的请求图。 +![control flow 2](../images/ch6-08-control-flow-2.png) -之前我们学习的 middleware 是和 http 协议强相关的,在项目支持了多种协议之后,这种和协议强绑定的 middleware 成为了我们的瓶颈。如果我们坚持用之前的 middleware 方案的话,这里 thrift 的请求路线就还需要再多写一套 thrift 自己的 middleware,将业务无关的代码重复地写了两遍。请求流程变成了这样: - -TODOTODO,这里是加入 middleware 之后的多协议框架请求处理流程。 +之前我们学习的 middleware 是和 http 协议强相关的,遗憾的是在 thrift 中看起来没有和 http 中对等的解决这些非功能性逻辑代码重复问题的 middleware。所以我们在图上写 `thrift stuff`。这些 `stuff` 可能需要你手写去实现,然后每次增加一个新的 thrift 接口,就需要去写一遍这些非功能性代码。。 这也是很多企业项目所面临的真实问题,遗憾的是开源界并没有这样方便的多协议 middleware 解决方案。 - -怎么解决这个问题呢,也不麻烦。把协议处理从 controller 中独立出去,新的 middleware 写在协议处理层后面。如图: - -TODOTODO,这里有图,是将 middleware 后置之后的请求处理流程。 - -是不是感觉项目变的越来越复杂了?真实的项目就是这样一步一步,根据需求演进而来的。 diff --git a/images/ch6-08-control-flow-2.png b/images/ch6-08-control-flow-2.png new file mode 100644 index 0000000000000000000000000000000000000000..95b3bc7883e5ca89890dbd090d7b82607812fd72 GIT binary patch literal 36107 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 literal 0 HcmV?d00001