我有.net 服务。我想在托管在 MVC Web 应用程序中的网站服务中使用它。在 MVC 模式中做到这一点的最佳设计是什么。
user1069396
问问题
329 次
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 回答