gpt4 book ai didi

wcf - N层架构

转载 作者:行者123 更新时间:2023-12-04 14:33:03 25 4
gpt4 key购买 nike

我处于必须从头开始设计和实现系统的情况。我有一些关于架构的问题,希望得到您的评论和想法。

关于项目的快速信息:它是一个以数据为中心的 Web 应用程序。

该应用程序将构建在带有 MS SQL SERVER 2008 数据库的 Microsoft .NET Framework 4.0 之上。

要求:

  • 丰富的 UI 和强大的
  • 多设备支持(每个浏览器和每个设备)
  • 松散耦合

  • 下面是我构建的架构图:

    enter image description here

    架构简介
  • 表示层:HTML5/ASP.NET MVC + JQuery(第一版支持多设备的Web应用程序)
  • 分布式服务:WCF (XML/JSON/JSONP)
  • 领域层(业务层):所有业务逻辑
  • 数据持久性(DAL 层):Entity Framework 4.0 与数据库优先方法。 POCO 实体是使用 T4 模板生成并分离出来的
  • 基础设施层:包含常用库,如 POCO 实体、异常处理、日志记录等

  • 我的担忧:
  • 由于要构建应用程序松耦合因此,将来如果业务需求增长,可以轻松插入新模块而不会影响架构。
    所以我想到了将存储库模式与 IoC 和 DI 一起使用(可以是 Unity/Ninject/Sprint.NET 或任何其他)
  • 支持 XML 和 JSON 的 WCF
  • 用于放置 IoC 和 DI 的分布式服务层
  • 使用 Enterprise Library 5.0 进行异常处理和记录

  • 寻找有值(value)的意见和建议。
    如果我做错了什么,请让我朝着正确的方向前进。

    最佳答案

    我建议以下评论:从一开始,您的方法就会产生紧密耦合。这直接违背了您的要求#3“松散耦合”

    在您的图表中,您已经定义了两个模块。主模块和模块 2。我猜这两个模块彼此完全不同。我的意思是你可以完全独立地开发它们,然后将它们插入,因为它们解决的业务问题是不同的。

    但是,您当前的架构方法:

  • 将主模块和模块 2 数据耦合到同一个数据库中
  • 将主模块和模块 2 业务对象耦合到同一个业务层
  • 将主模块和模块 2 服务耦合到同一个服务层
  • 耦合主模块和模块2的部署和管理

  • 可能值得考虑的事项:将主模块和模块 2 构建为独立的垂直服务堆栈。

    我的意思是主模块和模块 2 成为主服务和服务 2

    每个服务都有自己的数据库、自己的业务层、自己的服务层和自己的 UI 组件。

    然而,这引起了人们的关注:Main Service 和 Service 2 如何协同工作来创建我的产品?

    为了解决这个问题:
  • 在 UI 端,您可以使用客户端代码将来自主服务和服务 2 的响应加载到一个 View 中,从而将前端拼接在一起。
  • 在后端,您使用发布订阅消息来允许主服务订阅服务 2 中发生的事件,反之亦然。

  • 这将导致在松散耦合的垂直服务堆栈之上从头开始构建应用程序,这些服务堆栈通过异步交换消息来保持一致性。

    如果您随后需要将新模块添加到您的应用程序中,您可以创建一个支持所需功能的新服务堆栈,并将其连接起来,几乎不需要更改其他堆栈(理想情况下,这是更改现有堆​​栈的唯一原因)可能是他们想要订阅来自新模块的事件)。

    在我看来,这是一种与您建议的方法截然不同的方法,但可以让您更好地满足松散耦合的要求。

    关于wcf - N层架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8907543/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com