1

私のチームは、以下の問題のために最適なアーキテクチャを見つけようとしています。私は自分の状況に関する既存の推奨事項を見つけることができるようにしたいと思いますが、検索するのは難しいです。複数のAPIを呼び出すSPAのベストプラクティス?

  • 私たちは、SPA、ASP.NET WebAPIのバックエンド、およびデータベースとアプリケーションを持っています。

  • ファイルとアプリケーションに依存しないメタデータの格納と提供には、別の社内WebAPI Bがあります。 には独自のデータベースがあります。このAPIもチームに属しますが、最終的に他のアプリケーションで使用されることを意図しています。

特異文書メタデータのテーブルを有しています。これらのレコードは、に他のものへのファイルの添付ファイルを表し、指定のアイテムについて、添付ファイルを一覧表示するには

Bに文書レコードのIDが含まれ、フロントエンドは文書レコード、その後の用途を取得しますへの呼び出しの結果は、我々が考えていた


Bからメタデータ(ファイル名、サイズ、など)の残りの部分を取得するにはアップロードから返されたデータをBのメタデータに複製することで、2番目の呼び出しを削除します。

だから、私の質問は以下のとおりです。

  1. データを複製しない何らかの理由はありますか?
  2. 私はこれまでにグーグルで問題を抱えていました。私は専門用語や、必要なものを得るための用語がないように感じます。検索に役立つこの特定のアーキテクチャのトピックの名前はありますか?

おかげ

+0

AとBのバックエンドには異なるデータベースがありますか? – mickaelw

+0

はい、編集します。それらはdevの同じSQLインスタンスになりますが、必ずしも本番環境にあるとは限りません。 –

答えて

1

私は同じようなことをやってを考えています:複数のクライアントのSPAの可能性を持つ複数の自己所有および/またはサードパーティのAPIを呼び出すSPA一般的には、

一部を読み込み、あなたのクライアントのために透明です。

これを行うには、適切な時点で他のAPIのそれぞれにコールを渡す責任を持つプロキシAPIを作成します。

(それはより多くのビジネス層のように、それはだoperations--独自のを行うことができるので、プロキシAPIは、単にプロキシではありません。あなたが望むもの、それを呼び出します。)クライアントがプロキシAPIにのみ話をする

実際のアピスを知ることはできません。

各APIはそのAPIに適用可能なデータの責任を負いますが、必要に応じて他のAPIからデータを取得するためにプロキシAPIに対応することができます。

例:クライアントCは、API A1、A2、およびA3から情報を取得および/または格納する必要があります。プロキシAPIを作成します。CはPにA1とA2の結合データを要求します。 PはA1にデータを要求し、次にA2にデータを要求します。 Pはデータを結合してCに送信します.PがCを結合しない理由は、複数のクライアントが同じ結合データを必要とする可能性があるためです。

絶対に必要でない限り、私はデータの重複を避けるでしょう。キーはテーブルや他のデータストアのオブジェクトに格納できますが、データそのものは格納できません。そうでなければ、apiのいずれかで物事がうまくいかない場合には、汚れたデータにアクセスできます。

プロキシAPIは、必要に応じて、各APIに対する認可/認証を担当することもできます。

このように、各クライアントは同じプロキシAPIと通信でき、クライアントコードは変更する必要はありません。

1

私たちはマイクロサービスの話すことができると思います。

あなたがそれをどのように扱いたいかによって、データの複製が可能です。あなたのデータは常に最新でなければなりませんか?

データの種類の場合は、Aバックエンドにデータを複製できます。例えば:それ以外の場合は、請求書

内の行、あなたがデータをマージし、あなただけの有益な情報にクライアント(フロントエンド)に送信するBバックエンドを呼び出すからバックエンド。

お客様のクライアントは、1つのエンドポイントしか認識していない必要があります。

同じ機能を持つ3つのクライアント(ウェブサイト、モバイルアプリ、タブアプリなど)があると、明日、Bが変更された場合は、フロントエンドコードをどこでも確認する必要があります。

のみBを知っていれば、あなたはに接続を変更、一方。 http://microservices.io/patterns/data/event-sourcing

関連する問題