質問

すべてのgoryの詳細に入ることなく、いくつかのクライアントアプリケーションによって消費されるサービスベースのソリューションを設計しようとしています。このソリューションにより、管理者は、データ入力を実行するために通常のユーザーが使用するドキュメントテンプレートを作成および変更できます。アプリケーションをベストプラクティス、テクニックなどの学習ツールにすることを目的としています。

そして同時に、私は統合失調症の環境を採用しなければなりません。なぜなら、「力」は技術やツールに関する彼らの決定に固執することはできないからです。たとえば、EF4に行く準備ができていないが、Nhibernateに切り替えることについても議論があるため、Linq-to-SQLを使用しています。したがって、変更または/mツールを変更した場合に必要な作業を最小限に抑えるために、コードを可能な限り持続的に無知にする必要があります。

この時点で、私は部分的なクラスアプローチを使用してLINQ-to-SQLクラスを拡張して、ビジネスレイヤーで定義されたインターフェイスを実装することにも制限されています。経営陣はすべての組み込みのツールなどを活用することを主張しているため、Pocosを使用することはできません。したがって、Linq-to-SQLデザイナーをサポートする必要があります。

とはいえ、私のサービスインターフェイスには、署名のテンプレート識別子を受け入れる開始セッション方法があります。操作は次のように流れます:

  1. 現在のユーザーと指定されたテンプレートのデータベースにセッションが既に存在する場合は、レコードを更新して現在のアクティビティを表示します。そうでない場合は、新しいセッションオブジェクトを作成します。
     
  2. セッションはテンプレートのインスタンスに関連付けられており、「フォーム」と呼ばれます。したがって、セッションが新しい場合は、新しい「フォーム」を作成するためにテンプレート情報を取得する必要があります。セッションに関連付けてから、セッションをデータベースに保存します。一方、セッションが既に存在している場合は、ユーザーが入力して以前にセッションに保存されたデータを「フォーム」にロードする必要があります。
     
  3. 最後に、セッション(フォーム定義とデータを使用)が発信者に返されます。
     

私の最初の目的は、アプリケーションの論理レイヤー間にきれいな分離を作成することです。 2つ目は、持続性の無知を維持することです(上記のように)。第三に、すべての依存関係を外部化するためにすべての依存関係を外部化する必要があるように、すべてをテストできる必要があります。私はこの分野で支援するIOCツールとしてUnityを使用しています。

これを達成するために、サービスインターフェイスをサポートするために必要に応じてサービスクラスとデータ契約を定義しました。サービスクラスには、実際に作業を実行するビジネスレイヤーから依存関係が注入されます。そして、ここが私にとって面倒になったところです。

私は、継続的な無知を支援するために、仕事とリポジトリのルートの単位に進ろうとしてきました。 ItemPlaterePositoryとiSessionRepositoryがあり、iUnitofworkの実装からアクセスできます。サービスクラスは、私のSessionManagerクラス(私のBLL)のインスタンスを挿入します。 SessionManagerは、コンストラクターインジェクションを通じてiUnitofworkの実装を受け取り、すべての持続性をUOWに委任しますが、さまざまなロジックでシェルゲームをプレイしています。

上記のすべてのロジックは、SessionManagerクラスまたはおそらくUOW実装にあるべきですか?データアクセスプラットフォームを変更すると、アプリケーションロジックが望ましくない変更が発生する可能性があるため、リポジトリの実装ではできるだけ少ないロジックが必要です。私のリポジトリはインターフェイスに反して機能しているので、新しいセッションの作成に最適に進むにはどうすればよいですか(有効なセッションにはテンプレート、ER、フォームが使用されていることを参照していることに留意してください)。デザイナーをサポートし、リポジトリの実装内のAutomApperなどのツールを使用してオブジェクトの翻訳を処理する必要がある場合でも、PoCOSを使用する方が良いでしょうか?

うーん!

私は分析麻痺にとどまっているだけなので、おそらく少しのナッジだけが必要です。理想的なことは、誰かが私が定義したビジネスの規則と建築的制約を考えると、あなたがどのようにあなたが問題を解決するかを例に提供できるなら、

役に立ちましたか?

解決

Pocosを使用しない場合、実際にはデータストアになりそうにありません。また、POCOSを使用すると、メモリベースのリポジトリでシステムを立ち上げて実行できます。

AutomApperはいい音ですが、私はそれを取引ブレーカーとは考えていません。 POCOSをEF4、LinQTOSQL、NHIBERNATEにマッピングすると、何百ものテーブルがない限り、それほど時間はありません。 Pocosが永続的なレイヤーから分岐し始めるとき/場合、Automapperが本当に請求書に適合しないことがわかります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top