【问题标题】:Architecture Considerations架构注意事项
【发布时间】:2010-11-16 14:30:19
【问题描述】:

我目前正在设计一个 Web 应用程序,我正在考虑在前端使用 python-django,在后端使用 C#-WCF-Entity Framework。我的核心能力是 C#,因此选择了后端技术。但是,我不想在前端使用 C#,因为我更喜欢 django 的简洁设计而不是 ASP.NET 以及动态语言提供的灵活性。我打算对 WCF 服务进行 REST 调用以进行所有数据访问(即我根本不会使用 django 模型)。

我的问题...:

  • 就可扩展性而言,这是一个好的架构吗?架构是否存在明显的、威胁项目的缺点?简单地使用 ASP.NET 并忘记 REST 调用会更好吗?

  • 该体系结构还引起了对托管的担忧,因为很难找到同时支持 .NET 的 django 主机。在 Google App Engine 上托管前端,在 Windows Azure 上托管后端是明智之举吗?

我们将非常感谢您的回复。

谢谢。

【问题讨论】:

    标签: architecture


    【解决方案1】:

    一个强大的业务层,以您最熟悉的语言开发 - 这似乎是个好主意。

    解耦表示层,甚至可能在未来为不同的客户端平台提供不止一个这样的层 - 这也是合理的,我已经看到了那些成功的系统。

    RESTful 服务在易于开发方面确实非常有效。我希望在使用文本数据传输机制(任何风格的 Web 服务)时会有一些性能开销,但是通过精心设计,这通常不是一个不可克服的问题 - 看看许多 Rich UI 浏览器应用程序的性能,它们几乎可以肯定使用带有文本负载的 AJAX 调用。

    我不认为这种架构的选择本质上会阻碍可扩展性 - 显然您必须正确处理业务层、仔细管理状态等,但我不明白为什么这种选择技术会引入扩展问题。

    【讨论】:

      【解决方案2】:

      一般来说,在前端有一个 python-django 并通过网络调用一些核心服务进行数据检索和分析是很正常的架构。我们几乎在我们公司的所有事情上都使用它。我们不使用 .NET,但我认为它不会有太大的不同。这种方法具有很强的可扩展性,因为如果我们的瓶颈是核心——我们在那里增加计算能力,根本不接触前端,反之亦然。

      由于您的所有核心服务都无法从外部访问,因此您可以对收到的数据类型做出非常严格的假设,并将验证的负担放在前端,这非常方便,因为在核心中您具有强类型语言,并且使用动态语言更容易进行数据验证。为了更充分地利用这一优势,我建议您使用一些类型感知协议来进行两部分的通信,例如 SOAP 或 Thrift

      【讨论】:

        【解决方案3】:

        确实,找到允许这样做的主机可能会限制您的选择。

        Python/Django、REST 等都是不错的选择。避免 ASP.NET 的前端内容在维护成本、对其他(即更便宜的)前端服务器的可移植性等方面当然听起来不错。通过实施您建议的架构,可扩展性实际上应该得到提高。

        对于 Google AppEngine,您可以选择 AppEngine、Java 和 Google web toolkit。一个非常好的 Web 应用程序平台,特别是如果您需要丰富的用户体验和可扩展性是一个严重的问题。除非您使用 .NET 被“锁定”,否则在此设置中选择 Azure 根本没有意义。

        【讨论】:

          【解决方案4】:

          我建议通过减少您使用的技术数量来简化架构。

          特别是在前端使用 ASP.net MVC 而不是 python。

          使用 WCF 在前端和后端之间进行通信。使用 SOAP 或 REST 只是一种配置更改。

          当您使用 REST 与后端通信时,您可以选择自己托管或使用 Windows Azure。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-11-06
            • 2012-02-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多