2016-04-19 26 views
1

私たちは.netアプリケーションを書き換えています。現在のアプリケーションには4つのWindowsサービスがあります。最初のサービスは、UIからの要求を受け入れ、UIをリフレッシュするためのイベントを公開することによってUIを更新します。このサービスは内部的にGUIにサービスするために最大16個のスレッドを持つ2つのThrallプールを使用します。ビジネス処理を必要とするUIからの要求は、ワーカープロセスのWindowsサービス(このようなWindowsサービスは2つあります)に渡されます.MSMQは、サービス間で要求を前後に渡すために使用されます。 4番目のWindowsサービスは負荷分散のように機能し、最初のサービスからの要求を作業者に指示します。すべてのサービスは同じボックスで実行されています複数のサービスまたは複数のスレッドを持つ単一サービス

ここでは、同じアーキテクチャを維持する必要があるかどうかを知りたい場合や、別のスレッドを使用して同じサービスを提供できるかどうかを確認したいと考えています。パフォーマンスの観点からはどちらが良いでしょうか。

答えて

4

今のところ同じボックスで実行していますが、今後複数のボックスに拡大する必要があると思いますか?

複数のサービスを含むアーキテクチャは、スケーラビリティが高く、保守性が高く、柔軟性があります。あなたがしている得る主な利点のいくつかは、

  • あなたのアーキテクチャは、より緩く
  • を結合されているあなたは、あなたが多分いつか(異なる技術 で各サービスを置き換えることができます
  • 別途各サービス/ワークロードを拡張することができますでしょう C++をLinuxで使用してワーカープロセスを実装する場合など)、柔軟性があります。
  • システムに新しい機能を追加する方が簡単です。たとえば、 が追加のログを追加したい場合は、MSMQと開始 あなたの実際のコード

マルチスレッドに触れることなくあなたのメッセージをログに記録することにより減少し、待ち時間にあなたの性能向上のビットを与える可能性がありますが、同じマシン上で両方のシステムを実行している場合は、大きな違いがありません。しかし、負荷が高いために毎回問題が発生し、ビジネス・ロジック・サービスのみを拡張したい場合は、あなたは運がなくなります。ですから、私はいつも懸念や他の利益の分離を与えるマルチサービス(マイクロサービスアーキテクチャのようなもの)に行きます。

こちらがお役に立てば幸いです。

+0

ありがとうTayyab。それは有益だった。 – user6223198

関連する問題