0

我正在用 C# 编写一个应用程序,它允许人们跟踪他们在任务上花费的时间。一个人可以使用它来跟踪他们自己的个人时间,但它也可以在例如公司工作 - 例如,如果他们想跟踪在某个项目上花费的时间量。

这个程序存储的数据非常简单——所有任务和每个“块”时间的集合(包括日期、开始/停止时间和花费的时间长度)。

对于多用户功能,我的计划是拥有一个服务器,客户端将更新发送到跟踪时间。我认为客户端不需要持续连接,因为更新通常相距甚远。

此外,由于服务器和客户端都将存储数据的副本,因此如果其中一个数据丢失,它们中的任何一个都可以向另一个请求副本。Femaref 告诉我这是一个糟糕的主意,所以我删除了它。

所以,我的问题是,我应该如何处理这个问题?我看过一些 C# 客户端/服务器教程,但它们似乎是针对连续连接的。

4

1 回答 1

0

最好的办法是单独跟踪数据。首先允许用户跟踪自己的时间,并将其存储在本地数据库中(您可以使用类似 csharp-sqlite 的东西),然后当用户连接时同步您想要保留在服务器上的数据。

对于您想要跟踪服务器端的数据,您只希望应用程序登录并说它开始一个任务,然后在它停止任务时退出(然后让服务器端点击 db 函数)(你想要保持用户数据和服务器数据分开,这样你就知道你可以信任什么,以及使用什么数据有什么影响)。

显然,您会想要处理任务持续时间超过预期的情况。例如,有人忘记说任务已完成(就像计算机只是崩溃了)(您可以通过让您的应用程序经常说它仍在执行一项任务来做到这一点)。

我发现解决由信任人们的输入引起的问题的最佳方法是绑定到本地 AD 或 LDAP 之类的东西并允许管理控制(因为最终它们是解决来自人们有错误的时间)这一切都在服务器端处理。如果您没有 AD 或 LDAP,您可能必须考虑为身份验证和权限链实施某种 RSA 密钥机制。

为了与客户端上的服务器端进程交谈,我建议使用 SOAP(使用 C#的 SOAP )之类的东西。这样,您就可以将您的服务器语言迁移到任何让您感到温暖和模糊的语言。

这是一个有点宽泛的问题,因此很难涵盖所有内容,但它应该为您提供一些正确方向的线索。

于 2013-06-30T00:26:50.770 回答