2010-03-03 163 views
6

我在.NET 3.5中創建了一個Windows窗體可執行文件,它使用dll與掃描檢查的計算機進行通信。我最終將需要從可執行文件移動到可以完成相同任務的Web窗體。這將是幾個月後,但我現在想開始做研究,因爲我以前沒有這樣做過。我將需要使用ActiveX以通過Web窗體與設備進行通信。我以前也沒有這樣做過。從Windows窗體切換到Web窗體

我想保留現有可執行文件的功能,而不必重寫大部分的可執行文件,儘管我明白其中的一些需要重寫。我已經研究了ActiveX以及如何使用它,但是我想知道是否有人有類似的情況。你做什麼將一個exe文件轉換成一個web程序?那裏有好的,具體的消息來源,我可以忽略這些消息可以指出我對這種情況的正確方向嗎?有沒有什麼建議可以幫助我減少錯誤?我爲之工作的公司在此之前沒有任何其他人已經完成了這項工作,所以我必須自學一切需要做的事情。

在此先感謝。

+0

你能解釋爲什麼它需要成爲一個Web表單?這是部署/流行語符合性/跨平臺性的問題嗎? – 2010-03-03 15:51:27

+0

這不是一個簡單的問題,可以在不知道您已經編寫的程序的複雜性的情況下進行回答。無論如何,我真的希望你的代碼能夠充分考慮問題,因爲在原始項目完成之後,聽起來管理層對你提出了這樣的要求,而不是在最初知道最有用的時候。 – 2010-03-03 15:52:45

+0

這不太可能奏效,除非您可以將檢查掃描機連接到您的Web服務器。如果沒有,開始學習Javascript和Internet Explorer的安全模型。 – 2010-03-03 15:54:08

回答

5

這是關注點與n層設計分離的地方。希望你的UI層與你的域模型鬆散耦合。如果是這種情況,您可以編寫Web的第二個IU層。而不必根本改變你的領域模型。然後你可以編譯每個場景。

*注意 - 在實際使用中,我一直需要擴展業務領域來解決第二個用戶界面的一些問題,但這些修改通常很小,並指出了我無論如何都緊密結合的地方。


你可以考慮另一種選擇是建立在你的業務域代碼中的Web服務層。然後編寫一個Web應用程序,通過這些Web服務調用與您的域模型進行通信。這可能會影響性能,並不是我的首選方法。儘管如果你沒有一個設計良好的應用程序,你可能會發現它更易於管理。

0

通常,將winforms轉換爲webforms是很有可能的,儘管通常是一個緩慢的開發過程。即使您擁有世界上最乾淨的域圖層,每次都會丟棄網頁中的對象,這意味着Web域圖層通常與桌面域圖層的寫法截然不同。

但是,在你的情況下,設備 - 服務器通信會變得非常困難。

你看過xbap嗎?這基本上是一種將WPF應用程序部署到網頁中的方法。它需要你的客戶安裝正確版本的.NET,但它將成爲你最簡單的途徑,特別是考慮到你可以在WPF中託管winforms ...

+0

我會研究xbap,但我不相信我會被允許在我們現有的環境中使用它。 – Aaron 2010-03-03 16:17:32

1

「我想保留功能我現有的可執行文件,而不必重寫它的大部分「

一般來說,如果你提取儘可能多的邏輯到自己的程序集/ DLL,你可以重複使用你想要的任何UI框架。只要確保你沒有做任何特定的UI(拋出對話框等)。

0

你可以在Silverlight 4中看一看,

http://silverlight.net/getstarted/silverlight-4-beta/

它包含了許多功能,ASP。NET Web窗體沒有。

如果你的團隊可以接受ActiveX之類的東西,爲什麼不使用Silverlight 4呢?唯一的缺點是SL4仍處於Beta版。