5.2 選擇API
本節介紹根據各種類型的應用程序選擇A P I的方法,比較C、DBI 和PHP API 的能力,並給出它們相對的優點和缺點,並指出什麼時候應選擇哪一個。
首先應該指出,筆者不認為任一種語言優於其他語言。盡管筆者的確有自己的喜好,但還是統統使用它們。您也會有自己的喜好,像我的評論家一樣。一個評論家會感覺應該強調C 對MySQL編程的重要性,應將這種重要性上升到更重要的程度,而另一個評論家會認為C
編程相當困難,應放棄使用它!您應當權衡本節中討論的這些因素,得出自己的結論。在對特定任務選擇哪個API 時,要考慮以下問題:
■ 預期的執行環境。期望使用應用程序的上下文環境。
■ 性能。當在API 語言中編寫時,如何使應用程序高效地執行。
■ 開發的容易性。如何便於API 和它的語言編寫應用程序。
■ 可移植性。除MySQL以外,應用程序是否還將用於其他數據庫系統。
下面進一步分析每個問題。要注意這些因素的相互影響。例如,您想要一個運行良好的應用程序,但使用一個可快速開發該應用程序的語言也同等重要,即使該應用程序不能非常有效地運行也同樣。
5.2.1執行環境
當編寫應用程序時,通常應考慮使用哪種環境。例如,該應用程序可能是從外殼程序中調用的報告生成器程序,或一個應付賬目概要程序,在每月的月底作為cron job 進行運行。從外殼程序或cron 程序中運行的命令通常依賴它們自己,而且很少需要運行環境。另外,可以編寫一個應用程序來試圖由Web 服務器調用。這樣的程序期望能從它的運行環境中抽出非常特殊類型的信息:客戶正在使用什麼浏覽器?在郵件清單訂閱請求格式中輸入什麼參數?客戶提供正確的口令訪問我們個人信息了嗎?每種API 語言都以它在這些不同的環境中適於編寫應用程序而變化:
■C 是通用目標的語言,從理論上講任何任務都可使用它。在實際中, C 傾向於用於更頻繁的獨立程序而不是對Web 的編程。其原因可能是在C 中不像在Perl 或在PHP 中那樣容易地實現文本處理和內存管理,並且這些處理和管理在Web 應用程序中大量地使用。
■ Perl,像C 一樣,適合於編寫獨立的程序。然而,對於Web 站點的開發,Perl 也是非常有用的,例如通過使用CGI.pm 模塊。這使Perl 成為編寫連接MySQL和Web 的應用程序的便利的語言。這樣的應用程序可以經CGI.pm 模塊與Web 接口,並可以使用DBI 與MySQL相互作用。
■ PHP 是設計用來編寫Web 應用程序的語言,所以這個環境顯然是最適合的。而且,數據庫訪問是PHP 最大的優勢之一,所以它是實現與MySQL相關的任務的Web 應用程序最自然的選擇。也可以將PHP 作為一個獨立的解釋程序(例如,從外殼程序中運行腳本),但不能非常頻繁地使用它。
根據以上這些需要考慮的問題,對於獨立的應用程序, C 和Perl 是最佳語言。對於We b應用程序, Perl 和PHP 是最合適的。如果需要編寫這兩種類型的應用程序,但又不會使用這些語言的任何一種,並想用盡可能少的精力來學習,則Perl 可能是您最佳的選擇。
5.2.2 性能
我們通常喜歡應用程序盡可能快地運行。然而,實際上性能的重要性取決於所使用的程序的頻率。對於一個月運行一次晚上定時工作的程序,性能可能不是非常重要的。而對於在Web 站點上一秒鐘運行若干次的程序,則每當排除一點無效性都會帶來巨大的不同。後一種
情況下,在站點的有效性和請求中,性能發揮著重要的作用。一個緩慢的站點是令用戶苦惱的,無論站點的內容如何,如果您依靠站點作為一項收入來源,則性能的降低直接影響收入。如果不能一次為多個連接提供服務,訪問者只會產生厭煩情緒而去其他的站點。
性能評價是一個復雜的問題。當編寫特定的API 時,應用程序完成得好壞的最好指標是在這個API 環境下編寫並進行測試。而且最好的比較測試是在不同的API 環境下多次運行該應用程序,來比較每個版本。當然,那不是一般的工作。一般來說,您只想獲取編寫的應用
程序。一旦它工作了,如果它需要運行得更快,您就可以考慮優化它,使用更少的內存,或有某些需要用其他方法提高的方面。但是,至少有如下兩個因素會影響性能: