內容控制碼

有時候,分散式應用程式需要伺服器程式來維護用戶端呼叫之間的狀態資訊。 一次服務多個用戶端的伺服器程式必須保留每個用戶端的狀態資訊。 由於用戶端和伺服器在不同的電腦上使用不同的位址空間,而且不一定彼此信任,因此資料共用的常見方法通常無法運作。 例如,用戶端和伺服器無法在全域變數中維護其遠端會話的狀態資訊,因為它們不會共用相同的全域位址空間。 因為資訊在不同的電腦上執行,所以很難將資訊保留在共用檔案中。 簡單方法可能是將所有狀態寄送給用戶端,並在下一次呼叫時讓用戶端傳回它,但此方法有缺點:伺服器不一定信任用戶端傳回正確的狀態,而且狀態可能會隱含地系結至伺服器上的某些其他狀態,例如檔案控制代碼或開啟的通訊端。

Microsoft RPC 提供功能強大的安全機制,稱為內容控制碼,可保留與伺服器上指定用戶端相關聯的狀態。 狀態資訊稱為伺服器的內容。 用戶端可以取得內容控制碼,以識別其個別 RPC 會話的伺服器內容。

例如,分散式應用程式中的每個用戶端都可以讓伺服器程式建立和更新其 RPC 會話的資料檔。 伺服器可以使用其檔案控制代碼作為每個用戶端資料檔案的內容控制碼。 每次用戶端要求伺服器為其建立之資料檔案上的作業時,用戶端都會將內容控制碼傳遞給伺服器。 用戶端實際上不會取得檔案控制代碼本身;它會取得不透明的權杖,伺服器 RPC 執行時間可以唯一與檔案控制代碼產生關聯。 由於內容控制碼實際上是檔案控制代碼,因此內容控制碼只有在伺服器的位址空間中才有意義。 不過,用戶端程式可以使用內容控制碼來告訴伺服器要執行更新的檔案。

其他資料也可以是內容控制碼。 例如,用戶端和伺服器可以使用資料庫記錄的記錄號碼做為檔案控制代碼。 如果用戶端需要在特定記錄上執行一些更新,它可以取得記錄號碼做為內容控制碼。 它會在每次叫用遠端程式來更新資料庫記錄時,將記錄號碼傳遞給伺服器。

內容控制碼最常指向伺服器上保留各種管理資訊的記憶體區塊。

本節提供定義和使用內容控制碼的相關資訊。 討論會以下列主題呈現: