【问题标题】:Web API as decoupled service layerWeb API 作为解耦的服务层
【发布时间】:2013-12-08 03:54:53
【问题描述】:

我正在构建一个 REST API 来为 Mobile 和我的 SPA 项目提供服务。我想将Web API 与我的ASP.NET MVC 分离。

我应该如何从我的前端ASP.NET MVC 使用我的Web API

我看到了这篇文章,但没有例子Where does Web API fit in a typical n-tier architecture?

【问题讨论】:

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


    【解决方案1】:

    您可以使用 HttpClient 类通过 http 从您的 MVC 应用程序中使用您的 Web API 方法。像这样:

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost/");
    
                string actionString = string.Format("api/GetSomething/{0}?count={1}", "someId", 5);
                HttpResponseMessage response = client.GetAsync(actionString).Result;
    
                if (response.IsSuccessStatusCode)
                {
                    // do something
                }
    
            }
    

    【讨论】:

      【解决方案2】:

      我猜你的前端 MVC 和 Web API 在同一个项目中,可能共享相同的模型对象,这是正确的吗?

      如果这是正确的并且您想将它们解耦,这就是我的处理方式。

      首先,创建 3 个单独的项目。一个将包含您的前端,第二个,您的 Web API,可能还有数据访问逻辑(如果您愿意,这甚至可以是另一个仅由 Web API 调用的数据访问层项目),最后,一个公共对象定义库。

      通用对象库不包含任何超出可继承对象和接口定义的代码。该项目将作为对 Web API 和前端 MVC 项目的引用添加,并且应该很容易在您的移动开发语言中复制。这会将您的所有应用按对象放在同一页面上,从而使您的开发任务更加轻松。

      其次,我创建了 MVC 前端用来调用 Web API 的 ApiGateway 类。此类使用反射将 API 调用的结果加载到我的定义库中的对象中。此时还可以介绍一些常见的服务器端缓存和错误处理。

      如果您需要进一步说明这项技术,请告诉我。

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 1970-01-01
        • 2014-02-13
        • 2015-07-21
        • 2013-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多