选择正确的.NET体系结构。WCF?WPF/Forms、ASP.NET(MVC)?

选择正确的.NET体系结构。WCF?WPF/Forms、ASP.NET(MVC)?,.net,wpf,wcf,architecture,.net,Wpf,Wcf,Architecture,我的处境是,我必须从底层设计并实现一个相当大的系统。我有一些(实际上是很多)关于体系结构的问题,我想听听你们的意见和想法 我不希望我在这里写得太多,但我想让大家了解一下这个系统是什么 有关应用程序的快速信息,如果您愿意,请阅读:我无法分享有关该项目的详细信息,但基本上这是一个我们为客户提供服务以管理其用户的系统。我们有一条用户呼叫的热线,我们的热线使用一个(windows)应用程序(intranet)来管理用户的数据等。客户还有一个web应用程序,他们可以在其中查看报告、有关其业务和用户的信息以

我的处境是,我必须从底层设计并实现一个相当大的系统。我有一些(实际上是很多)关于体系结构的问题,我想听听你们的意见和想法

我不希望我在这里写得太多,但我想让大家了解一下这个系统是什么

有关应用程序的快速信息,如果您愿意,请阅读:我无法分享有关该项目的详细信息,但基本上这是一个我们为客户提供服务以管理其用户的系统。我们有一条用户呼叫的热线,我们的热线使用一个(windows)应用程序(intranet)来管理用户的数据等。客户还有一个web应用程序,他们可以在其中查看报告、有关其业务和用户的信息以及修改其数据的能力。修改数据不仅仅是地址等用户数据,还包括有关用户拥有的产品/服务的信息,这可能很复杂

这些应用程序将构建在Microsoft.NET Framework 4上,并带有MS SQL Server 2008数据库。将有一些应用程序必须访问此数据库,例如:

  • 内部网应用程序(由我们和我们的热线使用)
  • 客户web应用程序类型1
  • 客户web应用程序类型2
  • 客户web应用程序类型(n个不同的应用程序)
现在我最大的问题是,我应该为这样一个系统使用什么.NET部件。对于“后端”,我考虑使用Windows Communication Foundation: WCF会是一个好的选择吗

intranet应用程序将是一个必须编辑数据库中大量记录的应用程序。它必须易于使用键盘导航(使用起来很快)。具有“查找客户、查找那个、查找此、选择此和更新那个”等功能。在中开发此应用程序的最佳选择是什么?是WPF还是好的旧Windows窗体?我不需要WPF中的所有花哨的图形功能,比如3D,但应用程序必须看起来很漂亮(可能像新的VisualStudio/Office工具)

同样的问题也适用于网页。它们有很多相同的工作要做,但没有intranet应用程序那么多的功能,数据量也不一样(更少)

这是我现在的问题。我希望能展开一场讨论,让我对其中一些技术有所了解,帮助我决定采用什么样的体系结构

我想提前向你们表示感谢,并让你们知道,任何想法都将不胜感激


编辑1:似乎很多人都同意我们应该使用WCF。当在数据层引入ORM映射器和使用WCF的服务层时,性能一定会受到影响吗?你对此有何评论?


另一个不断出现的问题是我们如何处理身份验证和角色。intranet应用程序具有“主”访问权限(无限制)。但是,当客户从web应用程序检索有关其用户的信息时,返回的内容取决于他们的“服务级别”以及与客户相关的一些其他参数。处理这个问题的最佳方法是什么?有什么模式/最佳实践吗?

这种设计看起来非常可行

WCF是服务层的一个很好的候选者,很高兴看到一些ORM时代正在发展,您有理由拥有一个基于表单和基于web的UI

WPF的行为(本质上)类似于Windows窗体。然而,如果你正在写新的东西,微软推荐它胜过Win表单

ASP.NETMVC是基于web的东西的一个很好的候选者-页面是无状态的,您可以对页面进行更多的控制


查看个人“WPF VS WinForms”类型的讨论,了解更多详细信息。

如果您的团队还没有WPF方面的经验,我建议您在桌面客户机上使用WinForms,假设您有日程压力(什么项目没有?),WPF非常强大,但它也有陡峭的学习曲线。我一直在将它用于相对较小、可见性较低的项目,它给了我自由,让我真正了解该技术应该如何使用,而不是试图将一些东西拼凑在一起,就好像它只是带有更漂亮控件的WinForms


我对WCF没有太多的经验,但我的理解是,那里也有很多学习曲线。与WPF一样,这取决于您的团队知道什么,以及您可以投入多少时间学习新技术。

您是否考虑过Silverlight+RIA服务?--它是具有丰富用户界面的n层系统的自然选择。您可以将其用于内部网和面向客户端的应用程序。

正如上文提到的Sohnee,我认为您的逻辑体系结构方法非常可靠,我认为WCF是“最佳选择”。我相信你会分享你对演示技术和ORM的看法。我将在服务层上提供几个项目,我在服务层上花了很多时间开发与您非常相似的应用程序:

  • 如果还没有,请开始查看AppFabric。这是微软托管WCF服务的方向,它为您提供了许多好处,例如高速检测和服务管理,而这些都是您现在无法从WCF中获得的
  • 根据您的网络基础设施和业务合作伙伴的网络基础设施,考虑您可以使用哪种类型的协议(以及WCF绑定)。如果您可以使用TCP作为高速传输,只要它能与您的网络配合使用,您的状态就会很好
  • 考虑将MSMQ集成到您的逻辑体系结构中,以提供排队和有保证的交付。Juval Lowy在他的WCF书籍中有一些关于MSMQ集成的优秀资料
  • 现在开始考虑您的服务接口和服务版本控制策略。早期作出的决定