C#客户端 - 服务器时间跟踪器:我应该如何实现网络?

时间:2013-06-29 23:35:37

标签: c# networking client-server

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

此程序存储的数据非常简单 - 所有任务的集合以及花在其上的每个“块”时间(包括日期,开始/停止时间和花费的时间长度)。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

显然,你想要处理任务比预期更长的情况。例如,有人忘记说已经完成了任务(就像计算机崩溃一样)(你可以通过让你的应用程序只是说它仍然经常处理一项任务来实现这一点。)

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

为了与客户端上的服务器端进程通信,我建议像SOAP(SOAP using C#)这样的东西。通过这种方式,您可以将服务器语言移动到令您感觉温暖和模糊的状态。

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