背景:現在、データレイヤー用のADO.netデータベースを使用して.NET WinFormsアプリケーション(C#)に取り組んでいます。
質問:HTTP WebサービスまたはRESTインターフェースを介してデータ層が抽象化されるモデルに簡単に移行できるように、これをどのように開発しますか?
たとえば、ファクトリで標準のC#インターフェイスを使用して、ADO.netを使用するインターフェイスの具体的な実装を取得するのが最適でしょうか。
ありがとう
背景:現在、データレイヤー用のADO.netデータベースを使用して.NET WinFormsアプリケーション(C#)に取り組んでいます。
質問:HTTP WebサービスまたはRESTインターフェースを介してデータ層が抽象化されるモデルに簡単に移行できるように、これをどのように開発しますか?
たとえば、ファクトリで標準のC#インターフェイスを使用して、ADO.netを使用するインターフェイスの具体的な実装を取得するのが最適でしょうか。
ありがとう
実際にやりたいのは、2層アプリケーション(アプリケーション<->データベース)をn層システム(アプリケーション<-> App Server <->データベース)に変更することです。
セキュリティ、ビジネスロジック、その他すべてを考慮する必要があるため、これは複雑な変更です。
1つのアイデアは、 DataAbstractのようなサードパーティのライブラリを使用することです。これは完全なn層フレームワークであり、リモートデータソースへのLINQなどの機能を引き続き可能にし、n層開発を非常に簡単にします。また、任意のソースからアプリケーション層内のビジネスロジックに簡単にアクセスするためのWebサービスインターフェイスも提供します。さらに進んで、iPhone用のクライアントライブラリとWindows Mobileを提供し、レイヤーへのより高速な(バイナリのための)アクセスを可能にします。Webサービスインターフェイスは、DataAbstractが使用できないプラットフォームでのみ必要になります。
RESTインターフェースを使用してDALを抽象化することは決してありません。RESTインターフェースは、「ユーザーエージェント」に直接公開するものです。ビジネスレイヤーがRESTを介してデータを消費することは決してありません。
唯一の例外は、主な目標が生データをリモートのサードパーティに公開することである場合です。
あなたは頭に釘を打ちました-それは抽象化についてです。ビジネスロジックのストレージ固有のセマンティクスから抽象化することから始めましょう。クリーンでオブジェクト指向のDALを開発し、それを介してすべてのCRUD /クエリ操作を実行します。オブジェクトモデル(または、2つの違いを認識したい場合はドメインモデル)で具象クラスを使用できますが、DAL操作を定義する必要があります。インターフェイスで。ファクトリを使用するかどうかは特定のユースケースによって異なりますが、この種の抽象化を念頭に置いて開発する場合は、制御の反転を採用し、依存性注入によってこの種の配線を処理するのが理にかなっています。 から選択することがたくさんあります 。