我試圖在多個AppDomain上並行執行一些邏輯。我這樣做是因爲我正在使用「不可更改」的遺留代碼,並且我想通過並行化某些東西來提高性能。問題是,如果我在1個AppDomain中運行多個實例,它們都依賴於一些靜態數據結構並干擾彼此。加速跨應用程序域通信
我的實現很簡單。我想運行我的「ExecutionHarness」類的多個實例 - 每個實例都在它們自己的AppDomain中 - 因此我創建了一個在每個AppDomain中實例化的類「ExecutionHarnessProxy:MarshalByRefObject」(因爲ExecutionHarness不從MarshalByRefObject繼承)。然後我只是將「ExecutionData [] data」參數傳遞給「ExecutionHarnessProxy.Execute()」方法。這個人然後稱之爲「ExecutionHarness.Execute()」,一切都很好。
我現在的問題是,無論何時將我的數據數組傳遞給代理類,它都需要FOREVER。 ExecutionData類具有[Serializable]屬性,並且在功能上它都可以工作,但我想知道是否有任何方法可以加速它。
- 如果我在AppDomain邊界的兩側進行了序列化/反序列化,它會更快嗎?
- 這段時間所有的時間都花在做序列化了嗎?還是僅僅是AppDomains之間的序列化數據傳輸?