2009-07-17 134 views
0

我正在计划一个更大的项目,所以我正在考虑一些技术选项。更大的项目有哪些技术?

该项目将使用3层架构设计。表示层将是ASP.NET,但它可能是其他一些技术。目前这并不重要。

我的问题是:

  1. 对于我应该使用Windows服务或只是一个正常的应用程序服务器aplication?
  2. 我应该如何使用表示层和域层之间的通信?我想使用.NET远程处理,但我读了远程处理是WCF的一部分。其实我不太熟悉WCF,这就是为什么我问。那么.NET Remoting或WCF?

我会很感激任何提示

回答

5

对于应用程序服务器,现在,我猜Windows服务将是您最好的选择,尽管它的工作量要比应该多。如果您现在不需要部署,您可能还需要查看“Dublin” - .NET 4.0的附加组件,它将使用管理工具和其他东西来增强WAS(Windows进程激活服务器)。有了这个,你可能能够以一种非常好而强大的方式实际托管和管理你的WCF服务。

至于#2 - 我肯定会推荐WCF--它是分布式系统中通信的首选平台,并且具有可配置性和灵活性,它几乎可以处理任何你关心的任务。从非常快的机器上通信(NetNamedPipeBinding)到通过Windows Azure ServiceBus处理通信 - “云中的中继服务” - 它的强大! WCF不会出错 - 我可以说,它可以处理您的所有通信需求。不要浪费时间学习.NET Remoting或ASMX或WSE Web服务等不推荐使用的技术(本次讨论只需0.02美元)。

马克

2
  1. 服务是要走的路;用户无需登录即可运行;他们装备精良的远程管理;它们也更适合被监视健康

  2. 远程处理可以通过WCF使用; WCF聚合了许多不同的通信平台,并为它们提供了易于使用的配置。学习WCF将会是更好的选择,但在我看来,如果你熟练使用Remoting,并且确定它涵盖了你的所有需求,那么它也应该没问题。

1

接听2)

WCF是组合使用单个API不同的通信机制的新的库。选择哪种机制(或WCF中的绑定)取决于你的要求。

为了提高性能,您可以尝试NetTcpBinding,或者如果您希望通过HTTP访问NetTcpBinding,则可以尝试BasicHttpBinding。更多关于WCF from MSDN的信息。

0

实际上,您对表示层的选择很重要。

如果您正在进行客户端安装,那么使用WCF进行域层和客户端之间的通信是有意义的。但是,如果您正在编写purely-ASP.NET UI,那么让Web应用程序调用可能在本地托管的Web服务会产生严重的性能影响(消息传递和序列化/反序列化开销)。

考虑到我最近开发的一个项目,我们需要支持这两个项目,我们在与ASP.NET Web界面相同的应用程序域内托管了服务。用户通过网络用户界面进行了最多的互动,并且当需要更丰富的客户端交互时,通过Web服务与中间层通话的小型客户端应用程序已启动。

+0

实际上,UI和域之间的服务层的性能成本是微不足道的。对于不涉及序列化(汇编引用域层)的场景,性能测试会产生如此低的开销,即使在复杂的体系结构上,在我看来,这也是不值得考虑的。至少,那是我的经历。 – grenade 2009-07-21 14:28:50

0

如果你问这些样的问题,那么还有很多你的项目定义你不知道。真的不是问题,因为即使你做了,反正大部分都可能在你完成之前改变。

此外,无论你现在选择哪种技术,都会有一些你没有做好准备的重大缺陷,因为任何人都不会遇到你会遇到的问题。

现在不要选择这项技术。从你理解得很好的东西开始,然后构建它。在小型可管理件上进行开发。经常展示你的“客户”,并获得反馈。

真正的诀窍在于,它可以让您在新信息可用时轻松更改方向。这是我建议你花大部分时间的地方 - 弄清楚如何构建一个可扩展的体系结构,并创建测试来验证在你前进的过程中所有事情都会继续发挥作用。随着项目的发展,您需要的技术将变得更加清晰。

1

WCF是唯一用于通信的技术。请注意,即使是属于Azure的.NET服务总线也使用WCF。至于其他“选择”:

有没有其他的明智的选择,除非出于某种原因,你使用.NET是滞留2.0或.NET 1.1。