2

修士論文を書き始めたばかりです。私の任務は、アパートの暖房を最適化するシステムを作成することです。アパートには、現在の温度を測定するセンサーがあります。

これらの温度とその他の手段を使用して最適化が行われ、信号が温度を調整するアパートに送り返されます。最適化は、すべてのアパートメントをループする循環方式で 24 時間年中無休で行われます。

したがって、システムはセンサーと通信し、最適化を行い、データを記録する必要があります。さらに、現在の電力/水の消費量を確認できるように、webb ベースのユーザー インターフェイスをアパートに提供する必要があります。

システムは C#/.Net で記述されます。

私は大規模なシステムを構築した経験がなく、.Net の経験も限られています。これについての私の最初の考えは、最上位レベルで 2 つのインターフェイスが提供される N 層アーキテクチャを持つことです。ユーザー用の 1 つの Web インターフェイスと、センサー用のある種のインターフェイス (アーキテクチャの下に最適化アルゴリズムがあります)。

予備アーキテクチャ

アーキテクチャのさらに下にあるコンポーネントをできるだけ再利用したいと考えていますが、最適化アルゴリズムを残りの部分からできるだけ分離したいという制限があります。つまり、アルゴリズムのクラッシュは、システムの残りの部分に影響を与えるべきではありません (おそらくセンサー インターフェイスを除く)。

それで、私の質問はです。最適化部分はどのように実装すればよいですか? Windows サービスを作成する必要がありますか、それとも独自のスレッドで実行する必要がありますか?

Windows サービスが適切な選択である場合、階層のさらに下にあるコンポーネントを使用することは可能ですか? つまり、データベース リポジトリ、すべてのオブジェクトなどです。

アーキテクチャの選択は良いですか。そうでない場合、なぜですか?

システムを設計/実装する際に考慮すべき特別なことはありますか?

ノート。この段階では、センサーとシステム間の通信がどのように行われるかは明確ではありません。

良い1日を!

4

1 に答える 1

2

まず第一に、あなたのアプローチについてのいくつかのコメント。できるだけシンプルなシステムを構築することをお勧めします。n層の考え方、サービス、その他の複雑なことは、必要になるまで避けてください。そして、あなたがそれを必要としていることを発見したとき、あなたはそれを作成することができます。

システムを構築するときは、付加価値に焦点を合わせます。再利用可能なコンポーネントとアルゴリズムの作成を開始しないでください(後で、最初に考えたほど再利用可能または使用可能ではなかったことがわかります)。代わりに、エンドユーザーの問題を解決することから始めます。可能な限り簡単な方法でそれを解決します。次に、次の問題を解決します。次に、コードを分析して、再利用可能な部分に抽出できる一般的な部分を見つけることができるかどうかを確認します。次に、別の問題を解決して繰り返します。

毎回可能な限り小さな問題を解決するようにしてください。10個または20個の問題を解決すると、何らかの方法で何らかのレイヤー化またはコンポーネント化を作成したか、作成できることがわかります。

複数のセンサーを作成して、センサーのインターフェースを作成します。センサーが1つしかない場合は、インターフェースがどのように見えるかを推測することしかできません。より多くのセンサーであなたは知っているでしょう。

堅牢性(センサーを呼び出すときにクラッシュしない)に関しては、必要な堅牢性によって異なります。センサーでメソッドを呼び出し、同じプロセスでセンサーコードを実行する場合のキャッチオールは、ほとんどの問題をキャッチし、最も簡単な解決策になります。私は間違いなくこれから始めます。必要がない限り(たとえば、レスポンシブUIを作成するなど)、別のスレッドで実行することもありません。

センサーを独自のプロセス(サービス)に移動すると、オペレーティングシステムは、不良メモリへの書き込みなどの問題を処理できるようになります。ただし、センサーがC#で記述されている場合は、通常は発生しないこのような問題。

センサーコードをサービスに配置することを選択した場合でも、コードを再利用することは可能です。両方のプロセスがアクセスできるアセンブリに共通のコードを配置するだけです。

于 2012-04-20T10:53:08.473 に答える