zpjx 发表于 2018-12-18 10:07:59

PHP与Spring之间的强势接口设计:学习案例


高焕堂TCLUB微信讲座(2015/9/29)内容分享
从编程到设计.学习案例(1)
PHP与Spring之间的强势接口设计

by 高煥堂(2015.10.1)



前言:
这是高焕堂TClub微信讲座(2015/9/29)的内容,与大家分享,欢迎免费加入TClub。详细请参考:http://www.cnblogs.com/SmartADT/。
大家都知道,要学好软件(或架构)设计,不是从业务或需求开始,而是从接口(Interface)设计出发,才是迅速成为有效(架构)设计师的鸟语花香之路。因为业务(或需求分析)的焦点在于流程(Business flow),而软件(架构)设计的天赋职责就在于结构(Structure),这结构是用来支撑互联网时代下的千变万化企业流程,而未来企业环境、需求与流程的是不可知的,所以才需要(架构)设计。
    因此,知道结构与流程是分别来自不同而互补的两个面向(Dimension),软件(架构)设计师必须基于两个不同视角(View)来设计架构和规划流程。因此,软件(架构)设计不是从业务(或需求)流程开始,而是从接口设计出发的,而接口不是从业务(领域)或需求抽象出来的。许多初学软件设计者常常迷失于其中,没关系的,我(高老师)陪您越过这个原野,驰聘于广阔无垠的软件世界。您可听听高老师怎么说=> 下载高老师视频(免费)
   
一、目标

[*]  设计通用性(又称通用型)接口(Interface),让我们自己能掌握系统架构里的接口制定权,拥有话语权,所以是一种强势型接口。
[*]  基于自己的接口,整合IWebShop、Spring和DBMS等外来平台框架,让这些外来的平台框架都成为可被我们抽换的架构性插件(Plugin)。
[*]  自己制定的(通用性)接口,成为各服务器之间的必经渠道,我们可以设计抽象(父类)来实现这项接口,来监控交易(Transaction)流动和流量,例如我们可以设计一个”看门狗(watch dog)”的类。
[*]  随着业务和系统的成长,将会增添更多上述的具象类(如watch dog类),逐渐形成我们自己的平台框架(Framework)了。
[*]  基于自己制定的接口和框架,才能让外来平台框架成为可抽换,可新陈代谢的模块,以避免我们的成长受制于外来平台的接口和功能,确保我们能弹性成长,支撑成千上百万的业务应用功能,并稳定、永续茁壮。

二、从外来平台出发

[*]  首先拿基于PHP的iWebShop和Spring两个外来的平台框架为例。
    http://images2015.cnblogs.com/blog/599835/201510/599835-20151001230730527-1349458168.jpg

[*]  我们来将两者分离。
    http://images2015.cnblogs.com/blog/599835/201510/599835-20151001230806621-738546941.jpg

[*]  让两者便成为Loosely-Coupled。
    http://images2015.cnblogs.com/blog/599835/201510/599835-20151001230840949-246226334.jpg

[*]  这项目目标实现途径就是:设计自己的;又称为。
    http://images2015.cnblogs.com/blog/599835/201510/599835-20151001230947605-2001180301.jpg

三、的角色

[*]  从业务应用(App)开发的视角来看,我们会在iWebShop框架里撰写特殊性业务逻辑,成为iWS App软件,并调用Sring框架里的共享性企业逻辑(Business logic, or Business object),以及DB Server里的数据。
   http://images2015.cnblogs.com/blog/599835/201510/599835-20151002064702683-1235677132.jpg

[*]  最典型的调用流程是:
   http://images2015.cnblogs.com/blog/599835/201510/599835-20151002064811527-1496455069.jpg

[*]  运用proxy-stub设计模式(Design pattern),让这iWS App可以掌握跨界的通信接口。
      http://images2015.cnblogs.com/blog/599835/201510/599835-20151002064851918-3009057.jpg


[*]  这个iWS App就包含两部分,例如:iwsActivity(扮演proxy角色)和iwsService(扮演stub角色)。其分别置于分界线的两边。
   http://images2015.cnblogs.com/blog/599835/201510/599835-20151002065410793-701943595.jpg   

[*]  最典型的调用流程是:
   http://images2015.cnblogs.com/blog/599835/201510/599835-20151002065449246-1594487926.jpg

[*]  设计我们自己的通用性接口:
   http://images2015.cnblogs.com/blog/599835/201510/599835-20151002065519636-1161762394.jpg

[*]  其典型的调用流程是:
   http://images2015.cnblogs.com/blog/599835/201510/599835-20151002065652824-2121026837.jpg

四、的设计要点:应用
页: [1]
查看完整版本: PHP与Spring之间的强势接口设计:学习案例