WebUIプロジェクトとドメインとして機能するクラスlibプロジェクトを持つVS2015ソリューションがあります。クラスlibには、20個以上のEF DBファースト生成クラス(edmxモデル)と、これらのクラスで動作する20個のrepoがあります。基礎となるdbを変更する必要があるとき、私はedmxモデルを投げ捨てて再生成します。これらのクラスの1つはDomain.DbEntities.plc
です。私のwebUIはこのドメインlibを参照しています。 複数のドメインのクラス間の通信が同じ基盤のDBテーブル
は、いくつかの時間後、私はDomain lib
への参照を持ち、メソッドパラメータとして、いくつかの受け入れDomain.DbEntities.plc
またDomain.DbEntities.plc
を使用する一部戻すラッパークラスを有する溶液に余分なプロジェクトPlcCommunicator
を添加しました。私のwebUIプロジェクトは "PlcCommunicator"プロジェクトを参照しており、すべて正常に動作します。
解決策はますます大きくなっており、私はそれを参照してより多くのプロジェクトを追加して同じものを使用しています。Domain lib
しかし、今私はPlcMonitoringLogger
と呼ばれる別のプロジェクトを追加しました。私はもう一つの小さなドメインを作成することにしました。メインドメインのサブセットだけを作成しました。これは、すべてがEF DBでもある5クラスを保持します。Main Domain
と同じdbで生成されたedmxクラス。これらのクラスの1つはPlcMonitoringDomain.DbEntities.plc
です。 (Domain.DbEntities.plc
との違いに注意してください)
今私はPLCCommunicator
プロジェクトを使用する私のPlcMonitoringLogger
プロジェクトが必要です。しかし、PlcCommunicator
はDomain.DbEntities.plc
で、PlcMonitoringLogger
はPlcMonitoringDomain.DbEntities.plc
としか分かりません。だから私は直面している問題があります....私はDomain.DbEntities.plc
オブジェクトの代わりにplc
のIDを受け入れるようにPlcCommunicator
メソッドのパラメータを変更することができますまたDomain.DbEntities.plc
オブジェクトの代わりにplc
のIDを返します。しかし、これは正しいアプローチですか?落とし穴がありますか?長所と短所は何ですか?もう1つの解決策はbase plc class
を作成することですが、これは正しいとは思われません。私はお互いから物事を切り離して、base
クラスを作成するだけで、気分が良くないと思う。
制限付きコンテキストについていくつか読んでいます。しかし、私は既存のプロジェクトをすぐにこのデザインパターンを使用するように変更することはできません。なぜなら私はまだそれに経験がないし、初心者にとっては難しいから最後の場所ではありません。私は境界を越えた文脈からいくつかの側面を使うことへの「ベビー・ステップ」を全面的なリビルドを行わない最良のアプローチと考えています!
誰かがこのトピックまたは何か有用なものについていくつかのアイデアを持っていたら、お答えください!
異なるプロジェクトに入れることでデカップリングが実現できません。インプリメンテーションではなく、抽象化をプログラムすることにより、最高の成果を上げます(IMHO)。 – Maarten