0

複雑なバックエンドシステムを作成しているとします。システムのどこかに、IQueueインターフェースがあります。あなたはキューのためのいくつかの実装を持つことを計画している:Visual Studioソリューション/プロジェクト組織

  • ナイーブ「インメモリ」クラウドで
  • データベース(キューがデータベースで管理されている)
  • アマゾンSQS(使用してアマゾンSQSサービス)
  • MS /グーグル/その他キューサービス明らかに

、各実装は、それが自分のクラスと実装の必要があります。各実装にはおそらく異なる参照が必要です(データベースには関連するデータベースとの通信が必要ですが、Amazon SQSにはAmazon AWS DLLなどが必要です)

このようなシナリオでは、どのようにソリューションを整理しますか?

  • 別のVisual Studio(したがって、アセンブリ)各実装用:
      インタフェースと素朴な実装を想定し

      は、キューが使用されているプロジェクトで、場所で、私は以下の可能なオプションを参照してください

    • プロ:クリーンなプロジェクト、プロジェクトレベルでの「一元的責任」、特定の実装の更新が容易
    • Con:多くのプロジェクト、管理/展開するアセンブリが多数あり、Visual Studioの速度が遅い
  • すべての「非純粋」実装の単一プロジェクト:
    • Pro/Con:最初のオプションとは正反対です。あなたはそれぞれの実装のための独立したのVisual Studioプロジェクトにリストされた最初のルートを行く私の意見で
+0

さらに多くのアセンブリが定義されています。 – TcKs

+2

あなたが長所/短所をレイアウトしたやり方は意味をなさない。 1つのソリューションで複数のプロジェクトを作成する。問題が解決しました。すべてがきれいできれいで、更新が容易で、単一の責任などに違反しないこと。Visual Studioが遅すぎる場合は、ソリューションエクスプローラで作業していないプロジェクトを右クリックし、[プロジェクトのアンロード]を選択します。これはまさにどのソリューションが*設計されたのかです。 –

+0

@Cody:私は、プロジェクトがこれを対象としていることをよく知っています。しかし、それを考えずに、ますます多くのプロジェクトを「ポップアップ」するのは悪い習慣です。そして、より多くのプロジェクトでVSが遅くなり(実際にはプロジェクトをアンロードすることは解決策ではない)、構築時間は遅くなるという事実から脱却することはできません。あなたが追加する各アセンブリを管理/配備する必要があるという事実をそれに加えてください。 – SaguiItay

答えて

2

は、理由のためにあなたが列挙されている、より良いです。また、バイナリを置き換えなくても、実装を追加できるという利点があります。