在管理資料庫連線生命週期時，針對不同的應用程式類型（如 Web 應用程式與桌面應用程式），有幾個實務考量或最佳實踐，這些考量會直接影響應用的效能。

### 1. 對於 Web 應用程式

**實務考量與最佳實踐：**
- **連線開啟與關閉的時機**：由於Web應用程式通常是一個高併發的環境，建議在實際執行需要存取資料的操作前開啟資料庫連線，並在操作完成後立即關閉連線。這樣做可以減少佔用資料庫資源的時間，避免因為長時間佔用連線而造成的性能瓶頸。
  
- **使用連線池 (Connection Pooling)**：為了改善效能，可以使用連線池技術，這樣可以事先創建一組可重複使用的資料庫連線，當應用程式需要資料庫連線時，從池中獲取一個已經存在的連線，這樣可以避免過度建立和銷毀連線的開銷。

### 2. 對於桌面應用程式

**實務考量與最佳實踐：**
- **連線持久化**：在桌面應用程式中，通常使用者在一個較長的時間內進行多次資料存取。此時，可以考慮在整個應用程式的生命週期中保持連線的持久性，這樣可以避免每一次操作都重新建立和關閉連線所帶來的開銷。

- **適時釋放連線**：雖然在桌面應用程式中可以持久化連線，但當使用者結束操作或不再需要資料庫存取時，仍然應該適時釋放連線，避免造成不必要的資源浪費。

### 效能影響

1. **連線開啟與關閉的成本**：每次建立與關閉連線都會產生相當的開銷，包括網路延遲以及資料庫系統的負擔，因此在高頻率的資料存取場合，開關連線的頻率越低，效能越高。

2. **併發性能**：Web應用程式若不有效管理連線，可能會導致連線資源耗盡，進而影響到其他使用者的存取，而連線池能有效解決這個問題，提升併發性能。

3. **資源管理**：持久化連線讓桌面應用程式可以更快的進行資料存取，但也可能在不使用時浪費資源，因此管理連線的生命週期變得尤為重要。

綜合來看，針對不同的應用程式類型，合理的資料庫連線管理能顯著提升應用效能，提高響應速度並減少資源浪費。
基於不同的應用程式類型（如 Web 應用程式與桌面應用程式），在管理資料庫連線生命週期時，有哪些實務考量或最佳實踐？這些考量又如何影響應用效能？
**資料存取** (Data Access)，是應用程式連結到資料來源 (Data Source) 存取資料的一種行為 (Behavior)，在大多數的應用程式中，經常會需要使用到資料，而這些資料可能來自很多不同類型的來源，像是資料庫 (Database)，網路資料來源，本機檔案，或是異質性的來源 (例如在 Mainframe 上的 IBM DB2 資料庫)，經由一層 (或多層) 中介程式碼或中介軟體 (Middleware) 進入資料來源中，並且取出資料後送回應用程式中來處理。

## 標準

資料存取通常會依資料來源的不同，而會出現不同的存取方法，例如早期 SQL Server 的 DB-Library，這些介面通常只能由 C/C++ 程式語言來呼叫，而且各個資料庫都有各自獨立的 API。但開發工具與軟體廠商開始相繼的提供一致的介面標準，由資料庫廠商開發出基於介面標準的 API，以方便應用程式開發人員發展資料庫應用程式 (Database Application)。

### ODBC

ODBC (Open Database Connectivity) 是由 SQL Access Group，X/Open (目前為 The Open Group 的一部份) 以及 ISO/EIC 所提出的 Call Level Interface (CLI) (呼叫層次介面) 介面規格，由微軟開發出第一份 ODBC 的實作，每一個資料庫都可以實作出連結自家資料來源的 ODBC 驅動程式 (Driver)，而應用程式開發人員能夠利用 ODBC 所開放的 API 呼叫，經由 ODBC Driver 來進入資料庫進行存取以及處理工作。

ODBC 現在已經是大多數平台上的共同資料存取標準，並且後續由各軟體廠商提出的資料存取規格，多數都和 ODBC 有類似的規格。

### JDBC

與 ODBC 類似，由昇陽在 JDK 1.1 中建立的專屬 Java 程式語言的資料存取規範，各家資料庫可以實作 JDBC Driver 介面提供資料來源的功能，而應用程式開發人員可利用 Java 所提供的 JDBC API (java.sql 與 javax.sql 封裝) 來呼叫 JDBC 類別物件，再由 JDBC 類別物件來呼叫 JDBC Driver 連到資料庫中。

目前最新版本為 JDBC 4.0 (於 Java SE 6.0 中)

### OLE DB

由 Microsoft 提出的類似 ODBC 的資料庫存取規格，但它是使用 COM 以及 **Provider-Based** 模型來建構，OLE DB 規格中定義了許多的介面，由資料庫提供者 (database provider) 來實作這些介面，應用程式開發人員則直接利用 COM 呼叫這些 OLE DB 介面來連接與存取資料。但 Microsoft 也實作了可以橋接 ODBC Driver 的提供者：**OLE DB Provider for ODBC**，在微軟 Windows 應用平台中被大量使用於資料存取中。與 JDBC 不同的是 JDBC 是屬於 Java 程式語言的專屬規格，但 OLE DB 可以被能夠呼叫 COM 介面的任何程式語言使用。

OLE DB 也是 ADO 以及 ADO.NET 的核心基礎，而這些 API 目前也被廣為用在微軟 Windows 應用平台中。

## 原理

大多數資料存取的介面規格都是由**連線 (Connection)**，**命令 (Command)**，以及**資料集 (Resultset)** 三個部份構成。

### 連線

連線是由應用程式透過呼叫資料存取提供介面提供的函式，以連線的必要資訊為主，與資料庫之間所建立的一條實體資料連結，連結的方式要視資料庫以及資料庫所在位置而定，這些連線所需要的必要資訊，通常都會定義在一組字串中，此字串即稱為**連線字串 (Connection String)**，連線字串在 JDBC 與 OLE DB 的應用程式中隨處可見。

一個典型的連線字串如下：

當連線開啟到關閉之間，應用程式可以利用命令來呼叫或存取資料來源中的資料，但不同的應用程式類型，控制資料庫連線生命期的方式也不同，例如在網站類型的應用程式 (Web Application) 中，為了不讓資料庫的資源在多人環境下被鎖定太久，因此連線通常只會在實際執行資料存取前才會打開，在存取完成後立刻關閉。

### 命令

命令是由應用程式經由連線送入資料來源的指令或資料，通常是 SQL 指令（或預存程序）以及其參數，或者是由資料來源所支援的其他控制碼等，命令送入資料庫執行後，視命令類型來決定會不會傳回資料集，像是 SQL 的 SELECT 指令會傳回結果集，而 INSERT, UPDATE, DELETE 會回傳受影響的列數 (可以由資料庫控制不傳回)。

### 資料集

資料集是由命令送入資料來源後所傳回，帶有結果資料錄的集合，資料集可視為一個小型的資料表格，資料存取介面也提供資料集瀏覽的 API 來讓應用程式存取並使用資料集中的資料，大多數資料集的瀏覽介面都是由高階的 API 來提供，例如 ADO 是由 Recordset 來封裝，JDBC 由 Resultset 來封裝，而 ADO.NET 則是用 DataReader 來封裝。

部份資料集介面也提供在不與資料庫連線下存取的暫存資料集服務，例如 ADO.NET 中的 DataTable，DataSet 等。
## 相關條目

* 產品生命週期
* 應用程式生命週期框架
* 商業交易管理
* 生命週期協作開源服務
* 系統發展生命週期
* 軟體項目管理
  * 專案管理軟體比較
  * 缺陷跟蹤管理系統
  * Forge (軟體) ## 定義及類似術語

各種類型的動態網頁和「網路應用程式」 之間的區別一般是不清楚的。最有可能接近「網路應用程式」的網站是與桌面軟體應用程式或行動應用程式具有類似功能的網站。HTML5 引入了明確的支援，使得應用程式可以作為網頁載入，可以在本地儲存資料並在離線狀態下繼續執行。

單頁應用更類似於應用程式，因為它們沒有使用不同的 URL 切換操作介面。像 Sencha Touch 和 AngularJS 這樣的單頁網頁框架可能會被用來為行動平台開發這樣的網頁應用。

### 行動 web 應用程式

在製作 Web 應用程式時，有幾種定位行動裝置的方法：

* 回應式網頁設計可用於製作網路應用程式 - 無論是傳統網站還是單頁應用程式，都可以在小螢幕上檢視，並且可以很好地與觸控式螢幕配合使用。
* 漸進式網頁應用程式是常規網頁或網站和行動應用程式的混合體。
* 原生應用程式或「行動應用程式」直接在行動裝置上執行，就像常規軟體應用程式直接在桌上型電腦上執行一樣，而無需 Web 瀏覽器（並且可能不需要 Internet 連接）; 這些通常是用 Java（Android 裝置）或 Objective C 或 Swift（用於 iOS 裝置）編寫的。最近，像 React Native，Flutter 和 Xamarin 這樣的框架允許使用不同於每種標準本地語言的語言來開發所有平台的本地應用程式。
* 混合應用程式在本地應用程式中嵌入行動網站，可能使用混合框架（如 Apache Cordova 和 Ionic 或 Appcelerator Titanium）。這允許使用網路技術進行開發（並且可能直接複製來自現有行動網站的代碼），同時還保留原生應用的某些優點（例如，直接存取裝置硬體，離線操作，應用商店可見性）。 **網路應用程式**（英語：web application，英文簡稱 **Webapp**）分為客戶端到伺服器架構或無伺服器後端架構。其中的客戶端就是網頁瀏覽器。常見的網頁應用程式有 Webmail、網路購物、網路拍賣、wiki、網路論壇、部落格、網路遊戲等諸多應用。

網路應用程式風行的原因之一，是因為可以直接在各種電腦平台上執行，不需要事先安裝或定期升級等程式。 **應用程式生命週期管理**（Application lifecycle management），簡稱 **ALM**，是指電腦程式的產品生命週期（包括軟體開發過程及軟體維護過程）。其中包括了需求管理、軟體架構、程序設計、軟體測試、軟體維護、變更管理、持續整合、專案管理和發佈管理。

## ALM 和軟體開發生命週期的關係

ALM 的概念比軟體開發生命週期（SDLC）要廣，後者只限制在軟體開發的階段（例如需求、設定、寫程式、測試、組態、專案管理及變更管理）。ALM 在開發完成後仍會繼續進行，直到應用程式不使用為止，而且可能會跨越數個體開發生命週期。

## 軟體套件

以下是一些 ALM 工具：

## 參考資料

## 延伸導讀

* Keuper, Frank; Oecking, Christian; Degenhardt, Andreas; Verlag, Gabler. Application Management: Challenges - Service Creation - Strategies. 2011. ISBN 978-3-8349-1667-9.
* Linnartz, Walter; Kohlhoff, Barbara; Heck, Gertrud; Schmidt, Benedikt. Application Management Services und Support. Publicis Corporate Publishing. 2004. ISBN 3-89578-224-6.
* Gartner Market Scope for ALM 2010. [2020-09-19]. （原始內容存檔於 2019-08-17）.
* Hüttermann, Michael. Agile Application Lifecycle Management. Manning. 2011. ISBN 978-1-935182-63-4.