2013-12-08 78 views

回答

0

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

如果这是正确的,你想解耦他们,这就是我已经接近它。

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

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

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

让我知道你是否需要进一步澄清这项技术。

1

您可以通过http使用HttpClient类从您的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 
      } 

     }