2012-03-11 121 views
1

我爲某種目的構建了桌面WPF C#應用程序。 C#應用程序在另一個C++應用程序中調用函數,並將C++應用程序的結果返回給C#應用程序。該應用程序工作正常,但我打算採取相同的功能(ASP.NET)將C#桌面應用程序移植到網絡

我可以使用我在桌面解決方案中使用的相同類型的東西嗎? ASP.NET應用程序可以將函數調用到C++項目中,並從C++應用程序獲取結果嗎? DllImport[CallingConvention = CDecl, CharEncoding=Ansi]

EDIT--
我最關心的是,當我發出函數調用C++應用程序,它需要5秒鐘的C++函數來執行它的處理。在此期間,C#應用程序可能被認爲是凍結的GUI。在ASP.NET網站中類似的情況會發生什麼?由於多線程和所有這些會導致混亂嗎?

回答

2

是的,ASP.NET應用程序可以使用DllImport機制。

+0

這會有什麼不同或者一樣嗎?我主要擔心的是,當我向C++應用程序發出函數調用時,C++函數花費5秒鐘來處理它。在此期間,C#應用程序可能被認爲是凍結的GUI。在ASP.NET網站中類似的情況會發生什麼?由於多線程和所有這些會導致混亂嗎? – Cipher 2012-03-11 14:29:32

+0

如果計算需要5秒鐘,服務器上的請求處理將花費相同的5秒(+發送響應時間,但以毫秒爲單位)。客戶端將等待來自服務器的三重響應。如果您將使用AJAX,則網頁不會被凍結。否則,用戶將等待整個頁面數據(可以瀏覽前頁/空頁面並加載動畫)。 – TcKs 2012-03-11 14:37:17

+0

處理請求的最大時間可以在Web服務器中配置(您可以使用IIS)。有很多可配置的值用於穩定性/可伸縮性等。 – TcKs 2012-03-11 14:38:23

1

在ASP.NET應用程序中調用COM或pinvoked方法時沒有問題。即使通話持續5秒完成,客戶端的瀏覽器也只是等待答案。因此,您的應用程序的用戶體驗只是緩慢。

通常這種持久的服務器調用包裝在AJAX請求中,這樣至少您可以向用戶顯示一些信息,例如帶有「請稍候」或類似內容的旋轉圓圈。

0

它基本上是一樣的! wpf使用與aps.net 相同的clr,區別在於,Web應用程序主要是多用戶環境。 所以你的COM/C++組件必須與併發用戶一起工作。

相關問題