處理序隔離

HTTP Server 2.0 版 API 藉由隔離在要求佇列上維護要求的背景工作進程,讓您能夠建置更安全、更可靠的服務。 要求佇列是由嚴格控制其存取權的控制器或建立者程式所建立和管理。 控制器進程會啟動一或多個在要求佇列上執行 I/O 的個別背景工作進程。 控制器進程會以系統管理許可權執行,並設定要求佇列,而較低許可權的背景工作角色則會處理來自要求佇列的存取和服務要求。 此架構支援以「最低許可權」執行的應用程式原則,並降低協力廠商程式碼可能會在背景工作進程中執行的安全性弱點的可能性。

當控制器進程建立具有名稱和存取控制清單 (ACL) 的要求佇列時,就會授與要求佇列的存取權。 ACL 中包含的 Web 應用程式可以依名稱開啟現有的要求佇列。 建立者進程也可能是要求佇列上的背景工作進程。 如需詳細資訊,請參閱 具名要求佇列 主題。 下圖顯示使用背景工作進程模型執行的一般 HTTP 應用程式架構:

此圖顯示使用背景工作進程模型之 H T T P 應用程式的架構。

應用程式內的個別背景工作進程與其他背景工作進程隔離,而且控制器進程可以監視每個背景工作進程的健康情況。 控制器進程會與背景工作進程隔離。 HTTP 架構的元件如下所述:

  • 建立者或控制器進程:控制器進程可以使用或不使用系統管理許可權來執行,以監視健康情況並設定服務。 控制器程式通常會為服務建立單一伺服器會話,並在伺服器會話下定義 URL 群組。 特定 URL 相關聯的 URL 群組會決定哪些要求佇列服務特定 URL 所表示的命名空間。 控制器進程也會建立要求佇列,並啟動可存取要求佇列的背景工作進程。
  • 背景工作進程:由控制器進程啟動的背景工作進程,在與其服務 URL 相關聯的要求佇列上執行 IO。 建立要求佇列時,Web 應用程式會由 ACL 中的控制器進程授與要求佇列的存取權。 除非 Web 應用程式也是建立者程式,否則它不會管理服務或設定要求佇列。 控制器進程會將要求佇列的名稱傳達給背景工作進程,而背景工作進程會依名稱開啟要求佇列。 背景工作進程可以載入協力廠商 Web 應用程式,而不會在應用程式的其他部分引入安全性弱點。
  • 要求佇列:要求佇列是由控制器進程建立和設定。 控制器會指定建立要求佇列時,允許存取 ACL 中要求佇列的程式。
  • 伺服器會話:控制器進程通常會建立並設定應用程式的單一伺服器會話。 伺服器會話會維護整個應用程式的組態屬性。 URL 群組是由控制器進程在伺服器會話下建立。
  • URL 群組:控制器進程會在伺服器會話下建立 URL 群組,並設定與伺服器會話無關的 URL 群組。 URL 會由控制器進程新增至群組。 要求會路由傳送至 URL 群組相關聯的要求佇列。