您的位置:首页 > 其它

软件开发中API的一些相关理解

2014-04-18 09:34 351 查看

关于软件开发和模块接口设计之一些思考(转)

写这篇的想法源于今早的一个争论,自我总结一下

一个软件系统可以按某种方式划分为各种模块,这里以一般的信息发布系统来说,整体可以划分为两大块:
1、公共模块
如DAO模块、权限检测、登录信息检测等等,为其他模块作服务的,一般情况下,公共模块之间是不会产生交互行为的,如果非要产生交互性能,那就有可能要合并公共模块或者转移功能。

2、业务模块
如用户登录、信息列表展现、信息编辑等等,一般一个业务模块又可以分为
1)、表现层,或者叫UI层,获取数据、展现、接收输入、校验(有可能不做)
2)、中间访问层,提供给其他模块调用的接口,同时实现对传入数据有效性校验
3)、中间层,提供主要的业务逻辑,这个层有可能会和“中间访问层”合并。
4)、业务数据存储层,主要是处理本业务模块对象

划分模块的原则,以“高内聚、低耦合”为原则,一个模块/子模块,以提供一项功能为根本,避免一个模块提供多个不相关的功能。

一般一个业务模块可能会和多个公共模块、其他业务模块打交道。业务模块与其他模块之间的调用(耦合),尽量设计为可配置的,也就是在不更改代码的情况下,可以改变耦合双方。

业务模块与业务模块之间尽量避免跨层调用,也避免低阶模块之间产生关联,中间访问层就访问中间访问层。

业务模块和业务模块之间的调用又分为通知型的和反馈型。
  1、通知型,就是调用另一个模块,但是不等待其返回结果,这种一般可采用观察者模式来实现
  2、反馈型,调用另一个模块,但是需要等待返回结果来决定下一步如何走,采用配置文件的方式来实现

业务模块的中间层如果比较复杂,可以划分成一个装配模块和多个子功能模块来实现,并且采用配置文件来进行装配,故子功能模块之间的接口要设计好。

关于模块功能变化,一般可分为整体功能替换和部分功能块替换。
  1、整体功能替换比较好对付,只要接口不变,则可以整体替换,如果接口变了,则需要采用适配器模式来应对
  2、部分功能块替换,这个就不太好办,除非预先能预测到哪些可能会变化,采用拦截器的模式来进行替换或更改

被调用模块对于传入的参数应做全面的检查,主要是有效性检查。

应用程序编程接口,简称API(Application Programming Interface),就是软件系统不同组成部分衔接的约定。
  随着软件规模的日益庞大,我们需要把复杂系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。
  API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口,故而是一种抽象。 A reference implementation of an API is the implementation created by the designer of the API, or one which other implementations of the API are expected to be compared against.
  例如,图形库中的一组API定义调用绘制图标函数的方式,以于屏幕上显示图标。程序中调用,编译时连接到这组API,执行时便调用API的实现(库)来显示图标。
  操作系统的API可用来分配内存或访问文件。许多系统与应用程序提供API接口与实现,比如图形系统,数据库,网络,Web服务,甚至于某些游戏。
  一组API经常是一套软件开发工具包(SDK)的一部分。SDK亦可包含其它工具亦或至于硬件,两个术语并不完全等同.
  API有诸多不同设计。用于快速执行的接口通常包括函数,常量,变量与数据结构。也有其它方式,如通过解释器,或是提供抽象层以遮蔽同API实现相关的信息,确保使用API的代码无需更改而适应实现变化。
  API 就是应用程序编程接口。它是能用来操作组件、应用程序或者操作系统的一组函数。典型的情况下,API 由一个或多个提供某种特殊功能的 DLL 组成。
  

  DLL 是一个文件,其中包含了在 Microsoft® Windows® 下运行的任何应用程序都可调用的函数。运行时,DLL 中的函数动态地链接到调用它的应用程序中。无论有多少应用程序调用 DLL 中的某个函数,在磁盘上只有一个文件包含该函数,且只在它调入内存时才创建该 DLL。
  您听到最多的 API 可能是 Windows API,它包括构成 Windows 操作系统的各种 DLL。每个 Windows 应用程序都直接或间接地与 Windows API 互动。Windows API 保证 Windows 下运行的所有应用程序的行为方式一致。
  注意 随着 Windows 操作系统的发展,现已发布了几个版本的 Windows API。Windows 3.1 使用 Win16 API。Microsoft® Windows NT®、Windows 95 和 Windows 98 平台使用 Microsoft® Win32® API。
  除 Windows API 外,其他一些 API 也已发布。例如,邮件应用程序编程接口 (MAPI) 是一组可用于编写电子邮件应用程序的 DLL。
  API 传统上是为开发 Windows 应用程序的 C 和 C++ 程序员编写的,但其他的编程语言(包括VBA)也可以调用 DLL 中的函数。因为大部分 DLL 主要是为 C 和 C++ 程序员编写和整理说明的,所以调用 DLL 函数的方法与调用 VBA 函数会有所不同。在使用 API 时必须了解如何给 DLL 函数传递参数。
  警告 调用 Windows API 和 其他 DLL 函数可能会给您的应用程序带来不良影响。从自己的代码中直接调用 DLL 函数时,您绕过了 VBA 通常提供的一些安全机制。如果在定义或调用 DLL 函数时出现错误(所有程序员都不可避免),可能会在应用程序中引起应用程序错误(也称为通用性保护错误,或 GPF)。最好的解决办法是在运行代码以前保存该项目,并确保了解 DLL 函数调用的原理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: