2014-01-31 66 views
0

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

现在我们计划通过通过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控制器时,它不返回结果。但在检查Web-API如"http://localhost:122/api/Products"时,我收到了回复。

在google看到示例架构的时候,人们在主要的(ASP.NET + BAL + ServiceLayer)解决方案中引入了“服务层”,并不断调用服务层将在内部调用原始(withich与数据库连接) API。这是唯一的方法吗?

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

回答

1

在公开Web API时,最好将它看作是一个备用UI。它恰好是一个非常丑陋的用户界面(可能是JSON或XML)。普通用户不太可用,因为他们不得不手动构建请求等。

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

我不确定这是否与“服务层”相同的概念。这个词对许多不同的人来说意义重大。

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

希望这会有所帮助。

+0

是的,我可以在我的Web-API中添加BAL,DAL的参考。但我的问题是,为什么我不能直接在ASP.NET应用程序中使用来自Web-API(运行在不同端口)的数据。 –

+0

这些调用是由ASP.NET应用程序中的Javascript进行的。还是服务器端? –

+0

@KarthickJ。因为DAL接口太细腻,所以对于HTTP来说它们太嘈杂,并且它们需要对事务的支持。 HTTP只是没有针对这种交互方式进行优化。 –