簡體   English   中英

在 Web 瀏覽器中運行 WinForms 應用程序

[英]Running a WinForms Application Inside Web Browser

我有一個 win 表單應用程序,我試圖在 web 瀏覽器中運行它,我翻遍了 web 並找到了一些鏈接:

我試過這個鏈接: Embedding a .NET WinForms Application in an Internet Browser Using WPF ,這工作正常,但問題是最終用戶必須安裝dot net frame work才能運行應用程序。

我在這里找到了另一個鏈接,用於在 Web 瀏覽器中運行 WinForms 應用程序,使用 Visual WebGui開發框架。

有沒有人有任何使用 WebGui 的經驗?

好吧,Visual WebGui是基於ASP.NET 的網絡。 它的開發體驗與使用集成到 Visual Studio 的 Visual WebGui 設計器的 Windows Forms 相同/相似。 您可以像在 Windows 窗體上一樣在背后處理代碼,WebGui 運行時將其轉換為 HTML5/CSS/JS。

將 Windows 窗體應用程序轉換為等效的 Visual WebGui Web 應用程序所需的工作將取決於 Windows 窗體應用程序中使用的(第 3 方/.NET)組件。 Visual WebGui API 與 Windows 窗體的 API 非常相似,因此在某些情況下,您可以添加一些對 WebGui 特定程序集的引用,然后添加對幾個命名空間的搜索/替換。 當然有一些差異,因為這是兩個不同的平台,但開發體驗與 Windows Forms 非常相似。

winforms 不是網絡。 網絡就是網絡。

Web 意味着 HTML + 某些東西(通常是 JavaScript、CSS 和可能的 jQuery 之類的)。

1 - 如果您需要一個 Web 應用程序,並希望使用 .Net 來實現,請創建一個 ASP.Net 應用程序。

2 - 如果您需要 Windows 應用程序(桌面),請創建一個 WPF 應用程序。

3 - 如果您需要 Windows 8“Metro”風格的應用程序(又名 Windows Store 應用程序),請創建一個 WinRT XAML 應用程序。

4 - winforms 完全沒用。 忘記那個。

如果您的客戶不想安裝任何版本的 .Net Framework,您唯一的選擇是 #1。

winforms 應用程序永遠不會是一個 web 應用程序,無論你做了什么讓它在 web 瀏覽器中運行的黑客。

XBAP(WPF 瀏覽器應用程序)也不是 Web 應用程序。 它只是一個普通的 WPF 客戶端應用程序,沒有自己的窗口。

編輯:

如果您以正確的方式做事(即,維護關注點分離並將應用程序邏輯放在控制器或視圖模型中,而不是大多數 winforms 開發人員通常習慣的實踐背后的可怕代碼),那么重用您的應用程序邏輯應該不難並創建一個新的應用程序(Web 或其他),同時保持數據訪問和業務邏輯層的完整性。

在我對Visual WebGui 的有限經驗中,它是一項非常酷的技術。 簡單來說,據我所知,您可以使用 Windows 窗體開發 IDE 創建一個符合 HTML5 的 ASP.NET 客戶端/服務器 Web應用程序......不僅僅是一個網站或頁面,外觀和感覺非常像Windows 窗體桌面應用程序。 它通過在客戶端將 Winforms 控件轉換為 jquery 代碼來實現這一點,並將大部分可執行代碼存儲在服務器端。

我已經使用它來創建用於測試目的的簡單應用程序,但有一些注意事項。 首先,要創建一個“漂亮”的網站,您需要重新考慮 Winforms 的布局,使其像 Web 一樣,帶有標題、側邊欄等。這是一種不同的范例,用戶期望網站上有某些東西。 好消息是,通過簡單地操作控件,這種調整通常可以很容易地完成。 即面板控件可以成為側邊欄或標題的容器。 您還可以創建“主題”,它們就像用於修改外觀的控件的皮膚。

另一個考慮因素是彈出對話框之類的事件在 Web 環境中的行為不同。 在 Winforms 中程序執行停止,直到用戶單擊“確定”按鈕或其他東西。 在 Visual WebGui 中,所有的執行都發生在服務器端; 因此,程序將繼續執行而無需等待用戶輸入。 這可以通過為彈出框創建一個 Form.Close 處理程序來處理。 但是需要牢記這些差異。

您還必須考慮對象布局異常。 Visual WebGui 通常在模仿 Winforms 所見即所得的好處方面做得很好:對象通常出現在網頁上與您將它們放置在環境中的位置非常接近。 但情況並非總是如此。 您有時需要使用對象填充、邊距等來獲得正確的布局。 盡管如此,它通常比用 CSS 或 div 對象繁瑣地改變間距要容易得多。

我認為這個問題與這個問題非常相似:

是否可以在 .NET 中將 WinForm 轉換為 WebForm?

如前所述,在瀏覽器中“按原樣”運行應用程序的唯一方法是使用一些 activex 控件,這需要 IE + .NET Framework。 您可以使用一些工具將應用程序自動遷移到 Web,但總會涉及一些手動工作,這與從頭構建應用程序作為 Web 應用程序不同。

Thinfinity VirtualUI 允許您通過向 C# 應用程序添加一小行代碼來實現此目的,然后可以通過支持 HTML 的瀏覽器從任何操作系統和設備訪問它。

https://www.cybelesoft.com/thinfinity/virtualui/web-integration-for-windows-apps/

我使用過 VWG,但它不再是一個真正的選擇。 此處未提及的一個選項是 WiseJ,這是一個專有框架,2022 年仍在積極開發和支持中。將 WinForms 應用程序轉換為 WiseJ 相當簡單,或者像 WinForms 一樣開始使用 WiseJ。

它們位於此處: https://wisej.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM