Web API作为解耦服务层

时间:2013-12-08 03:54:54

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

我正在构建REST API,为移动和我的 SPA 项目提供服务。我想将Web API与我的ASP.NET MVC分开。

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

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

2 个答案:

答案 0 :(得分: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
            }

        }

答案 1 :(得分:0)

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

如果这是正确的并且您想要将它们分离,这就是我接近它的方式。

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

除了可继承对象和接口的定义之外,公共对象库不包含任何代码。该项目将作为Web API和前端MVC项目的参考添加,并且应该足够容易在您的移动开发语言中进行复制。这会将您的所有应用程序放在同一个页面上,这使您的开发任务变得更加容易。

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

如果您需要进一步澄清此技术,请与我们联系。