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