apache apr介紹

APR(Apache portable Run-time librariesApache可移植運行庫)的目的如其名稱同樣,主要爲上層的應用程序提供一個能夠跨越多操做系統平臺使用的底層支持接口庫。在早期 的Apache版本中,應用程序自己必須可以處理各類具體操做系統平臺的細節,並針對不一樣的平臺調用不一樣的處理函數。html

隨着Apache的進一步開 發,Apache組織決定將這些通用的函數獨立出來並發展成爲一個新的項目。這樣,APR的開發就從Apache中獨立出來,Apache僅僅是使用 APR而已。目前APR主要仍是由Apache使用,不過因爲APR的較好的移植性,所以一些須要進行移植的C程序也開始使用APR,開源項目好比 Flood loader(http://httpd.apache.org/test/flood/,該項目用於服務器壓力測試,不單單適用於Apache)FreeSwitch(www.freeswitch.org)JXTA-C(http://jxta-c.jxta.org,C版本的JXTA點對點平臺實現);商業的項目則包括Blogline(http://www.bloglines.com/covalent(http://www.covalent.net)等等。apache

APR使得平臺細節的處理進行下移。對於應用程序而言,它們根本就不須要考慮具體的平臺,無論是UnixLinux仍是Window,應用程序執行的接口基本都是統一一致的。所以對於APR而言,可移植性和統一的上層接口是其考慮的一個重點。而APR最先的目的並非如此,它最先只是但願將Apache中用到的全部代碼合併爲一個通用的代碼庫,然而這不是一個正確的策略,所以後來APR改變了其目標。有的時候使用公共代碼並非一件好事,好比如何將一個請求映射到線程或者進程是平臺相關的,所以僅僅一個公共的代碼庫並不能完成這種區分。APR的目標則是但願安全合併全部的可以合併的代碼而不須要犧牲性能。數組

APR的最先的一個目標就是爲全部的平臺(不是部分)提供一個公共的統一操做函數接口,這是一個很是了不得的目的,固然也是不現實的一個目標。咱們不可能支持全部平臺的全部特徵,所以APR目前只能爲大多數平臺提供全部的APR特性支持,包括Win32OS/2BeOSDarwinLinux等等。爲了可以實現這個目標,APR開發者必須爲那些不能運行於全部平臺的特性建立了一系列的特徵宏(FEATURE MACROS)以在各個平臺之間區分這些特徵。這些特徵宏定義很是簡單,一般用APR_HAS_FEATURE參數設置:安全

若是某個平臺具備這個特性,則該宏必須設置爲true,好比Linuxwindow都具備內存映射文件,同時APR提供了內存映射文件的操做接口,所以在這兩個平臺上,APR_HAS_MMAP宏必須設置,同時ap_mmap_*函數應該將磁盤文件映射爲內存並返回適當的狀態碼。若是你的操做系統並不支持內存映射,那麼APR_HAS_MMAP必須設置爲0,並且全部的ap_mmap_*函數也能夠不須要定義。第二步就是對於那些在程序中使用了不支持的函數必須提出警告。服務器

目前APR中支持的基本類型包括下面幾種:網絡

3-1 APR中支持的基本類型併發

類型名稱dom

文件夾名稱函數

描述性能

atomic

/apr/atomic

原子操做

dso

/apr/dso

動態加載共享庫

file io

/apr/file_io

文件IO處理

mmap

/apr/mmap

內存映射文件

locks

/apr/locks

進程和線程互斥鎖

memory

/apr/memory

內存池操做

network_io

/apr/network_io

網絡IO處理

poll

/apr/poll

輪詢IO

table

/apr/tables

Apache數組(堆棧)和表格以及哈希表

process

/apr/threadproc

進程和線程操做

user

/apr/user

用戶和用戶組操做

time

/apr/time

時間操做

string

/apr/strings

字符串操做

password

/apr/passwd

終端密碼處理

misc

/apr/misc

大雜燴,不屬於其他類的任何apr類型均可以放在裏面

shmem

/apr/shmem

共享內存

random

/apr/random

隨機數生成庫

       
  apache 的apr項目目前有三部分組成,分別是apr、apr-util、apr-iconv
apr中包含了一些通用的開發組件,包括mmap,DSO等等
apr-util該目錄中也是包含了一些經常使用的開發組件。這些組件與apr目錄下的相比,它們與apache的關係更加密切一些。好比存儲段和存儲段組,加密等等。
apr-iconv包中的文件主要用於實現iconv編碼。目前的大部分編碼轉換過程都是與本地編碼相關的。在進行轉換以前必須可以正確地設置本地編碼。所以假如兩個非本地編碼A和B須要轉換,則轉換過程大體爲A->Local以及Local->B或者B->Local以及Local->A。
以上三個包最新下載地址爲:

http://labs.mop.com/apache-mirror//apr/apr-1.4.6.tar.gz
http://labs.mop.com/apache-mirror//apr/apr-util-1.4.1.tar.gz
http://labs.mop.com/apache-mirror//apr/apr-iconv-1.2.1.tar.gz

關於apr的安裝和參數設置,請參看 http://www.361way.com/manapache/install.html 
相關文章
相關標籤/搜索