2010-04-09 28 views
1

我需要使webform與winform進行通信並返回到webform。原因是它存在一個已經制作好的webform軟件,現在需要.NET組件的行爲僅適用於winforms。我們已經嘗試了使用Process.Start和shell.execute,但採用這種方法,軟件掛起或響應時間過長。網絡表單還需要從網絡中的客戶端PC調用,我認爲這增加了另一個問題,因爲不可能通過網絡表單調用一個文件的執行,但我對此技術問題知之甚少.net winform和webform之間的通信

我們已經閱讀了一些關於在webform中嵌入winform,從winform發送數據到webform等的文章,我們想知道如何處理這種情況的推薦方法(如果有的話)。

+0

你的問題不清楚。 – SLaks 2010-04-09 16:19:36

+0

爲什麼不把代碼放在dll中並引用該dll? – 2010-04-09 16:21:19

+0

我想他想使用WinForms專用控件。 – SLaks 2010-04-09 16:25:06

回答

1

如果您有權訪問WinForms應用程序的源代碼,那麼您最好的方法是從那裏提取您需要的代碼,並將其直接合併到您的WebForms應用程序中。

如果此代碼需要由WinForms和您的WebForms應用程序使用,那麼您應該將代碼重構爲一個單獨的類庫(DLL),然後由這兩個應用程序使用。

如果您只有Windows應用程序的EXE,並且它是一個.Net應用程序,則可以使用Reflection來創建和使用在此處定義的對象。

如果它不是.Net EXE,告別並感謝所有的魚(除非它是COM,在這種情況下,告別並感謝所有的魚)。

更新:我從來沒有嘗試過這一點,我推薦它,但我假設你基本上要能夠在Web應用程序中使用基於Windows的形式可視組件(即你想讓這個東西在瀏覽器中顯示出來)。

您可能能夠將原始WinForms項目中的每個Form重建爲位於網頁上的ActiveX控件。此鏈接介紹如何在.NET中創建一個基本的ActiveX控件:

http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx

我不知道瀏覽器支持的想法ActiveX控件,這些天(我知道有一些還是),而這種做法肯定行不通在非Windows操作系統上。此外,您必須處理在每臺客戶端計算機上部署和安裝可視化組件(並且您需要檢查此控件的許可協議 - 幾乎肯定會明確禁止此類使用)。

理論上,這是可行的。一個ActiveX控件可以或多或少地做或使用任何常規窗體可以(受權限等)。

+0

我可以訪問winforms源代碼,但不能訪問winform中使用的winforms組件源代碼。順便說一下,這是一個可視化組件 – Pablo 2010-04-09 16:29:26

+0

@Pablo:你是否真的能夠像在該示例中創建一個ActiveX控件?我很想知道它是否真的有效。 – MusiGenesis 2010-04-10 15:50:43