`

云计算系统中对开发者的API设计问题

阅读更多

近年来,随着互联网应用的普及与深化,网络信息与服务趋于海量,用户体验需求不断增长,数据海量、分布异构、处理复杂、使用繁琐等问题逐渐突显,旨在解决这些问题的云计算(Cloud Computing)相关技术得到了迅猛发展。云计算概念的提出在成为新的发展机遇的同时也在云计算技术方面受到挑战。特别是云计算系统中的API设计问题受到极大挑战。

  云计算是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。它的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。

  云计算注定给信息时代带来一场大的技术变革,由他的引导,我们的不用像现在这样担心一旦PC坏掉而带来的数据信息的丢失,你可以把你的数据存储在“云” 端,有专门的小组为你维护数据;你也不必像现在这样为了使用一款软件而付费。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚 至包括超级计算这样的任务。这些都是云计算带来的好处。

  但现在云计算系统的开发还只是处于起步阶段,云计算系统的功能和性能不是很优越。这对于应用程序的开发者来说无疑不是一大困难。而云计算系统的API(应用程序接口)的设计这直接关系到云计算系统的性能和易用性。

对于API的设计有以下几点看法:

  一、API的设计要有严格的兼容性控制。其目标就是保证版本的升级时,不会导致低版本的代码无法运行。当一个版本的API发布以后,就不能对其进行任何的修改,包括声明方法的类型、数据类型等。如果出错将会影响其价值,同时也会降低公司的信誉。

  二、API的设计要合理。各个方法的边界要区分明确,同时也不能出现数据盲区。不要弄得数据的边界清楚了,而出现了数据盲区。数据盲区的数据一般都是那些边界值,因此,我们要对特别考虑边界值。

  三、API的设计要通常易懂。其系统的方法调用要通常易懂,做到“见名知意”,根据名称调用的一个方法,该方法所做的事就是开发者所想要的,这对于基于在 该系统上进行应用软件开发的开发者来说无疑是很愉快的,同时对于API的设计者来说也是很有意义的,这样不容易混淆各个方法。

  四、API的设计尽量的小。这里所指的“小”既指源码编译后的文件比较小,同时也指其运行时所占的内存较小。这样运行调用的方法时间会更短一些,也间接得提升了系统和应用程序的运行效率和性能。

  五、在进行API的设计时,没有确定的内容时不可以加入到API中去的。其原因就是可能因为这样的不确定因素而导致数据的运算结果出错,或者是在应用程序的运行过程中出现异常,这些现象是不可出现的。

  六、设计API的要考虑其功能的全面性。API设计的越全面,那么应用程序的开发者在允许的范围内很好的选择来实现自己的任务。

  七、API的设计还要考虑其高效性。对于信息时代的产物,俗话说得好“时间就是金钱”,人们对于应用程序的执行效率要求越来越高,提高API的执行效率,也间接得提高了应用程序的执行速度。

  同时,API的设计总是需要演化和升级的,不然API的价值就会降低。我们在设计API的时候,首先要保证API正确的情况下,再来考虑API的高效性和易懂性。

  我们在设计API之后就是实现API,我们在实现API的同时,也要将API文档化,同时在文档里面加上相应的范例。这样开发人员更容易的理解API中各个方法的通途。这样也有利于开发者的开发。

分享到:
评论

相关推荐

    蜂巢平台 云计算应用框架 v0.4.0.1.zip

    蜂巢无论是源代码还是系统设计,都是开放的。 【深度云计算】 蜂巢也是一个实现在软件层次上的云计算应用框架:基于蜂巢开发的不同应用,能够做为一个系统共同工作。 无论是财务软件、OA系统、客户关系管理、仓储/...

    Open API分析、实践和思索

    SNS提供的API以及 现有的一些分享类网站提供的API,仅仅只是Open API中的一角,所能给开发者带来的想象空间,以及所 能够产生的商业价值还是十分有限。 今年很多时间都投入到Open API集成平台的设计和开发中,因此对于...

    一个为 Node.js 开发者定制的现代化 Koa 框架与 TypeScript 项目模板.zip

    一个为 Node.js 开发者定制的现代化 Koa 框架与 TypeScript 项目模板,专为构建高效、可维护的 API 服务而设计 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言...

    TUP Masters系列第五期:对话MySQL创立者、Eucalyptus CEO Marten Mickos

    Marten Mickos讲述了云计算标准、API和相关问题,包括:最终我们会统一成一种或两种云计算标准,还是更多相互竞争的标准、形成云计算标准的过程将会如何影响到云计算的演进,以及我们采用并且接受云计算的方式。...

    基于人工智能和机器学习的API调用

    基于人工智能和机器学习的API调用,针对开发者常见的几大问题进行详细的描述,自我感觉挺不错的,分享。

    深入理解hadoop

    本书作者基于对Hadoop系统的实践,深入浅出地对Hadoop进行了详细的讲解,包含大量的实例和技巧,可帮助有一定基础的开发者快速掌握分布式系统。主要内容包括:第1章~第4章讲解大数据系统的基本概念、Hadoop系统的...

    MovieousLive-Cocoa 研发的适用于 iOS 平台的一站式 RTMP 直播推流 SDK。.zip

    它提供简单易用的 API,兼容多机型及系统版本,拥有出色的性能、丰富的功能,支持包括美颜,特效,变声等在内的丰富第三方生态。集成 SDK 能够让开发者 软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动...

    图灵机器人调用

    图灵机器人 图灵机器人 API 是在人工智能的核心力(包括语义理解、问答场景交互知 是在人工智能的核心力(包括语义理解、问答场景交互知 是在人工智能的核心力(包括语义理解、问答场景交互知 是在人工智能的核心力...

    什么是OpenStack 开源的云计算管理平台项目

    OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。 OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者...

    OpenSkyline是一个OpenStack控制台项目,对标OpenStack社区Horizon项目

    基于REST API进行业务功能设计,功能模块化设计符合高内聚、低耦合,可方便进行功能开发、扩展。前后端开发完全分离,开发者更聚焦于UI展示、操作易用性、用户体验方面的开发。引入主流的MVVM前端技术架构,让开发者...

    jsr80 java 访问 usb

    这两个项目也都开始试图向其他操作系统上的 Java 应用程序提供对 USB 设备的访问,尽管它们都还没有开发出可以使用的包(参阅 参考资料 中有关本文中讨论的这两个项目及其他项目的资料)。 在本文中,将对 jUSB 和 JSR...

    Spark 展望&应用开发 - 亚马逊AWS首席云计算技术顾问 - 费良宏

    也许你会感兴趣新的版本中那些激动人心的特性:DataFrame、SparkR、StreamingML 以及Dataset API,那么我将在这个议题里面与你一同展望。此外,作为开发者的你或许希望可以了解围绕Spark 应用开发的一切。 我将以...

    《程序员》杂志2012年第1期.pdf (免费积分下载)

    简单说,下一步你可以在任何地方,通过任何屏幕、任何设备,获取你所需要的信息,并进行相应处理,系统是非常智能化的,可以做各种推荐(广告变成了有用的信息),就像现实生活中对你知根知底的小秘一样。...

    编程课程+GO语言编程+技术开发+系列课程

    本系列课程专为具备一定编程基础的中级开发者设计,旨在深入探索Go语言的各个方面,从而帮助学习者在云计算、微服务等热门技术领域中有效运用Go。课程内容全面,涵盖从Go语言基础到实战项目开发的全过程。 课程首先...

    java的概要介绍与分析

    Java是一种广泛使用的编程语言,以其跨平台性、面向对象和丰富的API而著名。以下是关于Java的资源描述: Java资源涵盖了从基础知识到高级应用的全方位内容。对于初学者,有大量的入门教程和在线课程,如Oracle官方...

    阿里云服务器ECS介绍.pptx

    在云服务器的集群前端有专门的设备进行DDOS检测 , 后端系统会进行检测 可以检测的参数等进行配置,包括攻击的规模 和 策略等 比如对端口,ip… 检测出之后可以做出多种处理,如进行流量清洗或者黑洞处理 完了之后...

    restflu风格demo

    另一方面,在企业中,RESTful API(也称RESTful Web服务)也逐渐超越SOAP成为实现SOA的重要手段之一。时至今日,RESTful架构风格已成为企业级服务的标配。 REST即Representational State Transfer的缩写,可译为...

    Google App Engine SDK

    App Engine是一个由Python应用服务器群、BigTable(Google的一个内部的数据库系统)数据库访问及GFS数据储存服务组成的平台,它能为开发者提供一体化的、提供主机服务器及可自动升级的在线应用服务.用户编写应用,Google...

    alapc:阿拉伯数PC系统

    阿拉博数是一种针对企业的数据中台管理系统,可采用云端部SAAS模式和私有化方式进行部署,拥有大型云服务转移,可轻松应对大流量,高并发的复杂数字化云计算场景,多平台人,财,物数字化统一管理,帮助企业轻松实现...

    移动互联网安全调研报告.docx

    同时,智能终端采用开放的操作系统及软件平台架构,为开发者提供开放API接口及开放的开发平台,可能会被不法分子用来开发恶意代码软件。此外,绝大多数操作系统提供商以系统维护为借口,给自己预留了非公开API,由此...

Global site tag (gtag.js) - Google Analytics