共用方式為


COM+ Just-In-Time 啟用概念

Just-In-Time (JIT) 啟用服務可讓 COM+ 停用物件,而用戶端仍保留該物件的使用中參考。 下一次用戶端在 物件上呼叫方法時,客戶端認為該方法仍然作用中,COM+ JIT 啟用服務會立即將物件重新啟用至用戶端。

使用 COM + JIT 啟用的主要優點是,只要用戶端需要物件,就可以保留對象的參考,而不需要系結寶貴的伺服器資源,例如記憶體。 其他重要優點包括:

  • 使用 COM+ JIT 啟用服務可大幅簡化用戶端的程式設計模型,因為用戶端不需要考慮如何使用昂貴的伺服器對象和伺服器資源。 如果沒有 JIT 啟用,用戶端在經常需要呼叫和釋放物件時,可能會受到重大懲罰。

    注意

    您可以使用 COM+ 物件共用服務進一步精簡此效能權益。 藉由共用 JIT 啟動的物件,您可以大幅加快客戶端物件重新啟用的速度,同時重複使用可能保留的資源,讓您更精確地控制伺服器上指定物件所使用的內存量。 如需詳細資訊,請參閱 對象共用和 COM+ JIT 啟用

     

  • 使用分散式應用程式時,建立每個物件需要昂貴的網路來回行程,而且用戶端離伺服器越遠,啟動和封送處理伺服器對象、開啟通道,以及設定 Proxy 和存根的成本愈高。 藉由使用 COM+ JIT 啟用服務,您可以將建立物件的頻率降到最低,以大幅改善應用程式的效能。

  • 當您使用 COM+ JIT 啟用來啟用用戶端保存長期參考但不一定一直使用的物件時,伺服器記憶體不一定會系結起來讓這些物件保持運作。 這可大幅提升應用程式的延展性。 用戶端看到的唯一效能命中是重新啟用物件所需的時間,通常只是比為物件配置記憶體所需的時間略多,而且遠低於遠端物件建立的網路來回行程。

啟用 COM+ JIT 啟用

您可以使用元件服務系統管理工具或 管理員 函式,為元件啟用 COM+ JIT 啟用服務。 如需如何執行這項操作的詳細資訊,請參閱 啟用元件的 JIT 啟用。

COM+ JIT 啟用可以與其他 COM+ 服務互動,例如:

  • 當您的元件需要交易時,會自動為其啟用 JIT 啟用。 如需詳細資訊,請參閱 交易和 COM+ JIT 啟用
  • 當您的元件啟用 JIT 啟用時,同步處理會自動設定為必要。 這表示,如果兩個用戶端同時呼叫 JIT 啟動的元件,並傳回其中一個用戶端的方法呼叫,導致物件停用,另一個用戶端就不會擱置。

如何觸發停用

COM+ 會根據物件內容上的完成度位狀態停用物件。 您的物件可以使用這個位,在指定的方法呼叫期間發出它是否已完成,也就是準備好停用。 如需詳細資訊,請參閱 設定完成位

使用自動完成屬性

使用 Component Services 系統管理工具,您可以設定方法,讓物件在方法傳回時自動停用。 (請參閱 為方法啟用自動完成, 以取得如何設定此屬性的指示。藉由選取此選項,您可以排除在交易中投票的重複方法呼叫。 由於一致性位的預設設定為 True,如果您也已將完成的位變更為 True,而且您不採取任何動作來變更這些設定,則會在方法傳回之後自動呼叫 IObjectContext::SetComplete

不過,此行為有一個警告:COM+ 會檢查方法傳回的 HRESULT。 如果該 HRESULT 指出失敗,則一致性位會設定為 False,結果會與您呼叫 IObjectContext::SetAbort 相同。

總結來說,如果您為方法選取自動完成,且不採取任何動作來設定任何位,而且如果傳回 HRESULT(hr),則適用下列專案:

  • 如果 SUCCEEDS(hr),它就像您呼叫 SetComplete 一樣。
  • 如果 FAILED(hr),就好像你叫 SetAbort 一樣。

使用 IObjectControl 管理物件啟用和停用

您可以實 作 IObjectControl 介面,讓 COM+ 執行時間自動管理物件的停用和重新啟用。 當物件實作這個介面時,COM+ 會在停用物件時呼叫 IObjectControl::D eactivate,並在重新啟用物件時呼叫 IObjectControl::Activate。 這些方法會在物件啟用時啟用自動內容初始化,並在停用時清除狀態。

如果您要共用使用 COM+ JIT 啟用的物件,強烈建議您實作 IObjectControl 如需詳細資訊,請參閱 對象共用和 COM+ JIT 啟用

無狀態和 JIT 啟用

交易物件不一定是無狀態,因為您無法跨交易界限共享狀態。 因此,只有當對象沒有在停用時遺失的狀態時,才會使用 JIT 啟用;否則,您會違反交易的隔離。 由於交易物件的自然使用模式,它們會執行一些工作單位,並在交易認可或中止時釋放物件—JIT 啟用和自動交易密切相關。 設定物件以要求交易會自動啟用 COM+ JIT 啟用。

COM+ Just-In-Time 啟用工作

對象共用和 COM+ JIT 啟用

交易和 COM+ JIT 啟用