什么技术适合更大的项目?

时间:2009-07-17 20:45:16

标签: c# .net wcf architecture remoting

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

该项目将使用3层架构设计。表示层将是ASP.NET,但它可能是其他一些技术。现在这无关紧要。

我的问题是:

  1. 对于应用程序服务器,我应该使用Windows服务还是只使用普通应用程序?
  2. 我应该如何使用表示层和域层之间的通信?我想使用.NET远程处理,但我读到远程处理是WCF的一部分。实际上我对WCF不太熟悉,这就是我要问的原因。那么.NET Remoting还是WCF?
  3. 我会感激任何提示

6 个答案:

答案 0 :(得分:5)

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

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

马克

答案 1 :(得分:2)

  1. 服务是要走的路;用户无需登录即可运行;它们配备齐全,适合远程管理;它们也更适合监测健康状况

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

答案 2 :(得分:1)

回答2)

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

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

答案 3 :(得分:1)

WCF是唯一用于通信的技术。请注意,即使是Azure一部分的.NET Service Bus也使用WCF。至于其他“选择”:

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

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

如果您提出这类问题,那么您的项目定义中仍有很多您不知道的问题。真的不是问题,因为即使你做了,大部分也可能在你完成之前改变。

此外,您现在选择的任何技术都会有一些您没有做好准备的明显缺点,因为任何人都不会遇到您遇到某些问题。

现在不要选择这项技术。从你熟悉的小东西和可交付成果开始,然后构建它。在小型,可管理的部分中进行开发。经常向“客户”展示您所拥有的内容并获得反馈。

真正的诀窍是以一种允许您在新信息可用时轻松改变方向的方式构建它。这是我建议您花费大部分时间的地方 - 找出如何构建可扩展的体系结构,并创建测试以验证在您前进的过程中一切都继续工作。随着项目的发展,您需要的技术将变得更加清晰。