RPC ASP.NET API我設計的API,使遠程客戶端對遠程服務器執行PowerShell腳本。設計模式:針對後端應用
爲了有效地執行這些命令,應用程序需要以產生用於遠程客戶端的唯一運行空間(因此它可與合適的宿主初始化運行空間和命令該客戶端中設置)。每當客戶端發出請求時,API都需要確保請求在正確的運行空間內執行。
的(過度簡化的)鑑於流動的可能是這樣的:
- 客戶端連接到網絡API,用於後端應用程序發送憑證
- 的Web API,可以通過到後端應用程序將這些憑據傳遞,使用它們來對一個鏈接
session-runspace
ID
- 網頁API或者創建唯一地爲該客戶端配置
- 網頁API和應用程式運行空間「同意」通知
session-runspace
ID的客戶端或其保持在存儲器 - 客戶提出要求:例如
"GET http://myapiserver/api/backup-status/"
- Web API將請求傳遞到後端應用程序函數
- 後端應用程序返回結果:例如, 「JSON {這是備份用戶/客戶端x的當前狀態}」
- 網頁API通過向遠程客戶端通過這些結果
- 要麼超時或註銷請求端「會話」和運行空間設置
(在現實中,PowerShell的應用程序可能只是在Web API中的自定義控制器/模型,或者它可能是一個IIS管理單元或相似 - 我願意在這裏設計建議...)。
我擔心的是,以創造獨特的運行空間爲每個遠程客戶端,我需要給該客戶端的獨特的「會話」的ID,這樣的API可以通過對應用程序正確傳遞請求。這感覺就像我打破了無國籍的規則。
事實上,API仍然是無狀態的,只是後端應用程序不是,但它確實需要爲每個客戶端創建一個會話(RunSpace),然後在超時/結束會話請求後處理RunSpace 。
質詢
- 我應該攻入在ASP.NET MVC的驗證機制來加速旋轉運行空間?
- 我應該認輸,只是砍了一個會話變量?
- 是否有更好的SOA,我應該考慮什麼? (網絡API感覺非常整潔的這雖然 - 特別是如果我想有網絡,移動和什麼具備的,你的客戶)
謝謝 - 我很擔心。 我需要身份驗證才能爲客戶端創建唯一會話(他們可以訪問特定的服務器/命令集)。我想知道在哪裏最合理地啓動RunSpace,身份驗證處理程序或其他地方。 我還想知道web api是否是這項工作的最佳工具,或者是不同的服務設計模式更有意義。 – 2013-02-27 01:13:30