我正在为我的公司开发一个 C# 替代旧版 VB 应用程序。前端基本上是 Windows 窗体内部的 Web 浏览器控件,提供有时会更改为包含用户数据的离线内容。由于旧应用程序中有 100 个或更多 Web 文件,我们将重用旧应用程序中的 Web UI,并在其周围使用新的 C# 包装器,并根据需要对其进行修改。
我的问题是关于如何存储和传送网络内容。
- 将 Web 文件复制到临时文件夹并将 Web 浏览器控件指向临时文件夹的 file://地址是否有意义?
- 是否有某种预构建的离线友好型服务器框架比将文件复制到临时文件夹更有意义?
- 我的项目中有网络源文件作为资源,但我不确定这是否适合我的使用。是吗?
- 旧版 VB 实现改变了 Web 文件以使用 Substring 方法注入(inject)数据;它搜索魔术字符串并用适当的数据替换它们。该代码闻起来很糟糕,是否有更好、更 native 的数据注入(inject)策略我应该看看?
一些背景:
- 数据使用 HTML\CSS\JS 呈现,有时也使用 XSL。
- 浏览器提供编译时可用的内容。
- 当用户单击页面按钮时,我将不得不使用 C# 代码处理一些事件。
- 我可以自由选择实现应用程序所需的任何方法。
最佳答案
托管
我可能会避免为网络内容使用临时位置,因为它看起来有点粗糙。如果您的 html 页面之间没有内部链接并且所有的 css/js 都嵌入在一个文件中,那么使用 WebBrowser.DocumentText 可能会更容易。属性(property)。
我成功用作轻量级嵌入式 Web 服务器的另一个选项是 logv-http , 它有一个非常容易配置的语法。如果您想针对 localhost 以外的任何内容进行配置,它确实需要管理员权限,但听起来一切都将是本地的。
var server = new Server("localhost", 13337);
server.Get("http://localhost:13337" ,(req, res) => res.Write("Hello World!"));
server.Start();
模板化
我认为字符串替换不一定不好,这取决于有多少以及它们试图变得多么复杂,但对于简单的查找替换来说,它应该不会太难管理。如果有很多替换将它们包装到 RegEx 中应该有助于提高性能。
将 Web 内容存储为嵌入式资源可能是我采用的方式,您可以在运行时读出它们并进行预处理,然后通过 Web 服务器方法或直接返回到 DocumentText 中。
关于c# - 使用 Web 浏览器控件提供 jar 装脱机 Web 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481078/