Architecture 架构考虑

Architecture 架构考虑,architecture,Architecture,我目前正在设计一个web应用程序,并考虑在前端使用python django,在后端使用C#-WCF实体框架。我的核心竞争力是C#,因此选择了后端技术。一、 但是,我不想在前端使用C#,因为我更喜欢django干净的设计和ASP.NET以及动态语言提供的灵活性。我打算为所有数据访问对WCF服务进行REST调用(即,我根本不会使用django模型) 我的问题…: 就可伸缩性而言,这是一个好的体系结构吗?架构是否存在明显的、威胁项目的缺点?简单地使用ASP.NET而忘记REST调用会更好吗 该体系

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

我的问题…:

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

  • 该体系结构还引起了人们对托管的关注,因为很难找到一个同时支持.NET的django主机。将前端托管在谷歌应用程序引擎上,将后端托管在WindowsAzure上是明智之举吗

我们将非常感谢您的回复


谢谢。

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

分离表示层,甚至可能在将来为不同的客户机平台提供不止一个这样的层——这也是合理的,我已经在这些方面看到了成功的系统

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


我不认为选择这种体系结构本质上会阻碍可扩展性——显然,您必须正确选择业务层,谨慎管理状态等,但是我不明白为什么这种选择技术会带来扩展问题。

一般来说,在前端使用python django,并通过网络调用一些核心服务进行数据检索和分析是一种非常正常的架构。在我们公司里,几乎所有的事情都是这样。我们不使用.NET,但我不认为它有多大区别。这种方法是非常可扩展的,因为如果我们的瓶颈是核心——我们在那里添加计算能力,而不涉及前端,反之亦然


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

事实上,找到一个允许这样做的主机可能会限制您的选择

Python/Django、REST等都是不错的选择。从维护成本、可移植到其他(即更便宜的)前端服务器等方面来说,避免使用ASP.NET的前端功能听起来当然不错。通过实施您建议的体系结构,可扩展性实际上应该得到改善


至于谷歌AppEngine,您可以选择AppEngine、Java和谷歌web工具包。一个非常好的web应用程序平台,特别是当您需要丰富的用户体验和可伸缩性时,这是一个严重的问题。在此设置中选择Azure毫无意义,除非您“锁定”使用.NET。

我建议您通过减少使用的技术来简化体系结构

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

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

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