データベースに直接アクセスせずにDMZでホストする場合(ファイアウォールによってブロックされたtcpポート1433)、ASP.NET MVC Webアプリケーションの層を設計するにはどうすればよいですか?

ラビMパテル

次のネットワークセキュリティ設定を検討してください。

       Users         Internet
         |        
  ====Firewall==== Port 80, 443 only
         |              
     Web Server      DMZ - ASP.NET MVC + Web API
         |          
  ====Firewall==== Port 80, 443 only
         |         
     "App" Server   WCF or ASP.NET Web API ??
         |           
      Database      Internal network

私は多くのクライアントの施設で上記のネットワーク設定を見てきました。ITインフラストラクチャチームは、DMZのWebサーバーがポート1433を介して内部ネットワークでホストされているSQL Serverへの直接接続を確立することを許可していません。皮肉なことに、web.configがプレーンテキストのDBパスワードを使用してWebサーバー上に横たわっているのを見ました。でOK。

通常、図に示すように、WCFが「App」サーバーでホストされているソリューション(HTTPポートで使用できるため)を見て作業しました。WCFは、WebフロントエンドがDBと対話するための唯一の方法になります。WCFを使用することの「利点」の1つは、ASP.NETMVCフロントエンドから簡単に使用できる強い型のオブジェクトを返すことです。

質問:

  1. WCFが使用されるのは、80または443でのデータ転送が可能であり、強く型付けされたオブジェクトを返すためです。それは良い選択ですか?
  2. 代わりにASP.NETWeb APIを使用する必要がありますか?もしそうなら、複雑なオブジェクトのグラフで強い型付けを実現する方法は?JSON.netと組み込みのシリアライザーで十分ですか?
  3. より良い解決策はありますか?

現在、ASP.NETCoreは使用できませんのでご注意ください。

これは繰り返し発生する問題であるため、WCFを使用するよりも優れた解決策があるかどうか、コミュニティからぜひお聞かせください。

Slicksim

同じ問題のシステムを作成しました。DBアクセスはアプリサーバーに制限されています。

私たちが採用した方法は、AppServerでホストされているMvcフロントエンドとWebApiバックエンドでした。

通常WCFを乗り越える強い型付けを取得するために、Refitと呼ばれるツールを選択しました:https//github.com/paulcbetts/refitこれにより、事前構成されたURLテンプレートを使用したインターフェースを、通常のDIコンテナーを介して挿入できるオブジェクトに変換できるため、非常にテスト可能になり、定型的なHttpClientコードの多くが削除されます。これは、WebApiバックエンドで非常にうまく機能します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ