0

これがスタックオーバーフローの質問かどうかはわかりませんが、ここに行きます...

次の 2 つのサイトがあるとします。

  • サイト A は、同じサイトの NoSQL データベースと一連の Web アプリケーションを使用する、パブリックにアクセス可能な Web API をホストしています。
  • サイト B は、SQL Server (サイト A の NoSQL データベースと同じデータではありません) とその他の Web アプリケーションをホストします。

問題は、サイト A の Web API がサイト B の SQL Server にアクセスして、その機能の一部を利用する必要があることです。SQL Server の IP を公開してストアド プロシージャの呼び出しを行うことはできますが、サイト B でホストされ、サイト A からの SQL 呼び出しをプロキシする汎用 Web API を作成することは可能でしょうか? SQL Server の IP を公開したくありませんよね?

Web API で呼び出したいストアド プロシージャごとにメソッドを作成すれば可能ですが、それを避けて汎用プロキシを使用することはできないのでしょうか?

間違った方向に進んでいる場合はお知らせください...

4

2 に答える 2

1

あなたが説明しているのは、Web APIを介したSQLサーバーのトンネルのようです。私はそれを奨励しません。

2 つのシステムを SQL Server データベースと NoSQL データベースとして見るのではなく、サービスを見て、それらをドメイン エンティティに抽象化します。

2 つのシステムがデータを交換する必要がある場合は、これらのエンティティの形式になります。私がそう感じる理由:

  1. システムを分離したままにしておくと、スキーマの変更は下流のシステムに影響を与える必要はありません。
  2. 1 つのシステムの内部を柔軟にカプセル化できるため、コントラクト駆動型のコンシューマを設計できます。

編集:

私はこれを思いとどまらせるので

  1. これは複雑な設定になる傾向があり、サイト A は所有または管理していない生データを扱うようになりました。SQL サーバーが B によって要求された変更を必要とする状況に簡単に陥り、これにより A が非常に脆弱になります (物事は非常に簡単に壊れます)。
  2. A に関連しないビジネス変更/ロジックは、B によって行われた DDL などの変更を介して忍び寄る可能性があります。

A と B を非常に疎結合にすることをお勧めします。データの所有権を定義すると、他のコンシューマーはコントラクトを介して通信する必要があります。

于 2013-08-14T12:09:11.767 に答える