<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml xml:lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/vnd.wap.wml; charset=utf-8"/>
<meta http-equiv="Cache-Control" content="no-cache"/></head>
<card title="数据库选择何种 API 摘记 - Gracecode.com">
<p>这几天翻阅了尘封已久的 <a href="http://www.douban.com/subject/1219472/" title="http://www.douban.com/subject/1219472/">MySQL Reference Book</a>。虽然这是一本老书并且已经阅读过多次，但是反复的阅读还是能温故知新。里面有段关于如何选择数据库 API 的言论，我认为这不仅仅是在 MySQL 上面适用，其他的数据库也同样可以参照这个总结。</p>

<p>于是我就花了一点时间做了一下摘记。大家如果有更好的见解，欢迎指出。</p>

<h2>平台和应用程序要求</h2><p>通常，在开发使用的平台决定了对 API 或编程语言的选择。这种情况下，在选择 API 是能够使用的语言和开发环境将起到决定的作用。例如 C 编译程序可以在大多数体系结构中使用，但是 PHP 和 Perl 的解释程序可能就不行。</p>

<p>在决定选择变成语言和 API 时，应用程序的要求也会起到非常重要的作用。不同的语言会具有不同的特点，比如 Perl 对于文本处理具有优势，而 C 和 C++ 可以提供对内存管理的更精密的控制。重要的是要利用语言的长处，满足应用程序的实际要求。</p>

<h2>性能</h2><p>十分明显，应用程序的性能在选择 API 和语言中是一个十分重要的决定性因素。总体目标是让应用程序更快，更加方便用户。假设其他条件都相同，则基本的决定因素就是希望对于应用程序使用一种编译语言（如 C）、还是一种解释语言（如 PHP）。</p>

<p>两种方法都有其优缺点。编译代码的实行速度通常必要解释型的代码要快，应为执行编译程序是，就已经把源代码转换成了机器语言，因此与解释型的代码行必，其速度有了实质性的改善，处理速度会很快。但是，解释性语言是一种很好的代码开发和排错工具，因为这些代码在每个阶段的测试之前不需要进行编译。</p>

<p>编译代码在不同的平台之间一般不可移植，应用程序在即将运行的平台上需要重新进行编译，而解释型程序则可以在任何平台或结构上面运行，只要提供相应的解释器就可以。</p>

<h2>简单性</h2><p>KISS 原则（尽量简单扼要）适用于很多的软件工程，简单化和容易使用的原则在决定使用哪种 API 时成为重要的因素。大多数实际的项目开发时间都很紧张，费用压缩即使在具体语言可能在技术上最适合应用程序的情况下，如果开发的代码属于时间和资源紧密型的，也可能无法通过成本效益测试。</p>

<p>这种情况下，时间和费用的因素可能必要使用最优化的技术更为重要，退而求此次可能会使解决方案更简单。</p>

<h2>可提供的库和工具</h2><p>影响选择 API 的另一个重要因素是可以为这种语言提供的十分复杂的库模块。这种额外的库的提供，实际上可以减少开发新新功能花费的时间。而同时通过使用经过测试的、可以公开使用的代码模块改善了可靠性。</p>

<h2>可移植性</h2><p>可移植性也是坐在选择开发语言时需要考虑的一个重要因素。很明显，只能在单一处理器或者架构上使用的语言，要比可以跨多种处理器和平台平台的语言的价值要低。</p>

<p>如果应用程序将计划在不同的平台上使用，则在实现编写代码之前需要探讨一下可移植性方面的问题。如果处理不当，到了后面阶段问题将会相当的严重。</p>

<h2>成熟性</h2><p>在决定使用一个 API 时，应该考虑的因素还包括这种语言的成熟性。一种成熟的开发语言满足公开标标准，可以支持开发者社区，而且还能得到广泛的文档支持和在线社区的帮助。</p>

<p>虽然他们属于非技术的因素，但是这些因素在决定原则语言是将起决定性的作用。十分明显，文档越多、支持越广，也就越容易提高应用程序的开发速度，从而能确保按时提交产品。</p>

<h2>费用</h2><p>一个重要的因素而且经常在纯技术讨论中会被忽略的因素是：使用某种语言需要的开发工具费用。这种计算项目所需工具的真正费用是一件重要工作，并且有时会限制使用针对特别重要的某些语言或 API，例如类似 C 和 Java 语言可能需要投资一些高质量的商业编译程序。</p>


<p>
<a href="http://www.gracecode.com/wap/">Gracecode.com</a> |
<a href="http://www.gracecode.com/wap/d/440 ">Permalink</a>(<a href="http://www.gracecode.com/Archive/Display/440 ">xHTML</a>) |
<a href="http://www.gracecode.com/Trackback/Recieve/440/tv6q3h">Trackback</a> |
<a href="http://rss.gracecode.com">Rss</a>
</p>
</card>
</wml>