【问题标题】:Architectural Issue in ASP.Net application with Web API带有 Web API 的 ASP.Net 应用程序中的架构问题
【发布时间】:2023-03-30 22:40:01
【问题描述】:

我们有一个 ASP.Net 应用程序的 3 层架构,它使用 SQL 后端构建并在生产环境中运行了 2 年。

现在我们计划通过 Web-API 公开数据来开始开发该应用程序的第 2 版。因此,我们正忙于为该架构实现创建 POC。

问题是,我们有一个包含 3 个项目(ASP.NET+BAL+DAL)的现有解决方案。因此,我计划用 Web-API 替换 DAL,因为它本身包含与后端数据库交互的模型。 我为 Web-API 创建了一个单独的解决方案。在我的 POC 中,Web-API 在单独的端口(ex:localhost:122) 中运行,而我的 ASP.NET 应用程序在默认端口(ex:localhost:80) 中运行。在我的 ASP.NET 应用程序中,当我调用 Web-API 控制器时,它没有返回结果。但是在检查像 "http://localhost:122/api/Products" 这样的 Web-API 时,我得到了响应。

在看到来自谷歌的示例架构时,人们在主要(ASP.NET+BAL+ServiceLayer)解决方案中引入“服务层”并继续调用该服务层将在内部调用原始(withich 与 DB 连接)Web-API .这是唯一的方法吗?

如果我的假设是错误的,请纠正我。

【问题讨论】:

    标签: asp.net asp.net-mvc api architecture asp.net-web-api


    【解决方案1】:

    在公开 Web API 时,最好将其视为替代 UI。碰巧它是一个非常丑陋的 UI(可能是 JSON 或 XML)。而且对于普通用户来说不是很实用,因为他们必须手动构建请求等。

    3 层架构是为多个前端保留 BAL 和 DAL。 Web API 是一个备用前端。因此,最好在新进程(Web API)中引用 BAL 和 DAL,然后将其公开。

    我不确定这是否与“服务层”相同。这个词对不同的人有很多不同的含义。

    所以,我不会用 Web API 替换 DAL(因为它有模型等)。相反,使用 Web API 模型(或视图模型)来定义备用前端结构并从现有 BAL 服务和实体映射到这些结构。

    希望这会有所帮助。

    【讨论】:

    • 是的,我可以在我的 Web-API 中添加 BAL、DAL 的引用。但我的问题是,为什么我不能直接在我的 ASP.NET 应用程序中使用来自 Web-API(在不同端口上运行)的数据。
    • 这些调用是由 ASP.NET 应用程序中的 Javascript 进行的吗?还是服务器端?
    • @KarthickJ。因为 DAL 接口粒度太细,所以它们对于 HTTP 来说太健谈了,它们需要对事务的支持。 HTTP 只是没有针对这种交互方式进行优化。
    • @DavinTryon - 完全正确!!我正在调用 Ajax 来填充我的 JQGrid。
    • 您可能遇到了 CORS 的问题。
    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 2011-08-06
    • 2016-06-26
    • 2011-11-29
    • 2011-04-13
    • 2012-06-14
    • 2011-03-13
    • 1970-01-01
    相关资源
    最近更新 更多