C# 什么技术适用于更大的项目?

C# 什么技术适用于更大的项目?,c#,.net,wcf,architecture,remoting,C#,.net,Wcf,Architecture,Remoting,我正在计划一个更大的项目,所以我正在考虑一些技术选择 该项目将采用三层架构设计。表示层将是ASP.NET,但也可以是其他技术。现在这无关紧要 我的问题是: 对于应用程序服务器,我应该使用windows服务还是仅使用普通应用程序 表示层和域层之间的通信应该使用什么?我想使用.NET远程处理,但我读到远程处理是WCF的一部分。事实上,我对WCF不太熟悉,这就是为什么我要问这个问题。那么.NET远程处理还是WCF 如果有任何提示,我将不胜感激 服务是必由之路;用户无需登录即可运行;他们配备了良好的远程

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

该项目将采用三层架构设计。表示层将是ASP.NET,但也可以是其他技术。现在这无关紧要

我的问题是:

  • 对于应用程序服务器,我应该使用windows服务还是仅使用普通应用程序
  • 表示层和域层之间的通信应该使用什么?我想使用.NET远程处理,但我读到远程处理是WCF的一部分。事实上,我对WCF不太熟悉,这就是为什么我要问这个问题。那么.NET远程处理还是WCF 如果有任何提示,我将不胜感激

  • 服务是必由之路;用户无需登录即可运行;他们配备了良好的远程管理设备;它们也更适合用于健康监测

  • 远程处理可通过WCF使用;WCF聚合了许多不同的通信平台,并为它们提供了易于利用的配置。在我看来,学习WCF将是更好的方式,但是如果你精通远程处理,并且确信它能满足你的所有需求,那么它也应该很好

  • 答复2)

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


    为了提高性能,您可以尝试NetTcpBinding,或者如果希望通过HTTP访问它,可以尝试BasicHttpBinding。更多信息。

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

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


    回想一下我最近参与的一个项目,我们需要同时支持这两个方面,我们将服务托管在与ASP.NET web界面相同的应用程序域中。用户通过web UI进行了大部分交互,当需要更丰富的客户端交互时,启动了一个通过web服务与中间层进行对话的小型客户端应用程序。

    对于应用程序服务器,我想现在Windows服务将是您的最佳选择,尽管它的工作量超过了应有的工作量。如果您现在不必部署,您可能还想看看“”-一个.NET 4.0的附加组件,它将使用管理工具和其他东西来增强WAS(Windows Process Activation Server)。有了这一点,您可能能够以一种很好且非常强大的方式实际托管和管理您的WCF服务

    至于#2——我肯定会推荐WCF——它是分布式系统中通信的首选平台,凭借其可配置性和灵活性,它几乎可以处理任何你想扔给它的任务。从非常快速的机上通信(NetNamedPipeBinding)到通过Windows Azure ServiceBus(一种“云中”的中继服务)处理通信,都是如此强大!WCF不会出错——我认为它可以满足您所有的通信需求。不要浪费时间学习不推荐的技术,如.NET远程处理、ASMX或WSE web服务(本次讨论仅限我的$0.02)


    Marc

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

    此外,无论你现在选择什么技术,都会有一些你没有准备好的重大缺点,因为没有人会想到你会遇到一些问题

    现在不要选择技术。从一些你很了解的小的和可交付的东西开始,然后构建它。在此基础上发展成可管理的小块。经常向你的“客户”展示你所拥有的,并获得反馈


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

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

    • WSE已过时,它已被WCF取代。它是建立在
    • ASMXWeb服务,即
    • 远程处理已被弃用,取而代之的是WCF

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

    实际上,UI和域之间的服务层的性能成本可以忽略不计。对不涉及序列化(对域层的汇编引用)的场景进行性能测试会产生如此低的开销,即使是在复杂的体系结构上,我认为这是不值得考虑的。至少,这是我的经验。