0

私は C# で、人々がタスクに費やした時間を追跡できるアプリケーションを作成しています。一人の人が自分の個人的な時間を追跡するために使用できますが、たとえば会社で働くこともできます。たとえば、プロジェクトに費やした時間を追跡したい場合などです。

このプログラムによって保存されるデータは非常に単純です。すべてのタスクとそれに費やされた時間の各「ブロック」 (日付、開始/停止時間、費やされた時間など) のコレクションです。

マルチユーザー機能のために、私の計画は、クライアントが追跡された時間に更新を送信する単一のサーバーを持つことでした。更新は通常かなり離れているため、クライアントに継続的な接続が必要になるとは思いません。

さらに、サーバーとクライアントの両方がデータのコピーを保存するため、どちらかでデータが失われた場合、どちらか一方が他方からコピーを要求できます。Femaref から、これはよくない考えだと言われたので、削除しました。

それで、私の質問は、これにどのようにアプローチすればよいですか?C# クライアント/サーバーのチュートリアルを見たことがありますが、それらは継続的な接続を対象としているようです。

4

1 に答える 1

0

最善の策は、データを個別に追跡することです。最初にユーザーが自分の時間を追跡できるようにし、それをローカルデータベースに保存するだけです( csharp-sqlite などを使用できます)。次に、ユーザーが接続すると、サーバーに保持したいデータが同期されます。

サーバー側を追跡したいデータの場合、アプリにサインインさせてタスクを開始させ、タスクを停止させたときにサインアウトさせます(サーバー側にdb関数をヒットさせます)(あなたが望むのはユーザー データとサーバー データを分けておくことで、何を信頼できるか、どのデータを使用することでどのような影響があるかがわかります ) 。

明らかに、タスクが予想よりも長く続く状況を処理したいと思うでしょう。たとえば、誰かがタスクが完了したと言うのを忘れます (コンピューターがクラッシュしただけのように) (これは、アプリがまだタスクを頻繁に実行していると言うだけでこれを行うことができます)。

人々の入力を信頼することによって引き起こされる問題を回避するために私が見つけた最善の方法は、ローカルの AD や LDAP のようなものに結び付けて、管理制御を許可することです (最終的には、そこから生じる混乱を整理するのはそれらです)。間違った時間を持っている人) それはすべてサーバー側で処理されました。AD または LDAP を使用していない場合は、認証および権限チェーンのために何らかの RSA キー メカニズムを実装することを検討する必要があるかもしれません。

クライアントでサーバー側のプロセスと対話するには、SOAP ( SOAP using C# ) のようなものをお勧めします。そうすれば、あなたのサーバー言語を、あなたの気分を暖かく曖昧にするものに変えることができます.

これは少し広い質問なので、すべてをカバーするのは難しいですが、正しい方向へのいくつかの手がかりが得られるはずです.

于 2013-06-30T00:26:50.770 に答える