C# 创建可以在线和离线访问的web应用程序

C# 创建可以在线和离线访问的web应用程序,c#,html,web,C#,Html,Web,我是网络编程的新手。在过去的8年里,我一直在做桌面应用程序程序员。现在,我的一个项目是使用HTML5和一些java脚本创建一个web应用程序,这些应用程序可以在云上实时运行,也可以作为桌面应用程序下载以脱机工作。我不需要任何数据库来存储任何数据。我正在考虑编写一个带有web浏览器控件的C#win表单应用程序,以加载HTML页面和.js文件 我的问题是: 有可能实现吗?如果是的话,除了我上面提到的,还有别的办法吗 访问文件(html文件、java脚本文件等)等安全问题如何?是否可以从本地硬盘将其调

我是网络编程的新手。在过去的8年里,我一直在做桌面应用程序程序员。现在,我的一个项目是使用HTML5和一些java脚本创建一个web应用程序,这些应用程序可以在云上实时运行,也可以作为桌面应用程序下载以脱机工作。我不需要任何数据库来存储任何数据。我正在考虑编写一个带有web浏览器控件的C#win表单应用程序,以加载HTML页面和
.js
文件

我的问题是:

  • 有可能实现吗?如果是的话,除了我上面提到的,还有别的办法吗
  • 访问文件(html文件、java脚本文件等)等安全问题如何?是否可以从本地硬盘将其调用到我的应用程序中
  • 如果我可以将其作为桌面应用程序运行,如何确保客户端计算机中的任何人都不会访问源代码
  • 这是可以实现的,但为什么要将其封装在一个C#web浏览器控件中对我来说真的没有意义。使用HTML5,您可以定义缓存清单文件来创建在任何支持它的浏览器中运行的脱机应用程序,只要客户端有一个功能强大的浏览器,就不需要用任何东西包装它。他们甚至不必知道这是一个离线应用程序
  • 关于安全问题,我不太清楚你的意思。这是一个庞大的话题。只要使用常识,并意识到您存储在他们计算机上的任何内容都可以被他们访问(例如,不要将您的公钥/私钥对交给他们,也不要在您发送给他们的文件中存储任何密码或任何您不希望他们读取的内容)并使用安全连接在客户端和服务器之间来回发送敏感数据
  • 如果源代码在他们的机器上,你真的不能阻止任何人访问源代码。您所能做的最好的事情是在部署之前将其模糊到合理的程度,以使试图阅读它的人更难理解

  • Silverlight怎么样(并在浏览器外运行)?我考虑过Brad Christie,但我的应用程序更多的是计算,HTML和java脚本是最好的选择。如果您的web应用程序仅由HTML、css和javascript组成,然后所有文件都可以下载,以便可以在本地浏览器上渲染/运行。添加带有web组件的windows窗体与在浏览器中运行没有什么不同。谢谢Scampbell。我明白你的意思。我的想法是编写HTML、CSS和Java脚本,并将其作为在线应用程序发布到云上。要将其用作独立应用程序(针对没有网络连接的不同客户),请创建win form应用程序。如果web服务器是带有ASP.net的IIS,然后,您的应用程序逻辑可以存在于动态生成HTML和JavaScript的DLL程序集中,并在桌面应用程序的情况下将其发送到浏览器/浏览器控件(可能使用内存流来放置然后读取代码)。这将需要更多的初始工作,但您只需编写一次代码创建部分,并且对于使用相同技术的web和桌面,这将是相同的。谢谢BoredBlazer。你的回答对我更有意义。但是,您能否对缓存清单文件进行更多的说明?一些教程链接会很有用。关于第3点:基本上这是对的,但在我看来,反编译和理解二进制文件要比理解和阅读普通HTML/JavaScript付出的努力更大,因此无法如此轻松地进行比较。下面是一个关于它的例子。基本上,HTML5引入了一个称为应用程序缓存的标准,只要客户端访问一次,它就允许web应用程序100%的正常运行时间。他们总是会点击web应用程序的同一URL,但如果您没有更新它,则服务器已关闭,或者他们的网络已关闭,它将充当脱机应用程序。当你更新应用程序时,只需更新缓存清单文件,下次他们访问BOOM时,就会得到一个更新的应用程序。@pasty我同意你的观点,但因为他说它也将是一个在线应用程序,所以将其包装在动态生成HTML的编译应用程序中并不会更加安全。客户端将能够通过任何一种方式观察交付给他们的html/javascript内容。这并不完全正确,因为可以将web浏览器组件配置为不允许显示上下文菜单,从而不允许显示源代码!OP表示他想创建一个带有浏览器控件的Windows窗体应用程序。