今天海浪分享一篇对系统组件化接口设计的一点看法。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1.   定义
这里的系统是指对于一个大系统(如供应链系统)来说划分成的若干小的项目包(如销售管理、采购管理、生产管理)。系统间的接口要讨论的是有关项目包间如何传递数据、数据传递的方式、接口程序及调用方式等问题。
2.   原则 
保持各项目包间的高度独立性,包括设计的独立性和运行的独立性。项目包间接口只允许数据接口,不允许系统间直接引用程序。
3.   方案
 
系统间接口采用双缓存的方案。即提供数据方与数据需求方都对数据进行缓存,缓存的格式在各系统设计时单独考虑,格式允许不同,由接口程序进行翻译。采用双缓存的方案,优点是:
·         两个系统可分开独立设计。
·         设计接口程序时不用涉及单据的内部结构,缓存的结构较单据要简单。
·         容易与外部系统接口。
·         接口程序独立于业务系统,容易修改,易与多种系统接口。
对于“需要向其它子系统提供数据”的系统,事先要估计需求方所需的数据内容,并在业务发生时将数据放入缓存即可。只需要保证数据的完整性(记录不多也不能少)。
对于“需要其它子系统提供数据”的系统,要设计一个单据录入模块和一个单据生成模块。单据录入模块用于在没有其它子系统为其提供数据时能够人工录入数据,保持系统的独立性。单据生成模块利用缓存中的数据成批快速地生成单据,需要对已处理的缓存中的数据置“已处理”标记。

接口程序应独立于数据的需求和提供方系统进行设计,它只关心双方的数据结构,将不同结构的数据按数据项的对应关系进行转换。对于转换(处理)过的数据,应在源数据中做标记。
接口程序的运行时机可采用定时、数据提供方或数据需求方调用的方式。采用何种方式,根据系统的运行要求。
4.   举例

 
【销售管理】项目包向【应收管理】项目包提供发票数据,用于【总帐管理】项目包自动生成销售凭证。【应收管理】项目包向【销售管理】项目包提供回款数据,用于【销售管理】项目包进行客户资信的计算。对于发票数据,【销售管理】项目包是数据的提供者,【应收管理】和【总帐管理】项目包是数据的需求者;对于回款数据,【应收管理】项目包是数据的提供者,【销售管理】项目包是数据的需求者。
当【销售管理】项目包生成发票时,同时将【应收管理】所需的发票数据放入发票数据缓存中,然后调用发票接口程序,将数据存入【应收管理】的发票数据缓存。【应收管理】将财务生成凭证所需的发票数据放入发票数据缓存中,然后调用发票接口程序,将数据存入【总帐管理】的发票数据缓存,系统的销售凭证生成模块利用新的发票数据生成对应的销售凭证。

如果没有【销售管理】项目包,则销售凭证通过凭证录入模块人工录入。
当【应收管理】发生回款时,记录回款的同时将回款数据放入缓存中,然后调用回款接口程序,将数据存入【销售管理】项目包的回款数据中。资信计算程序利用回款数据计算客户资信。
如果没有【应收管理】,则回款数据通过回款录入模块由人工录入。

以上就是海浪给大家分享的系统组件化接口设计的一点看法,大家对系统组件还有什么好的认识,欢迎与海浪交流。

转载于:https://blog.51cto.com/oecpby/426329

对系统组件化接口设计的一点看法相关推荐

  1. 如何通过 Vue+Webpack 来做通用的前端组件化架构设计

    目录:   1. 架构选型     2. 架构目录介绍     3. 架构说明     4. 招聘消息 目前如果要说比较流行的前端架构哪家强,屈指可数:reactjs.angularjs.emberj ...

  2. 电子商务系统的设计与实现(五):账务系统的功能接口设计

    2019独角兽企业重金招聘Python工程师标准>>> 电商系统.p2p网贷系统.第三方支付都可以有自己的账务系统, 账务系统与用户系统可以完全独立,不需要用户ID等信息,只提供给其 ...

  3. iOS 组件化 —— 路由设计思路分析

    原文 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构.更换适合业 ...

  4. App组件化架构设计实践V1.0

    1.基本概念与共识 业务组件化(或者叫模块化)作为移动端应用架构的主流方式之一,近年来一直是业界积极探索和实践的方向.在组件化过程中我们深刻体会到"没有绝对正确的架构,只有最合适的架构&qu ...

  5. Anroid组件化构架设计

    为什么需要组件化 极大提高工程编译速度 业务模块解耦,有利于多人团队协作开发 什么是组件化 所谓的组件化就是把需求拆成一个一个的小模块,最后组装需要的模块组成一个app 模块化架构 创建一个 Proj ...

  6. 组件对外接口设计-易用性

    示例 OKHttp网络请求: FormBody formBody = new FormBody.Builder().add("pay_fee", String.valueOf(pr ...

  7. Spring Cloud--Honghu Cloud分布式微服务云系统—组件化

    摘要: Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring ...

  8. 关于camera 构架设计的一点看法

    camera的构架目前来看有两种,一种是集中式管理,比如说建立一个引擎,引擎向上提供接口,向下管理所有模块.把camera的所有功能划分为不同的模块,又引擎统一管理.模块的结构就比较随意了,可以统一接 ...

  9. 【论文笔记】组件化雷达仿真软件设计与实现

    2012 近年来,随着雷达仿真系统研究的不断深入和计算机技术的不断发展,传统的雷达系统仿真软件存在重用性和扩展性差等问题,已经不能满足雷达仿真系统规模日益扩大.结构日益复杂和功能不断则强的需求,组件化 ...

最新文章

  1. 浪潮存储linux登录密码,登录存储系统CLI管理界面(用户名+密码)
  2. 《汇编语言(第三版)》标志寄存器
  3. 【CodeForces - 520B】Two Buttons (bfs或dp或时光倒流,trick)
  4. 三大最被低估的安全技术 用户数量决定一切
  5. window10设置文件夹备注
  6. Win10删除资源管理器左侧的Onedrive图标
  7. tm1639c语言程序,51单片机各种汇编延时子程序整理汇总
  8. MSSQL获取当前日期及格式
  9. 格雷码与二进制转换的verilog实现
  10. C++模板函数 学习记录
  11. 采用WPF开发第二版OFD阅读器
  12. python百度贴吧发帖签到_【Python】某度贴吧签到脚本[云函数专用版](白嫖实现每日自动签到)...
  13. Excel学习笔记4||数据处理函数ROUND、INT、TRUNC、MAX、MIN、ROW、COLUMN
  14. NRF51822 回顾总结
  15. 前端技术学习记录:react+dvajs+ant design实现暴走计算器的页面重构(二)
  16. time_expire时间过短,刷卡至少1分钟,其他5分钟
  17. C语言探索之旅 | 第一部分第三课:你的第一个程序
  18. 谈谈Spring Ioc的理解
  19. 通过C++类方法地址调用类的虚方法
  20. 涉密计算机格式化维修,未经本单位信息化管理部门批准,不得自行对涉密计算机进行格式化并重装操作系统。...

热门文章

  1. 铁汁儿们,现在面试阿里巴巴必考K8S
  2. STL_set/vector/deque
  3. thinkphp命名空间
  4. css案例学习之id要唯一
  5. 好婚姻必定是灵魂佳偶
  6. 【资源共享】Rockchip I2C 开发指南 V1.0
  7. 挨踢部落故事汇(6):女攻城狮职位晋升记
  8. zabbix监控磁盘io
  9. Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)
  10. 用awk 取出ifconfig eth0中IP的方法