【问题标题】:What technology for a larger project?什么技术适合更大的项目?
【发布时间】:2010-11-11 20:23:03
【问题描述】:

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

该项目将使用 3 层架构设计。表示层将是 ASP.NET,但也可能是其他一些技术。这暂时无所谓。

我的问题是:

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

我会很感激任何提示

【问题讨论】:

    标签: c# .net wcf architecture remoting


    【解决方案1】:

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

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

    马克

    【讨论】:

      【解决方案2】:
      1. 服务是必经之路;用户无需登录即可运行;他们装备精良,可以进行远程管理;它们也更适合进行健康监测

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

      【讨论】:

        【解决方案3】:

        回答 2)

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

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

        【讨论】:

          【解决方案4】:

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

          没有其他明智的选择,除非由于某种原因,您无法使用 .NET 2.0 或 .NET 1.1。

          【讨论】:

            【解决方案5】:

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

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

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

            【讨论】:

            • 实际上,UI 和域之间的服务层的性能成本可以忽略不计。针对不涉及序列化(对域层的程序集引用)的场景进行性能测试会产生如此低的开销,即使在复杂的架构上也是如此,在我看来,不值得考虑。至少,这是我的经验。
            【解决方案6】:

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

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

            现在不要选择技术。从你理解的小而可交付的东西开始,然后构建它。在此基础上以可管理的小块进行开发。经常向您的“客户”展示您的产品并获得反馈。

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

            【讨论】:

              猜你喜欢
              • 2012-06-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-03-07
              • 1970-01-01
              • 1970-01-01
              • 2011-04-23
              • 1970-01-01
              相关资源
              最近更新 更多