- 已关闭**。此问题需要超过focused。当前不接受答案。
- 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
3小时前关门了。
Improve this question
我们有一个用C编写的成熟的Windows桌面应用程序。该应用程序的GUI位于Windows DLL之上,该DLL为GUI做了大部分工作(它有点像引擎)。它也是用C编写的。出于各种原因,我们正在考虑将Windows应用程序转换为基于Web的应用程序。
我想避免的是必须用C为这个基于网络的应用程序编写CGI。也就是说,我宁愿拥有像Python或. NET语言这样的4G语言来创建这个应用程序的基于网络的版本。
所以,问题是:鉴于我需要在后端使用C DLL来完成应用程序的工作,您会推荐什么技术堆栈来介于用户的浏览器和C++ DLL之间?我们可以假设Web服务器将是Windows。
一些选项:
1.在Windows DLL之上编写一个COM层,然后可以通过. NET访问该层,并使用ASP.NET作为UI
1.直接从. NET访问导出DLL接口,并使用ASP.NET作为UI。
1.编写一个 Package windows DLL的自定义Python库,以便可以编写其余代码。
1.使用C和基于C的MVC框架(如Wt)编写CGI
关注:
- 如果可以避免的话,我宁愿不使用C++作为Web框架--我认为Python和C#这样的语言在开发时间方面更强大、更高效。
- 我担心我将托管和非托管代码与我所要求的. NET解决方案之一混合在一起会导致许多难以调试的小问题(这纯粹是传闻证据)
- 使用Python层也是如此,任何稍微偏离常规的东西都让我担心,因为我没有太多的证据证明这是一个可行的长期解决方案。
4条答案
按热度按时间s5a0g9ez1#
另请参阅可以将现有的大型应用程序移植到Web上吗?如何移植?
抱歉,没有好的解决方案,只有不那么坏的...。
首先,由于您已经为Windows开发,我假设您习惯于使用Microsoft开发工具,我不会为来自UNIX(或Mac)的桌面应用程序给予相同的答案。
一些随意的想法和指点。
(抱歉,我不知道Python的匹配,但是如果你还没有这方面的技能,我会说坚持微软栈,因为你已经知道微软调试器等)
mwg9r5ms2#
3-Python就是解决方案。
在python中创建一个单一的入口点接口,它只需要函数名和传递给函数本身的参数列表。你将有一些东西可以马上开始实验,看看第一个功能性的web原型真正需要DLL的哪些函数。
单个函数模块的存根是
可以使用www.example.com文件进行编译setup.py
并用于简单的Web服务器
omqzjyyz3#
我会说选项2是可行之道。如果你在.Net中创建一个到你的DLL的接口,以确保你在需要时正确地释放你的内存等,我看不出有什么问题。如果你可以在你的DLL中重用你的业务逻辑,基本上可以在你的DLL中进行Web调用,那就太好了。
我唯一关心的是你的DLL的API。ASP.NET显然是一个多用户多线程应用程序。你的API设计成这样了吗,考虑到大多数windows窗体应用程序只有一个用户驱动它们(想象一下,如果你的应用程序中的每个窗体都可以被多个用户同时打开)。
3xiyfsfu4#
既然没有人提到它,那么Wt怎么样?
如果你不需要一个基于资源管理器的UI,有很多C库可以让你把本地应用扩展到基于Web的应用,POCO就是其中之一。如果你坚持使用Windows平台,WWSAPI对C/C开发者来说真的很酷。