2010-12-07 100 views

回答

8

這不是您可以自動執行的操作。

訣竅是,在這兩種WinForms和web表單一個形式是通過一個普通的舊類表示。但是,每當您在asp.net webforms中爲您的表單處理事件時,您都正在使用該類的全新實例。微軟爲儘可能多地嘗試掩蓋這個問題付出了很大的麻煩,但最終以與Winform相同的方式來考慮網絡表單並不是一個好主意。

所以你絕對可以採取WinForms應用程序,並把它改寫使用web表單,但它會是公正的:重寫。

2

添加到以前的答案,請注意,是簡單所以它取決於什麼是在首位的winform沒有在一個WebForm存在着一些WinForm的功能。

3

是的,這是可能的。如果您已經將應用程序設計得足夠好,只需將UI層交換出來並將其替換,就可以相對容易地將Win Forms應用程序轉換爲Web窗體應用程序。您正在重新使用邏輯和數據層(這是所有功能所在的地方)。

很明顯,你必須從頭開始寫一個新的UI層,但是,如果邏輯層寫入不夠好,是不會與從頭編寫整個應用程序相比,太多的工作。

然而,即使你有一個寫得很好的應用程序,也有一些問題。邏輯層可以假設一個有狀態的應用程序,在這種情況下它可能依賴於延遲加載。在Web應用程序中,您擁有一個運行於請求和響應的無狀態模型。在這種情況下,您可以確切地知道您需要什麼,並且可以只加載所需的位,而不是稍後可能需要的其他事物...因爲稍後會有不同的請求/響應週期以及所有數據現在收集將在當前響應完成後立即放棄。

我最近一直把原本是WinForms的應用程序的邏輯放到MVC中,獲得響應速度的最大障礙是這樣一個事實,即雖然編寫得相當好,但邏輯層假定了一個有狀態的環境。同樣的應用程序也被重寫爲WPF(另一個有狀態的環境),沒有太多問題。

1

只是一個評論更多:重寫取決於多少邏輯是在形式本身。有了恰當分離的關注點,只需將另一個UI插入到業務層即可。

的問題是,offcourse,90%的應用程序是沒有什麼更多的有點複雜CRUD UI的(沒有真正的業務邏輯)...

1

轉換一個桌面應用程序的Web應用程序有幾個挑戰:

  • 硬件訪問
  • Windows API調用的應用程序狀態的
  • 管理
  • 訪問文件系統
  • 訪問控制
  • 使用桌面特定的UI/UX /控件

有選擇桌面應用程序轉換以自動化的方式,這些可以轉換兩種用戶界面和應用程序的代碼:

即使使用自動遷移工具,在大多數情況下,您也必須執行大量手動努力讓應用程序以與原始應用程序相同的方式工作。

其中一些工具將有助於實現不同的目標,第一個工具將幫助您僅將UI轉換爲WebForms,最後兩個工具將生成ASP.NET MVC,一個使用自定義運行時和一組庫以及其他與常用的HTML/JS/CSS庫,如Kendo MVVM,Kendo UI,AngularJS或Bootstrap等。 這些工具將提供一種解決方案,將比從頭開始在網絡上編寫應用程序更快,並將提供解決方案或至少指導方針來應對前面提到的挑戰。但是,與爲Web設計的應用程序存在一些差異,僅僅是因爲體系結構不同,通常爲桌面應用程序編寫代碼的方式假定不能爲網絡應用程序假設。

聲明:我爲構建WebMAP2的Mobilize.Net工作。

相關問題