【问题标题】:WCF and .net serviceWCF 和 .net 服务
【发布时间】:2013-02-24 05:15:35
【问题描述】:

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

【问题讨论】:

  • WCF Webservices 通常单独托管,然后可以通过添加服务引用(不是 Webservice Rerefence)由 Web 应用程序使用
  • 也许你的服务对WebApi来说足够简单?
  • @JobertEnamno 这是我的要求,您需要在从 .NET 服务获取的 ASP.NET MVC4 应用程序中存储和显示数字并描述架构。网站服务必须使用某种 WCF 绑定与 .NET 服务进行通信。服务方法应接受一个素数并返回下一个更大的素数
  • @JeremyChild ...请阅读要求
  • @ArslanAhson 您可以从控制器调用 ASMX/WCF 服务,也可以创建另一个 WebApi 服务,该服务反过来调用您的 ASMX/WCF 服务。这取决于您是否想以 ajaxly 方式返回结果等。您可以在控制器上创建一个 ActionResult 也从服务返回数据。

标签: .net asp.net-mvc wcf web-services .net-services


【解决方案1】:

解决方案最终取决于 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 控制器,那么您实际上是在围绕您现有的 Web 服务(当然,它受到公众保护并且仅称为服务器端)制作了一个 WebApi 包装器。

或者,您可以将 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

【讨论】:

    猜你喜欢
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    相关资源
    最近更新 更多