我正在开发一个新网站,使用 ASP.NET MVC2 用 VB.Net 编写,需要为各种复杂的业务逻辑位调用“遗留”VB6 代码。VB6 是一个由许多 dll 组成的框架,并且是非常有状态的,我们几乎模拟了在我们的客户端应用程序中如何使用框架,即应用程序运行(大量状态设置),用户登录(甚至更多状态)和然后加载一个文件(甚至更多状态)。
我已经获得了一个“Web 服务接口框架”来启动并运行它以在 Web 应用程序中使用,这个“Web 框架”将遗留代码隐藏在 IIS 下运行的薄层后面。这个想法是 IIS 提供的线程池将减少内存使用等。我不禁相信提供这个的人没有抓住重点,因为每个实例都是有状态的,所以线程池无法工作,因为一旦用户使用池中的一个特定对象登录,则没有其他对象能够为该客户端提供服务(因为它不会有状态)!此外,与直接调用对象相比,添加 Web 服务接口和关联的 SOAP 编组是一个巨大的开销。
我能想到的唯一方法是一个单一的遗留接口实例,它被所有客户端使用并被每个调用阻塞直到它完成,或者每个客户端一个线程,每个遗留接口对象都在一个新线程中创建并为客户的生活。
这些都不是理想的,但是由于有问题的代码量以及向 .net 的长期迁移计划(2 年以上并且仍然是有状态的),我想不出替代方案。我们为一些客户在 citrix 环境中运行原始客户端应用程序,因此我希望它也可以在每个客户端运行良好的线程给定足够强大的服务器,并且框架本身的开销应该低于涉及客户端应用程序时的开销。
有任何想法吗??