2013-12-09 75 views
2

我正在爲我的公司開發C#替代舊版VB應用程序。前端基本上是一個Windows窗體內的Web瀏覽器控件,提供離線內容,有時會更改爲包含用戶數據。因爲遺留應用程序中有100個或更多Web文件,我們將重新使用舊應用程序中的Web UI和新的C#包裝器,並根據需要修改它們。使用Web瀏覽器控件服務預設的離線網頁內容

我的問題是關於如何存儲和交付網頁內容。

  • 將Web文件複製到臨時文件夾並將Web瀏覽器控件指向臨時文件夾的file://地址是否合理?
  • 是否有某種預構建的離線友好的服務器框架比將文件複製到臨時文件夾更有意義?
  • 我有我的項目中的網絡源文件作爲資源,但我不確定這是否適合我的用途。是嗎?
  • 傳統的VB實現改變了Web文件以使用Substring方法注入數據;它搜索魔術字符串並用適當的數據替換它們。該代碼聞起來很糟糕,我應該看一下更好,更原生的數據注入策略嗎?

一些背景資料:

  • 數據使用HTML \ CSS \ JS提出並有時也XSL。
  • 瀏覽器提供在編譯時可用的內容。
  • 當用戶點擊頁面的按鈕時,我將不得不使用c#代碼處理一些事件。
  • 我可以自由選擇實現應用程序所需的任何方法。

回答

1

託管

我可能會避免使用一個臨時位置的Web內容,它只是似乎有點粗。如果您的html頁面之間沒有內部鏈接,並且所有css/js都嵌入到一個文件中,則只需使用WebBrowser.DocumentText屬性即可。

我已成功用作輕量級嵌入式Web服務器的另一個選項是logv-http,它具有相當簡單的配置語法。如果你想配置本地主機以外的任何東西,它確實需要管理員權限,但它聽起來像是一切都將是本地的。

var server = new Server("localhost", 13337); 
server.Get("http://localhost:13337" ,(req, res) => res.Write("Hello World!")); 
server.Start(); 

模板

我覺得字符串替換不一定是壞,取決於有多少,他們正努力成爲多麼複雜,但對於簡單的找到替代它應該不會太難管理。如果有很多替代品將它們包裝到RegEx中,應該有助於提升性能。

將Web內容存儲爲嵌入式資源可能是我該怎麼做的,您可以在運行時將它們讀出來,然後您是否預處理,然後通過Web服務器方法返回或直接導入DocumentText。