2012-04-20 11 views
2

私は卒業論文をやり始めました。私の任命はアパートの暖房を最適化するシステムを作ることです。アパートには現在の温度を測定するセンサーがあります。アプリケーションから最適化アルゴリズムを分離する

これらの温度および他のいくつかの測定値を使用することにより、最適化が行われ、信号が温度を調節するマンションに送り返される。最適化は24時間365日、すべてのアパートを循環する循環的な方法で行われます。

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

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

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

Preliminary architecture

私は可能な限り私は残りの部分から可能な限り最適化アルゴリズムを区切るしたい制約とアーキテクチャにさらにダウン成分のできるだけ多くを再利用したいと思います。つまり、アルゴリズムの異常がシステムの残りの部分(おそらくセンサーインターフェースを除く)に影響してはならない。

私の質問はこうです。どのような方法で最適化部分を実装する必要がありますか? Windowsサービスを作成する必要がありますか、またはそれを自分のスレッドで実行する必要がありますか?

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

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

システムを設計/実装する際には何か特別な点はありますか?

注。この段階で、センサとシステムとの間の通信がどのように実行されるかは明確ではない。

楽しい一日を!

答えて

2

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

あなたのシステムを構築する際に値を重視してください。再利用可能なコンポーネントとアルゴリズムの作成を開始しないでください。後で再利用可能な、または使用可能なものではありませんでした。代わりに、エンドユーザーの問題を解決することから始めます。可能な限り簡単に解決してください。次に、次の問題を解決してください。次に、コードを分析して、再利用可能な部分に抽出できる共通部分があるかどうかを確認します。次に、別の問題を解決することによって繰り返します。

できるだけ小さな問題を解決してください。 10または20の問題を解決したら、何らかの方法でレイヤリングやコンポーネント化を作成したり作成したりできることがわかります。

複数のセンサーを作成してセンサーのインターフェースを作成します。センサーが1つしかない場合は、インターフェイスの外観を推測できます。より多くのセンサーがあれば分かります。

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

センサを自身のプロセス(サービス)に移動すると、オペレーティングシステムは不良メモリへの書き込みなどの問題を処理します。このような問題は、センサーがC#で書かれていると通常は遭遇しません。

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

関連する問題