背景
EPO项目每个模块都有一个Web , Web 项目编码核心部分就是Controls,其职责是:
接收浏览器请求
调用后台WCF,返回JSON
鉴权: 识别当前用户,将用户StaffId 传递给WCF 服务
下面我们来看2个
EPO V1的controls (基于aspx 页面写的)
EPO V2的controls基于asp.net web api写的
在web 端 我们尽量避免业务逻辑代码, 所以web 端control就成了请求中转; 大家在写后台服务的时候, 如果前端(jquery,vue,angular)需要使用, 就在web 的control 添加一个Action暴露给浏览器调用; 导致以下情况出现
随着采购平台的模块增大, 其web模块也是不断增多
Web的职责变得仅仅只是请求中转
方法及参数都是依赖后台服务, 构建的过程大多是从后台拷贝过来
后台服务变更,web 的 action就要跟着变
解决方案
创建通用 Api 来转发前端请求, 如下:
浏览器及第三方系统通过Api 网关能访问到后台wcf, 不用再部署单独的web站点暴露api:
支持访问控制 (基于Cookies,Token鉴权)
请求WCF 自动带上Staffid (取登录用户)
可配置部分接口拒绝访问(不对外公开的wcf)
参数支持datatable,dataset
请求可跟踪
在Postman 测试 调用 需求模块的服务如下:
UI就可以像访问web control 一样访问后台wcf service
在SPA项目中, 往往一个SPA 对应到后台多个service , 那么API网关使用后,开发重心就可以放在 ui 及Service 中, 整个开发过程也更加优雅。
领取专属 10元无门槛券
私享最新 技术干货