Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在线和离线的处理_C#_Distributed - Fatal编程技术网

C# 在线和离线的处理

C# 在线和离线的处理,c#,distributed,C#,Distributed,我有一个可以调用在线数据库的应用程序。如果我失去与internet的连接或数据库关闭,我的应用程序将崩溃 处理这个问题的方法是什么 我自己的方法是让一个对象一直在调用数据库,如果抛出异常,则会触发一个事件,所有其他组件都会向该事件注册,然后禁用某些函数 这是正确的方法还是有更好的解决方案?我想这取决于功能的重要性。你想做的事与你想做的事相似。因此,可能值得研究它如何处理这样的情况 从内存来看,我认为我听说的大多数应用程序实际上都试图缓存数据。因此,应用程序使用数据库的本地副本,并在可以连接时与联

我有一个可以调用在线数据库的应用程序。如果我失去与internet的连接或数据库关闭,我的应用程序将崩溃

处理这个问题的方法是什么

我自己的方法是让一个对象一直在调用数据库,如果抛出异常,则会触发一个事件,所有其他组件都会向该事件注册,然后禁用某些函数


这是正确的方法还是有更好的解决方案?

我想这取决于功能的重要性。你想做的事与你想做的事相似。因此,可能值得研究它如何处理这样的情况

从内存来看,我认为我听说的大多数应用程序实际上都试图缓存数据。因此,应用程序使用数据库的本地副本,并在可以连接时与联机副本同步

例如,SQL Server Express允许您通过网络将数据库与另一个SQL Server数据库同步


因此,基本上这取决于您的数据,如果您可以拥有一个本地缓存,用户可以从中工作,并且您可以稍后进行同步,那么您就可以使用它了。否则,您所描述的方法听起来应该有效。

我想这取决于功能的重要性。你想做的事与你想做的事相似。因此,可能值得研究它如何处理这样的情况

从内存来看,我认为我听说的大多数应用程序实际上都试图缓存数据。因此,应用程序使用数据库的本地副本,并在可以连接时与联机副本同步

例如,SQL Server Express允许您通过网络将数据库与另一个SQL Server数据库同步


因此,基本上这取决于您的数据,如果您可以拥有一个本地缓存,用户可以从中工作,并且您可以稍后进行同步,那么您就可以使用它了。否则,您描述的方法听起来应该有效。

要检查您是否在网络上,您可以使用.NET的
网络接口
系统.NET.NetworkInformation
命名空间:

bool connected = NetworkInterface.GetIsNetworkAvailable();
至于离线的数据库——当调用该数据库时,你必须处理可能的异常,这样你的应用程序就不会崩溃,而是会向用户返回一条信息性消息——或者进行日志记录,或者在你的场景中有意义的任何事情


Marc

要检查您是否在网络上,您可以使用.NET的
网络接口
System.NET.NetworkInformation
命名空间:

bool connected = NetworkInterface.GetIsNetworkAvailable();
至于离线的数据库——当调用该数据库时,你必须处理可能的异常,这样你的应用程序就不会崩溃,而是会向用户返回一条信息性消息——或者进行日志记录,或者在你的场景中有意义的任何事情


Marc

很难说什么对你最有利,因为你了解全局,但我可以想出三种可能处理这些情况的方法:

1) 在发生连接问题时,妥善处理这些问题,并及时报告
2) 如您所说,如果“ping”失败,请定期轮询连接并禁用功能
3) 使用数据库的本地副本,然后在连接存在时将更新同步到主数据库

依我看,我会选择1)或3)。 选项3提供了最佳的用户体验。 选项1可能涉及最少的开发工作


使用选项2,您会遇到一个问题,即无论您多久进行一次投票,您都可能在任何时候遇到连接问题。

很难说了解全局后什么对您最有利,但我可以想出三种可能解决这些情况的方法:

1) 在发生连接问题时,妥善处理这些问题,并及时报告
2) 如您所说,如果“ping”失败,请定期轮询连接并禁用功能
3) 使用数据库的本地副本,然后在连接存在时将更新同步到主数据库

依我看,我会选择1)或3)。 选项3提供了最佳的用户体验。 选项1可能涉及最少的开发工作


使用选项2,您会遇到这样一个问题:无论您多久进行一次投票,您都可能在任何时候遇到连接问题。

首先,所有答案都是thx!我想我会采用2和3的组合解决方案。我需要能够表明,如果应用程序是在线或不。所有的答案首先thx!我想我会采用2和3的组合解决方案。我需要能够显示应用程序是否在线。