2013-05-12 69 views
2

我有一個Visual Studio解決方案,用於具有某些類庫的Windows窗體應用程序,這些類庫是我的應用程序模塊。我的應用程序在「任何CPU」下運行,不能更改爲「x86」,因爲它使用大量的64位dll引用。用於32位dll訪問的自託管WCF服務

我有一個本地C++ 32位DLL,我需要的應用程序的一個模塊內使用,但它是相當不可能的,不想使用的外包裝,所以我已閱讀,最簡單的就是使用可自託管的WCF服務。

我在想的方法是在我的解決方案中創建一個控制檯應用程序(32位)項目,它將引用Native C++ 32位dll,並將託管WCF服務,然後當用戶打開應用程序模塊,我會打電話Process.Start(自我託管的wcf控制檯app.exe)所以我的WCF服務啓動,然後從我的Windows窗體應用程序,我可以訪問的方法等..然後,我將能夠使用本機32位dll方法。

我認爲這被稱爲Out-of Process應用程序。

有沒有人認爲有更好的方法來做到這一點?我真的不想要.EXE應用程序(主應用程序exe和自己託管的wcf.exe),我可以讓自己託管的wcf 32位項目在我的主app.exe 64位項目中生存嗎?如果有可能,我怎麼稱呼它?

在此先感謝

+0

通過將此呼叫置於進程外,與致電相比,您將收到巨大的性能損失它正在進行中。這是分佈式對象設計第一定律的基礎:http://martinfowler.com/bliki/FirstLaw.html – 2013-05-13 13:42:59

回答

2

我做到了,在我的項目,我們命名爲項目_x64或_x86,你可以在同一個解決方案這兩個項目只是更改構建設置。我們將其命名爲進程隔離。
做出以下肯定:

  • 當父進程死亡
  • 當子進程死掉
  • 會發生什麼,會發生什麼呢,當父進程知道子進程是活的 - 開始使用WCF ..
  • 你需要x86的調用是異步的嗎?然後用適當的異步模式

你可以從我的問題得到這些問題的答案:

驗證子進程WCF服務啓動:C# .net 3.5 inter process communication verify the child process has started ok

關閉主控的進程:best way to close hosted process

項目的參考諮詢工作-Eround:Project reference work-around .net 4.5 and .net 3.5

+0

但我不能在x86項目中引用x86項目? – VAAA 2013-05-13 17:45:04

+0

是什麼問題?我不明白.. – ilansch 2013-05-13 19:19:18

+0

是否可以在x64項目中引用x86項目? – VAAA 2013-05-13 19:46:06