我有一个带有WinForms GUI的.Net(c#)应用程序。除此之外,我想提供一个辅助Web GUI,以便可以从用户家中的另一台PC控制应用程序。
因此应用程序应填写部分网页(值)。
Web界面应该开箱即用,因此用户无需安装或配置第三方软件。
实现这一目标的最佳方式是什么?
还有第二个问题:一旦实现,我想在服务器上运行我的应用程序并提供对互联网上多个用户的访问权限,我是否可以轻松转移到更高性能的Web服务器?
答案 0 :(得分:5)
以下是您可以采取的一些方法:
您可以使用像Nancy这样的轻量级Web框架来提供页面并让它从您的应用程序/数据库中获取数据。 Nancy是designed to run anywhere,这使得它更适合构建桌面应用程序。您可以通过阅读Why use NancyFx来了解Nancy语法。
Asp.net通常与IIS一起使用,但可以部署为桌面应用程序。 This Lunar Frog blog post描述了你如何做到这一点。它提到了使用官方安装程序需要在用户计算机上安装的IIS Express。
如果您还没有完成很多网络应用开发,最好先关注Asp.net Tutorial并首先构建虚拟应用。
我自己也没用过。 Asp.net是大多数C#开发人员的首选,它将帮助您更好地了解如何构建Web应用程序。 (REST,控制器,模板/视图等)但更轻松的解决方案将帮助您更快地开始使用,并且可能更适合桌面应用。
这两个选项都可以在单独的服务器上运行,但要小心从两个前端(Gui和Web)中分离业务逻辑和数据库查找。南希甚至声称要在linux上运行!
您还需要决定将数据渲染到模板中,还是使用javascript来获取数据。
Asp.net和Nancy都有自己喜欢的view engines NHaml或TextTemplatingFilePreprocessor。南希描述了它支持的here。
或者,您可以构建一个返回JSON的API,并使用前端javascript框架(如Ember.js,Knockout.js或Angular.js来使用该数据。
答案 1 :(得分:1)
Web API(http://www.asp.net/web-api)可以完成您需要的所有内容。
理想情况下(在大多数情况下)您的WinForms应用程序应将其所有数据备份到数据库(最好通过API),并且您的Web Api将与数据库交互,而不是WinForms应用程序。
是的,您可以在将来将Web API移动到其他服务器。