外部Webサービスを使用する場合のASP.NET MVCモデル
-
06-07-2019 - |
質問
私は新しいMVCプロジェクトに着手しました。そこでは、いくつかの独特なルールと少し奇妙なものがあり、それは私を困惑させました。具体的には、すべてのデータを含むデータベースにアクセスできますが、外部Webサービスを介して完全に処理する必要があります。理由を聞かないで、理由を理解していません。それだけです。
したがって、CRUDはこのAPIを介して処理されます。すべての呼び出しをまとめるサービスレイヤーの作成を計画していますが、モデルに頭を包むのが困難です...モデルベースのドメインオブジェクト(顧客、注文など)を作成するには私がすべき:
- すべてを手動で作成
- ダミーデータベースを作成してORMを指す
- 既存のデータベースでORMを指定しますが、APIの代わりにORMの永続性を無視します。
これを構築するために必要なすべての情報を手に入れたように感じますが、APIに追いついています。すべてのポインタまたはアドバイスをいただければ幸いです。
解決
データベースモデルが外部サービスによって公開されているものと同じであると仮定しているため、オプション3の規模によってはオプション3が危険です。オプション1と2はお互いにそれほど違いはありません-どちらの場合も、オブジェクト、プロパティ、および振る舞いを決定する必要があります-それは、あなたがクラスでそれを行うのがより快適かどうかに要約されますまたはデータベーステーブル。
重要なことは、外部サービス呼び出しが何らかのラッパーの背後に隠れていることを確認することです。個人的には、その上にリポジトリを配置して、外部サービスラッパーへのクエリを処理し、ドメインオブジェクトを返します。
他のヒント
一般に、ORMはクリーンなドメインモデルクラスを生成する能力については知られていません。 ORMはデータレイヤーの作成で知られていますが、この場合は必要ないようです。
T4などのコード生成ツールを使用して、Webサービスまたはデータベースのいずれかに基づいてドメインモデルクラスで最初のパスをコード生成すると、時間を節約できます。それ以外の場合は、おそらく手動でドメインオブジェクトを作成します。ドメインオブジェクトでコードを最初に生成する場合でも、データベースまたはWebサービスからドメインオブジェクトへのきれいな1-1マッピングが存在する可能性は低いため、コード生成ドメインを手動で編集するのにかなりの時間を費やす必要がありますとにかくクラス。