0

我有一个大型 vb6/sql 数据库应用程序(数百个表、类和表单),我想迁移到 c#,同时具有 web、phonegap 和 winform 客户端。我想要集中很多数据库和业务逻辑,并且由于我更喜欢​​ ASP.Net MVC 作为我的 Web UI 平台,因此我正在考虑以下内容:

MVC Web 项目包括:

  • Web UI 的 MVC Web 控制器和视图
  • MVC 控制器将 JSON 对象提供给 phonegap 应用程序和富 html 页面
  • 为 MVC 控制器提供 BLL 服务的服务类
  • DAL 类提供持久性和 POCO 对象以供服务/BLL 类使用
  • 将服务类公开给 Winform 应用程序的 Web 服务。他们会接受并返回 POCO 对象

Winform 应用程序的所有数据都将严重依赖 Web 服务。由于我有数百个数据库表,因此 Web 服务会将这些数据作为 POCO 对象(一些嵌套,一些 POCO 对象列表)返回给客户端。我担心 1)WSDL 会很大,并且随着应用程序的增长和暴露的类数量的增长,它会变得不守规矩(VS 会窒息吗?),2)通过 web 服务返回 POCO 对象可能表现不佳. 我习惯于直接从我的 winform UI 调用 SQL 服务器,因此通过 web 服务的前景似乎可能成为瓶颈,因为一切都被序列化并通过 IIS。

顺便说一句,我知道服务层在逻辑上与 MVC UI 层是分开的,但我将它们结合起来以简化部署。如果它解决了任何问题,我也会考虑 WCF,但据我所知,它增加了不必要的复杂性。

这些是有效的担忧吗?你还有什么建议吗?

4

1 回答 1

0

您如何构建 WinForms 使用的服务?根据设置的方式,您可能需要重新考虑 WCF。您可以将 BLL 放在 WCF 服务中。然后,您的 MVC 应用程序、WinForms 和 PhoneGap 应用程序都可以使用 WCF 服务,这意味着您的所有业务逻辑都在一个位置。只要您不处理巨大的 POCO 并且进行异步调用,使用服务的 WinForms 应用程序就不应该有任何重大的性能问题。

WCF 在这里可能非常好,因为它能够根据您要连接的客户端轻松公开不同的端点。例如,您的 MVC 和 WinForms 应用程序可以使用二进制接口,而您的 PhoneGap 应用程序可以利用 REST 端点。

如果您担心您的服务变得太大,您还可以考虑将其分解为多个服务,每个服务都在数据库的某些部分上运行,或者您的 BLL 中可能已经存在一些其他逻辑分离。

我也想知道为什么此时需要 WinForms 应用程序。有什么你不能在网站上做的吗?您是否研究过 WPF 或 Silverlight?两者都非常自然地与服务一起工作。

于 2012-05-03T02:10:58.563 回答