1

私は.netサービスを持っています。MVC Web アプリケーションでホストされている Web サイト サービスで使用したい。MVC パターンでそれを行うのに最適な設計は何ですか。

4

1 に答える 1

0

解決策は、最終的には 1) 時間と 2) セキュリティに依存します。十分な時間があれば、外部 Web サービス メソッドへのアクセスにセキュリティを設定できるラッパー API に投資できます。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 に答える