我最近一直在设计相当多的 Windows 窗体应用程序(数据输入应用程序、办公集成等),虽然我一直在设计时考虑到逻辑层,但“中间层”业务逻辑层一直托管在台式PC(即物理客户端-服务器)。
当我处理更复杂的应用程序时,我发现自己渴望使用物理中间层,桌面客户端将请求传递回应用程序服务器以处理业务逻辑(可能会定期更改)和接口。感觉就像我错过了 Web 应用程序更原生的可伸缩性和可维护性等因素。
我很想知道其他 WinForms 开发人员在他们的中间层分离方面走了多远:
- 您在中间层服务器上执行多少处理(如果有)?
- 您使用什么通信方法 - WCF、远程处理、Web 服务等?
- 性能在多大程度上是一个因素,您多久往返一次服务器?
将业务逻辑移到单独的层是否有好处,或者将组件本地托管在 PC 上是否更实用(并且只需确保您有一个良好的部署模型来随着业务规则的变化推出定期发布)?
或者,如果涉及这些因素,我是否应该完全引导客户远离 WinForms?有了 Silverlight 甚至 ASP.NET w/AJAX 等替代方案,选择 WinForms 客户端的理由似乎越来越少。