1

我有.net 服务。我想在托管在 MVC Web 应用程序中的网站服务中使用它。在 MVC 模式中做到这一点的最佳设计是什么。

4

1 回答 1

0

解决方案最终取决于 1) 时间和 2) 安全性。如果你有足够的时间,你可以投资一个包装器 api,它可以让你设置访问外部 Web 服务方法的安全性。我假设您不想通过 javascript 代码直接访问外部服务。如果您需要诸如“用户刚刚要求记录 XYZ”之类的信息,那么您还可以将审核包装到您的包装 api 中。您可能还想在客户端调用一些 Web 服务方法。

如果它们是简单的调用,我会使用 ajax 来调用服务(通过你的控制器)。如果它们返回较大的结果,那么您可能需要直接在控件中调用 Web 服务并将数据推送到视图模型。

将 Web 服务结果转换为 json 的示例:

public ActionResult MarkEmployeeAsInactive() {
  // Check if user is allowed to make the change to this employee?
  // Check if session is valid if not using OAUTH etc
  var client= new MyWebServiceClient();
  var result = client.SetEmployeeInactive(443);
  return Json(result);
}

public ActionResult GetList() {
  // Check if user is allowed to make the get this list
  // Check if session is valid if not using OAUTH etc
  var client= new MyWebServiceClient();
  var result = client.GetListOfEmployees(23443);
  return Json(result); // Returns json List<Employee>
}

WebApi如果您愿意,您可以将该操作结果转换为控制器,那么您实际上是WebApi在围绕您现有的 Web 服务进行包装(这当然是受公众保护的,并且仅称为服务器端)。

或者,您可以将 IEnumerable 结果从 Web 服务传回视图模型。或者只是T回到视图模型。

public ActionResult Employee()
{
      var client= new MyWebServiceClient();
      var employee = client.GetEmployeeRecord(33445);
      // perhaps employee has a property called FullName?
      // That will map to the model then
      return View(employee); // Passes Employee class to view
}

有关其他信息,请查看这个类似的问题ASP.NET MVC & Web Services

于 2013-02-24T05:48:31.943 回答