两个软件之间的软件接口设计文档需要注意什么

关于与后端接口对接,自己总结的几个原则
来源:open开发经验库
最近几个月,与三位后台开发人员有过接口对接,每一次风格都不同,网上找到的也大多是关于RESTFUL风格的讨论,自己以及其他同事对RESTFUL的理解都不够到位,所以大多数工作中碰到的情况都不是RESTFUL风格,一般都是通过JSON自定义的格式。
场景:主要是微信端网页开发,前端往往是先打开页面然后通过Ajax向后台发送请求返回JSON格式的数据。
原则一:一个页面尽量只有一个拉取接口
主要考虑的是尽量减少请求链接数,请求链接数越多,由于网络原因,出现异常的可能性越大。
原则二:打破规则一,当请求需要缓存并且有需要及时更新的情况
为了更好的打开速度,对于不经常变化的数据,往往需要做数据缓存以及请求缓存。但有些信息,比如预约时间,又需要做到及时,则应该分多个请求。
原则三:如果返回数据中某个字段的数据没有,返回该字段比不返回该字段要好。
JSON格式的好处在于灵活性,但没有校验机制。所以定义协议时规定了有哪些字段,最好这些字段都返回。我的意思是比如返回一个列表,大多数场景是返回一个数组,但如果没有数据,返回一个空数组比不返回该字段要好。当然前端也有必要做自己的容错考虑。
其他:
1.比较常见的返回数据的格式,经验有限,也不清楚这是不是最优的。
status: "",
message: "",
data: {
} 2.这里有一篇关于
,感觉挺好的,但自己实际应用的不多。 
3.上面只是我个人的几点总结,如果有不对的地方请大家提出意见,如果网上或者其他书籍有相关的书籍,也希望大家积极分享,谢谢。
来自: 
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动EMI预一致性测试和调试最大的挑战是如何一次性通过测试。
详解TI每周最新电源产品信息、参数对比、应用设计等内容。
电源网独家视频专访。
TIDA-00264 参考设计是汽车尾灯 EMC 设计,它直接连接至电池应用,LED 总体驱动电流达 900mA。
汽车仪表盘信号装置解决方案,其中包含一个单片、中压、低电流功耗 12 位移位寄存器
热门课程排名
泰克推荐产品
泰克最新活动
泰克热门下载
泰克在线讲堂
PI热门参考设计分类
热门方案下载排行
演示了如何执行与具体电源相关的测量
主要内容是在交流输入端上进行测量
在直流输出端上进行建立时间测量
一起讨论电源完整性测试系统的技术
在线研讨会
演讲嘉宾:吕宝华
演讲时间:
简介:PA2200的几个典型应用实例
说出你想对芯派说的话
会议主题:如何加速LED驱动电路的研发测试
会议时间: 10:00
主 讲 人:陈鑫磊
报名人数:火热报名中
演讲嘉宾:陈鑫磊 研发经理
会议时间:
演讲嘉宾:Cale.Huang FAE
会议时间:
演讲嘉宾:吕宝华
会议时间:
PCB信号完整性设计你需要注意这两个方面
来源:电源网综合
作者:柚子
在PCB的设计和制作过程中,工程师们最关注的问题除了元件设计是否合理、印刷过程是否符合要求之外,再就是对PCB信号完整性的测试效果了。那么,想要让设计的PCB板具有良好的信号完整性,工程师在设计时应当注意哪些方面呢?本文将会就这一问题展开简单分析。
电路板叠层设计
在PCB的信号完整性设计过程中,电路板叠层的设计将会对其信号传输起到关键性的作用。在PCB的制作过程中,高速电路由于其本身具有集成度高、芯片密度大以及布线紧凑等特点,目前一般会采用多层板来降低板中的相应干扰。在进行叠层设计时,工程师要考虑器件密度、总线的布线密度、电路功能以及电磁兼容等多方面因素,合理的叠层设计是对大多数信号完整性问题和EMC问题的最好防范措施。
在对上文中所提及的因素进行综合考虑的前提下,目前国内外的系统电路板在进行叠层设计时,多数会采用4层叠层的设计方式,分别为:顶层元件为信号层、第2层为信号地层、第3层为电源层、底层为元件及信号层。采用这种设计的PCB板,其电源层和地层紧密耦合,能够形成大电容。补充地弹效应中需要的电荷,信号层紧靠大面积铜箔,可以为信号提供优良回路,减小反射与天线效应。中间层地平面和电源平面,能有效降低电源阻抗与地阻抗,减小传导干扰。
电路板布局设计
除了上文中所提及的电路板叠层设计外,PCB板的布局设计也是至关重要的一个环节,良好的布局设置可以使电子电路获得最佳性能,从而有效减少信号完整性问题。在进行PCB的布局时,工程师需要结合结构设计的尺寸要求和器件的布线要求,依次合理规划出主要器件的位置。在主要芯片确定位置后,根据电路的功能单元,对电路的全部元器件进行布局。
在进行PCB板的元件全局布局时,工程师需要遵循以下几点原则来完成电路板的布局设计。首先,应当按照电路的流程安排各个功能电路单元的位置,使布局便于信号流通,并使信号尽可能保持一致的方向。其次,工程师应该尽可能缩短高频元器件之间的连线,设法减少它们的分布参数和相互间的电磁干扰,而电源则要避开高速信号线以防止电源干扰。第三,模拟电路与数字电路分开设计,减小信号间干扰。第四,匹配电阻靠近器件输出或输入管脚,减小传输线过冲与欠压。
申请条件:企业邮箱注册
申请条件:企业邮箱注册
热门职位平均薪酬职位数
16-09-23 17:25
16-09-05 11:30
16-08-08 09:25
16-07-27 09:49
16-07-11 09:40
EMI预一致性测试和调试是工程师在设计中不可回避的问题。在实际测试中,最大的挑战就是一次性很难通过昂贵的EMI一致性测试。迅速调试EMI,一次通过EMI并优化测试流程成为我们展示给大家的一个完美方案!
<font color="#16年5月24日是泰克科技的一个大日子,这一天是它70岁的生日,也是一次重要的品牌战略转型的日子,同时,泰克2016年度创新论坛(TIF 2016)也在这一天拉开帷幕。
最新德州仪器 (TI) 创新型电源产品及组合,详解每周最新产品信息、参数对比及其应用、设计等内容。
最近氮化镓(GAN)这个词出现的频率非常高,很多人误..
以氮化镓(GaN)为基础的功率IC的推出将会为极大的推动..
如果想要最大程度上延长LED显示屏的寿命,就需要在一..
人们在购买移动电源时面对着各种各样的选择,很多人..
由于IGBT模块为MOSFET结构,IGBT的栅极通过一层氧化..
2016慕尼黑上海电子展
关于电源网
我们的服务
服务时间:周一至周五9:00-18:00
电源网版权
增值电信业务经营许可证:津B2-
网博互动旗下网站:您所在的位置: &
软件接口设计
软件接口设计
「美」Cal Henderson,徐宁译
电子工业出版社博文视点
《构建可扩展的Web站点》主要介绍了Web应用程序的概念、体系结构、硬件需求、开发环境的原则及国际化、本地化和Unicode等基本内容,本文是软件接口设计。
软件接口设计Software Interface Design
将软件分层意味着我们需要完成额外的工作――设计层次之间的接口。我们原来拥有的是一大块代码,现在则会有三处不同的代码块(业务逻辑、交互逻辑和标记),它们当中的每一块都需要和下一块交流。但是仔细考虑一下这样做是否的确造成了额外的工作?答案十有八九是否定的:分析一下我们现在仅有的那一层代码,会发现这些附加劳动早就完成了,只有逻辑层和标记层之间的交流还不是很明确,和其他剩余代码混在了一起。
为什么要花心思在分层上呢?不管怎么说,在某种程度上,原来的那种所有代码都粘在一起的程序风格还是可以工作的。然而,有几个决定性的因素,它们将我们引向分层实现,而且随着系统规模逐步扩大,这些因素会一个比一个地变得更为重要。层次分离,让不同的工程师或工程师小组可以同时工作在系统的不同层次,而不用担心无意中影响了他人的工作。除了工作对象变成了不同的物理文件之外,这些小组也不再需要对其他层次有深入了解。标记层的工作人员不必理解数据是如何从数据存储中取出,并且传给模板系统的,他们只需要知道一旦这些数据交付给了他们,应该如何去使用这些数据。
类似的,工作重点在交互层逻辑的工程师也不需要理解在取得一条数据的背后,系统逻辑层是如何运作的,而只需要知道用相应的函数调用就可以了。在这些例子中,工程师们惟一需要关注的元素就是自己所在层次的内容和所在层次与上层和下层的接口。那么,我们一直谈论的接口到底是什么呢?要知道当我们谈的是软件层次之间的接口时,所指的并不是Java中的面向对象概念上的接口。我们所说的接口,描述的是允许一个层次和另一个层次之间交换请求和响应的一组特性。对数据层与系统逻辑层而言,接口包括对原始数据的存储和抽取。对交互逻辑层与系统逻辑层,接口包括对特定类型数据源的修改。接口仅仅定义一个层次如何向另一个层次发出请求,要求它执行一个任务,而不管这个任务如何执行。
我们的应用程序中最为顶端的层次是比较不一样的,因为标记层与表现层之间的接口已经由我们所采用的技术定义好了。标记层到样式表的链接使用的是链接标记符或者@import语句,通过它们获得class和id属性,以及样式表中的命名的标记符序列,根据这些可以应用特定的样式规则。为了保持良好的层次分离,在标记层中应尽量避免直接使用样式属性。本书并不包含前端工程的内容,但前端分层的原因和后端分层的原因是相同的――分离样式层与标记层,才能让不同团队可以独立地工作于项目的不同方面,并且开发人员可以进行层次内部修改,而不用担心影响相邻层次。
交互逻辑层和标记层进行交流的典型方式是模板系统。在PHP和Smarty参考实现中,Smarty为PHP交互逻辑层提供若干功能。我们可以调用 Smarty的方法来将数据导出到模板(继而用于输出),也可以调用Smarty的方法来提供在模板内执行的展现函数,甚至还可以自己直接渲染模板。在某些情况下,我们需要的并不是直接得到模板的输出,然后将输出发送给终端用户。比如在发送电子邮件的时候,我们可以在模板系统中为它创建一个模板,导出所需要的数据和功能,把这个模板渲染到交互逻辑层的一个变量中,然后发送这封邮件。采用这种做法时,要注意到数据与控制不仅是单向流动的,控制在所有层次之间都可以双向传递。
两个逻辑层之间的接口,根据具体实现,很可能是最容易理解的,也是最难以设计的。如果两个层次使用的是同一种语言,接口可能只是一组函数。这时,接口的设计包括决定命名方案(用于函数命名)、调用方案(用于加载正确的库,以使函数可用),以及数据方案(用于将数据向前或向后传输)。所有这些方案都算在系统逻辑层逻辑模型的概要设计中。我喜欢将可能的设计选择画成一个连续的光谱图,称之为网络应用犯傻程度:
OGF &---------- 心智健全----------& 面向对象程序设计
这个光谱往左是单个的巨型函数,往右则接近面向对象程序设计。老式的、单一的Perl系统在光谱中非常靠左,而Zope和Plone的位置在右边。更为有趣的一些模型则沿光谱分布,其中MVC群体集中在中心三分之一处。像Struts和Rails这一类的框架,则分布在右侧靠近Zope的地方(这提醒了你接下来会发生什么)。Flickr在中间稍偏左,它采用类似MVC的方式,但没有使用框架,随着时间的推移和系统的越来越复杂,它也逐渐向右偏移。
你选择定位在光谱上的哪一个位置进行工作,那完全是个人偏好问题。往右走,就以灵活性为代价,获得可维护性。往左走,就丧失可维护性,获得灵活性。偏离中心越远,优化系统就会越困难,但系统架构就会越简单。当前趋势是明确地远离左侧,而中右侧的框架越来越受到欢迎。但始终要牢记,你往一个方向移动,并获得某种好处的同时,也会失去一些别的东西。
堆栈最底部的层次总有定义比较完美的接口,因为它们物理上是分离的――你总不会想用PHP来实现自己的数据库吧?所以这一块的接口定义和层次分离总是以抽象层次的形式发生在应用程序代码内部。业务逻辑层没有必要知道物理上如何连接到数据库集群,但是建立连接的代码需要知道如何连接。分离的数据库与存储层从系统逻辑层获取指令,连接到数据存储,执行指令并返回结果。例如,业务逻辑层可能知道它需要执行一些SQL语句,并知道需要在哪个集群上执行这些语句,它就可以进行如下调用:
$result = db_query('my_cluster', 'SELECT * FROM F')
接下来就是存储层的责任了,它的代码要连接到正确的服务器,执行命令并返回结果。执行查询的服务器可能发生变化(交换硬件时),可能被复制(也许用于冗余故障转移),可能被记入日志并进行基准测试(参阅第8章中的MySQL小节),或者执行任何我们决定的操作。这个例子中的接口是db_query( )函数和它的伙伴们。对于文件存储层而言,接口中可能包含store_file( )函数,给它传入文件名后,接着就由它来表演魔术了。这个魔术本身怎样和系统逻辑层无关,我们只要执行了需要的调用,就能得到需要的结果。 接口设计在Web应用程序体系结构中扮演着最主要的角色。接口会随着时间而演变,接口变动时,负责不同层次工作的团队必须得进行协商,但是这些更改应该只牵涉到小部分当前开发的内容。在不会无意中破坏其他部分的情况下,我们能在单个层次内做的越多,生产效率就越高,灵活性也越高。
【责任编辑: TEL:(010)】&&&&&&
关于&&&&&&的更多文章
XML 全称是“可扩展标识语言“(Extensible Markup Language),
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
讲师: 5人学习过讲师: 5人学习过讲师: 8人学习过
《从0 到1 教你做微商》记录了微商行业的萌芽与发展,
《微运营实操手册--微信订阅号、服务号、企业号解密》
《2016年全国会计专业技术资格考试辅导教材:中级财务
这并不是一本传统的技术专著,因为它并没有包含一行代码,而更像是一部技术评论。作者通过幽默诙谐而又不失辛辣的语言,从程序员
51CTO旗下网站软件开发活动中的接口设计考虑_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
软件开发活动中的接口设计考虑
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢软件开发的家园,编程爱好者的天地.
&&|&&&&|&&
设计合适的接口
来源:互联网
时间: 04:35
我们在设计系统接口时,经常会遇到这样的问题:1、我们的接口应该提供多少方法才合适?2、我们的接口应该提供"原子方法"还是"复合方法"?3、我们的接口是否应该封装(或者,能否封装)所有的细节?接口的设计需要考虑用户的使用习惯、使用的方便程度、使用的安全程度,根据我的编程经验,下面会详细讨论接口设计的2个需要权衡的方面:接口的单一化&复合化。接口接口提供了不同系统之间或者系统不同组件之间的界定。在软件中,接口提供了一个屏障,从而从实现中分离目标,从具体中分离抽象,从作者中分离用户。站在用户的角度看,一个接口建立并命名了一个目标对象的使用方法。一些约束(例如:编译时的类型系统、运行时的异常机制及返回值)使得类作者的目的得以体现和加强。供给(affordances)指事物的被感知的真实的属性,这些属性可以决定事物使用的可能方法,供给提供了对事物操作的线索。类设计者的一个职责便是在接口中减小约束与供给之间的隔阂、匹配目标以及一定程度上的自由度,尽可能减小错误使用目标对象的可能。封装对于封装来说,远不止数据私有那么简单。在设计中,封装往往会涉及到自我包含(self-containment)。如果一个类需要你知道如何调用它方法(e.g.在一个线程的环境中,在一个方法调用后调用另一个方法,你必须明确地同步对象),那么它的封装性就不如将所有这些全部包含并隐藏的类(e.g.这个类是thread-safe的)好。前一个设计存在着设计的漏洞,它的许多限定条件是模糊的,而且把部分责任推给了用户,而不是让类提供者做这些工作来完成类的设计。在空间或者时间上分离方法的执行(例如,线程,远程方法调用,消息队列),能够对设计的正确性和效率产生意义深远的影响。这种分离带来的结果是不可忽视的:并发引入了不确定性和环境(context)选择的开销;分布引入了回调的开销,这些开销可能不断增加,而且会导致错误。这些是设计的问题,修改它们可不是象修改bug那样简单。如果一个接口主要由存取方法(set和get方法)组成,每个方法都相应的直接指向某个私有域,那么它的封装性会很差。接口中的域存取方法通常是不会提供信息的:他们在对象的使用中不能通讯、简单化和抽象化,这通常会导致代码冗长,并且容易出错。所以,我们首先考虑接口设计的第一个原则:命令与查询分离(Command-QuerySeparation)要求:保证一个方法不是命令(Command)就是查询(Query)定义:查询:当一个方法返回一个值来回应一个问题的时候,它就具有查询的性质;命令:当一个方法要改变对象的状态的时候,它就具有命令的性质;通常,一个方法可能是纯的Command模式或者是纯的Query模式,或者是两者的混合体。在设计接口时,如果可能,应该尽量使接口单一化,保证方法的行为严格的是命令或者是查询,这样查询方法不会改变对象的状态,没有副作用(sideeffects),而会改变对象的状态的方法不可能有返回值。也就是说:如果我们要问一个问题,那么就不应该影响到它的答案。实际应用,要视具体情况而定,语义的清晰性和使用的简单性之间需要权衡。例如,在Java.util.Iterator中,hasNext可以被看作一种查询,remove是一种命令,next合并了命令和查询:publicinterfaceIterator{booleanhasNext();Objectnext();voidremove();}这里,如果不将一个Iterator对象的当前值向前到下一个的话,就不能够查询一个Iterator对象。如果没有提供一个复合方法next,我们将需要定义一系列的命令方法,例如:初始化(initialization)、继续(continuation)、访问(Access)和前进(advance),它们虽然清晰定义了每个动作,但是,客户代码过于复杂:
对我有帮助
对我没帮助
以下留言只代表网友个人观点,不代表本站观点.}

我要回帖

更多关于 软件接口设计 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信