Azure 可以实现 3 层应用程序架构?

Posted

技术标签:

【中文标题】Azure 可以实现 3 层应用程序架构?【英文标题】:3 Tier Application Architecture possible with Azure? 【发布时间】:2012-03-13 17:56:40 【问题描述】:

您好,我被分配了一项任务,将现有的 3 层应用程序(表示层、业务层和数据层)转换为 Windows Azure 项目。

基本上我所做的是创建一个 Web 角色并将表示层放入其中,然后我创建了 2 个单独的类库(分别是业务层和数据层)项目,并使用引用将它们链接到表示层。

但是,当我在 Azure 中部署应用程序时,只上传了 Web 角色(表示层):/

谁能告诉我:

    甚至可以在 azure 中使用 3 层架构 如果我在引用项目时出错了 如果无法实现,是否存在类似 3 层的架构。

谢谢!

【问题讨论】:

【参考方案1】:

关于缺少参考: 您需要为自己添加到项目中的每个引用设置“将本地复制为 true”。这样,所有这些引用都将被打包,并在部署到云时可供您的项目使用。

关于表示层和业务层: - 请记住,如果您在应用程序中具有 Web 和工作角色角色,您将获得两个单独的 VM 运行您的应用程序,您可以交谈的唯一方法是使用内部端点。在 Windows Azure 上运行您的应用程序时,想想为什么需要在两个虚拟机上分开代码(如果需要),因为您肯定可以在 Web 角色中拥有 Web 前端和后台处理代码。工作者角色是没有预配置 IIS 的虚拟机。大多数具有 Web 前端的非 .net 应用程序都使用 Worker 角色作为它们的前端,因此您应该仔细设计您的应用程序,以选择哪些是 Web 角色,哪些是 Worker 角色。

【讨论】:

【参考方案2】:

Azure 可以做到这一点。问题是你是逻辑层还是物理层。如果它们是合乎逻辑的,只需将不同的程序集添加到一个 Web 项目中,这很容易,只需将其安装在 Web 角色中即可。如果它们是物理层,即您的业务层是 WCF 服务,这也是可能的,它可以托管在不同的 Web 或辅助角色中,如果您愿意,甚至可以全部托管在一个 Web 角色中。

【讨论】:

【参考方案3】:

Azure 只不过是 Windows Server 2008 机器的集合。您可以根据需要部署您的解决方案。通常一个 webrole 用于 Web 层(前端),一个工作角色用于逻辑(后端)。您的数据库或数据存储是最后一层。

【讨论】:

所以你的意思是我的表示层必须是一个 Web 角色,我的业务层必须是一个工作者角色,我的数据层(连接到 SQL Azure)必须是另一个工作者角色,然后我通过引用将它们连接在一起? 您可以将它们与 Azure 服务总线/WCF/Azure 队列或您能想到的任何其他通信渠道连接起来。 它根本没有'必须'成为一个单独的工人角色。 Web 角色只是安装了 IIS 的 VM。您可以在一个角色中运行后台进程、Windows 服务……您可以在传统服务器上运行的任何东西。如果您在 Web 项目中引用该数据层,则数据层 DLL 将与站点一起部署。然后,您将连接字符串指向 SQLAzure(或任何 Web 可用的 SQL Server),然后您就可以参加比赛了。 我最初是这样做的,但只部署了 Web 角色,未部署其他引用的类库 @adibon - 您将“角色”与“类库”混淆了。 Windows Azure 只运行 Windows Server VM。您可以选择放入其中的内容。在您的情况下,您建立了一个 Web 应用程序并引用了一些类库。这些类库正在与您的 Web 应用程序一起部署。这就是为什么你只看到一个“角色”。

以上是关于Azure 可以实现 3 层应用程序架构?的主要内容,如果未能解决你的问题,请参考以下文章

5.Azure负载均衡(上)

5.Azure负载均衡(上)

部署基于国际版Azure的SharePoint三层架构服务器场

在 3 层架构中实现业务逻辑

AWS 3 层架构问题

DDD层和清洁架构