新しいビジネスWebアプリケーションを作成していて、次のことを実現したいと考えています。
したがって、両方の要件を満たすために、私はバックエンドアプリケーションとフロントエンドアプリケーションでアプリケーションを完全に分離し、REST API(JSON)を使用してそれらの間の通信を整理します)これは健全なアプローチですか?
多くのWebアプリケーションテクノロジーにはビューレイヤーが統合されており、サーバーサイドアプリケーションがビューの生成をある程度制御し、ビューからの応答を部分的に処理するため(たとえば、ビューレイヤーを含むSpringMVC、PHP Yii with view layer、Java JSF/Faceletsは、コンポーネントの状態をサーバーに完全に保存します。)より強力なカップリングを提案し、開発時間の短縮と標準的な道のりを約束する周辺のテクノロジーなので、広く使われていない方法でテクノロジーを使い始めるときは注意が必要です。
私が理解しているように、完全に分離されたSPAフロントエンドは通常、サードパーティのAPIを使用する必要性から生じます。しかしバックエンドとフロントエンドの両方が1つの会社によって開発されている場合、このような分離サウンド設計はありますか?
私が現在選択しているテクノロジーは、Java/Springバックエンドとフロントエンド用のAngular2/Web Components/Polymerです。しかし、この質問は一般的な設計に関するものであり、具体的な技術の選択に関するものではないため、この質問には関係ありません。
バックエンドとフロントエンドのWebアプリケーションを完全に分離して、それらが(JSON)REST APIと通信できるようにすることは、通常の設計ですか?
はい、それは正常です。しかし、そのような分離が必要であり、この設定をアプリケーション全体に強制しない場合にのみ、それは正常です
SPAには、いくつかの問題があります。ここに私の心に浮かんでいるほんのいくつかはここにあります:
もちろん、SPAにもメリットがあります。
つまり、両方のアプローチ(SPAとサーバーページ)には長所と短所があるということです。 時間をかけて両方のオプションを調査し、状況に基づいて選択します。
あなたの質問への答えは簡単です。はい。あなたが提案するのはsoundアプローチです。しかし、あなたが尋ねたいと思うのは、それがbetterアプローチであるかどうかであり、残念ながら、私たちの誰もあなたのためにそれに答えることはできません。関係する要素は多すぎる面に及んでいるため、組織と製品要件の両方についてすべてを明かさないと、本当の結論を出すことができません。とにかく、あなたは何をすべきかをすでに知っていると思います。
警告付きの正常。
フロントエンドのjavascriptフレームワークは、実行できることが制限されています。複数のアプリケーションで使用するために未加工のAPIを作成する場合、通常、その特定のアプリケーションで機能するビューモデルへの未加工のAPI呼び出しをサーバー側で処理する必要があります。
したがって、「通常の」アーキテクチャは次のようになります。
database
business logic services (dll)
api exposing business logic
server side website exposing viewmodels and functionality via json rest endpoints
client side javascript implementing ui
Webアプリケーションが1つしかない場合は、「API公開ビジネスロジック」レイヤーを切り取り、サーバー側のWebコードでビジネスロジックを直接呼び出すだけで済みます。
ビジネスロジックを独自のライブラリに分離したため、UIロジックから切り離されているため、いつでもサービスレイヤーを追加できます。
同様に、apiサービスはサーバー側のコードによって呼び出されるため、http通信に制限はありません。 (これは今ではほとんど普遍的ですが)
さらに、JavaScriptがサービスを提供するホストと同じホストを呼び出すことで、corsをいじくり回す必要がなくなります。