none
asp.net 開發的web application 可否 與 asp.net 開發的 winform application 互相傳遞資料 RRS feed

  • 問題

  • 想請問一下 asp.net 開發的web application 可否 與 asp.net 開發的 winform application 互相傳遞資料

    若是可以 要如何實作呢? 煩請協助 謝謝

    2007年1月9日 上午 04:55

解答

  • ~"~ 你是聽誰說 ASP.NET 可以開發 Windows Forms Application?

    1. ASP.NET 應用程式不宜和 Windows 應用程式相互操縱,會衍生出像是鎖定或是共用的問題,若有必要,應寫為 Windows Service,並且不可以有會鎖定執行緒的介面出現(例如 Message Box),否則用戶端會因為執行緒被鎖定而認為應用程式當機。

    2. 若需要實作共用類別,建議使用 Class Library 專案,或者是在網站的 App_Code 實作共用程式碼。

    2007年1月9日 上午 05:37
    版主

所有回覆

  • ~"~ 你是聽誰說 ASP.NET 可以開發 Windows Forms Application?

    1. ASP.NET 應用程式不宜和 Windows 應用程式相互操縱,會衍生出像是鎖定或是共用的問題,若有必要,應寫為 Windows Service,並且不可以有會鎖定執行緒的介面出現(例如 Message Box),否則用戶端會因為執行緒被鎖定而認為應用程式當機。

    2. 若需要實作共用類別,建議使用 Class Library 專案,或者是在網站的 App_Code 實作共用程式碼。

    2007年1月9日 上午 05:37
    版主
  • 受益良多 了解 謝謝
    2007年1月9日 上午 05:57
  • 先不論你說的asp.net開發winform是筆誤還是如何,

    假如你的重點是在webform跟winform間的資料交換的話,

    我覺得那應該沒有甚麼問題,就我第一個想到的就是.Net remoting service.

    你可以用.net remoting service去開發一個winform的程式去host資料,
    看是要從資料庫撈資料還是從其它的資料來源,
    然後webform再透過remoting service去跟winform存取資料就可以了.
    這樣應該是就達到webform跟winform互相傳遞資料了!

    2007年1月9日 上午 07:45
  • 我想原 po 應該沒想這麼多,他應該是問可否在同一台電腦上能不能 host Windows Forms 和 ASP.NET appplication,然後共用資料。這也是很多人的迷思 ...

    如果是二台不同的電腦,那當然可以啊,我想到的則是 Web Service。

    2007年1月9日 上午 09:07
    版主
  • 不太清楚你說的迷思是什麼情況...
    (這樣問不知道有沒有違反版規,在回應中問另一個問題...)

    就我之前的經驗.
    為了一些效能的問題,
    希望能將web上要存取的一些資料cache在記憶體中,
    但是因為這些資料希望是能定期更新,
    而且不希望是由使用者觸發,
    所以就用window service透過.net remoting的機制來host這些資料,
    然後定期更新這些資料,
    而asp.net application就透過這個window service來存取這些資料.
    而.Net 2.0後,remoting提供了IPC channel,
    讓同一台機器中不同的application可以更快速的交換資料.

    不過這一切還是要看原po者更詳細的需求說明了,,,

    2007年1月9日 下午 04:32
  • 我所指的迷思就是:

    • 我能不能在 ASP.NET 程式呼叫我寫的 Windows 程式?
    • 為什麼我用 ASP.NET 程式呼叫執行檔後就當住不動了?
    • 為什麼我用 ASP.NET 程式呼叫執行檔,而程式彈出的訊息視窗我看不到?

    雖然不是完全不能,但基本上我還是不建議使用 "Web Application" 呼叫同一台機器上的 "Windows Forms Application",而應該考慮改用 Windows Service(.NET Remoting 當然也行),或者是無使用者介面的元件來實作。 

    而且最要考量的,就是:

    • 被呼叫的程式(Program that is being instantiated)不能有任何會鎖定呼叫者執行緒(caller thread)的程式碼存在。
    • 多人共用時的資源鎖定問題,因為 ASP.NET 是給多人使用,而不是只有單一個使用者。
    • ASP.NET 應用程式的使用者不會是在 Server,而是在 Client,用 Browser 來存取。
    2007年1月10日 上午 05:26
    版主
  • 感謝回應,
    看來是我想得太單純,
    我只是想使用者可能是要問asp.net application怎麼去跟已經在執行中的程式要資料或是餵資料,
    倒不是用asp.net去執行哪個執行檔後接收執行檔回傳的資料.

    2007年1月10日 上午 06:13