发表日期: 2021-04-26 09:37:01 浏览次数:121
如皋小程序制作【如皋企业邮箱】如皋网站外包、如皋微信商城开发、如皋网店美工、如皋淘宝设计
如皋市,简称“如”或“皋”,江苏省辖县级市,由南通市代管,江苏省历史文化名城。地处长江三角洲北翼,位于南通、泰州、苏州三市交界处,南与张家港市隔江相望,北与海安市、东与如东县连接、东南与南通市通州区毗邻,西与泰兴市、西南与靖江市接壤。全市总面积1477平方公里(不含长江水面),长江水面99平方千米。如皋长江岸线全长48千米,可直接利用长江深水岸线18.6千米。
如皋市被国际自然医学会评为世界六大长寿乡之一。 [1] 如皋市户籍人口约142万。截至2021年1月1日,全市80周岁以上高龄老人68031人,90周岁以上高龄老人10150人,百岁老人达525位,其中105岁以上达16位。 [2]
2019年6月17日,如皋被中华人民共和国住房和城乡建设部选取作为开展规范城市户外广告设施管理工作试点城市。 [3] 2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国绿色发展百强县市、2019年度全国新型城镇化质量百强县市、2019全国营商环境百强县。 [4-6] 2020年12月,社科院发布《全国县域经济综合竞争力100强》,如皋排名第31 [7] 。
这里以扩展XML返回格式为例,简单说明。首先,添加并实现一个子类,把结果转换为XML:
// $ vim ./Shop/Common/Response/XML.php<?phpclass Common_Response_XML extends PhalApi_Response {
protected function formatResult($result) {
// TODO:把数组$result格式化成XML ...
}}复制代码温馨提示:关于数组转XML,可参考将PHP数组转成XML,或Convert array to XML in PHP。
随后,在Shop项目的入口文件中重新注册。
// $ vim ./Public/shop/index.phpDI()->response = 'Common_Response_XML';复制代码
再次请求Hello World接口服务时,可以看到结果已经改用XML返回。
<?xml version="1.0" encoding="utf-8"?><data><ret>200</ret><data>Hello World</data><msg></msg></data>复制代码
前面我们已经学习了接口请求与接口响应,若把接口服务视为一个黑盒子,我们相当于已经了解这个黑盒子的输入与输出。但作为专业的软件开发工程师,我们还应洞悉这个黑盒子其中的构造、原理和细则。在全方位掌握整个接口服务流程的构建后,才能更清楚该如何编排代码的层级,同时通过关注点分离对每个层级的职责有个统一的共识,从而便于产生灵活、规范、高质量、容易维护的代码。
在传统Web框架中,惯用MVC模式。可以说,MVC模式是使用最为广泛的模式,但同时也可能是误解最多的模式。然而,接口服务这一领域,与传统的Web应用所面向的领域和需要解决的问题不同,最为明显的是接口服务领域中没有View视图。如果把MVC模式生搬硬套到接口服务领域,不但会产生更多对MVC模式的误解,还不利于实际接口服务项目的开发和交付。
仔细深入地再思考一番,接口服务除了需要处理输入和输出,以及从持久化的存储媒介中提取、保存、删除、更新数据外,还有一个相当重要且不容忽视的任务——处理特定领域的业务规则。而这些规则的处理几乎都是逻辑层面上对数据信息的加工、转换、处理等操作,以满足特定场景的业务需求。对于这些看不见,摸不着,听不到的领域规则处理,却具备着交付有价值的业务功能的使命,与此同时也是最为容易出现问题,产生线上故障,引发损失的危险区。所以,在接口服务过程中,我们应该把这些领域业务规则的处理,把这些受市场变化而频繁变动的热区,单独封装成一层,并配套完备的自动化测试体系,保证核心业务的稳定性。
基于以上考虑,在MVC模式的基础上,我们去掉了View视图层,添加了Domain领域业务层。从而涌现了Api-Domain-Model模式,简称ADM模式。
简单来说,
Api层 称为接口服务层,负责对客户端的请求进行响应,处理接收客户端传递的参数,进行高层决策并对领域业务层进行调度,最后将处理结果返回给客户端。
Domain层 称为领域业务层,负责对领域业务的规则处理,重点关注对数据的逻辑处理、转换和加工,封装并体现特定领域业务的规则。
Model层 称为数据模型层,负责技术层面上对数据信息的提取、存储、更新和删除等操作,数据可来自内存,也可以来自持久化存储媒介,甚至可以是来自外部第三方系统。
下面再分别展开说明。
在2015年大会上,我所敬仰的偶像Martin Fowler,通过下面这张Slice再次分享了何为微服务。

图2-2 Martin Fowler对微服务的定义
这里提到的微服务概念,对应PhalApi框架中的接口服务,主要体现在Api接口服务层。微服务与接口服务有些微妙的区别,但不管何种说法,我们都应该关注微服务里所提及到的这几点重要特质:
小,且专注于做一件事情
独立的进程中
轻量级的通信机制
松耦合、独立部署
Api接口服务层,主要是负责响应客户端的请求,在抽象层面进行决策并对领域层进行调度,最后返回相应的结果。
