你怎么管理的应用程序时,该数据库的脱机?
-
09-06-2019 - |
题
采取的一个。净它的应用程序。混合在一个古怪的无线网络连接,轰动一些用户谁喜欢简单拉蓝色插出偶尔和良好的措施,增加一个系统的管理,决定重新启动SQL服务器没有警告现在和再一次只是为了让每个人都对他们的脚趾。
有什么建议和战略,用于处理这种情况下方面:
错误的处理,例如,做你的每一个包裹 呼叫服务器与试图/赶上 或者你依靠某种形式的 一般错误的处理管理 这个?如果是它看起来像什么?
应用程序管理,例如,做你 禁用的应用程序,并不允许用户 与它进行互动,直到一个 连接检测到了吗?你会怎么做?
解决方案
答案取决于应用程序。有的应用程序可以脱机工作-Outlook的例子。这种应用不享连接的例外情况作为关键,他们可以拯救你的工作在当地和同步。另一个应用程序,例如网上游戏将把通信问题作为关键例外,而将退出,如果连接丢失。
作中的错误处理,我认为你应该控制的例外在所有层,而不是依赖于一些一般例外处理的一段代码。你的业务层应该了解发生了什么事在较低层(数据访问层在我们的情况下)并应对相应的.连接失不应被视为 意想不到异常 在我的意见。对于良好做法的例外情况的管理,我建议来看看 例外处理应用程序块.
有关应用程序的行为,你应该回答自己对以下问题:"难道我应用程序具有商业价值的客户中断状态吗?" 在许多情况下它将有利于最终用户能够继续他们的工作中断状态。然而这种行为极难实施。
尤其是为方案微软开发 断服务的代理应用程序块
其他提示
我没有碰过它。净多年的现在,所以我不能给你任何技术细节,但是有大照片的回答:
第一和最重要的是-不要约束形式数据直接向数据库。
创建一个单独的数据/模型层的约束形成的部件。
从那里,你有几个可供你选择取决于该水平的稳定性和可用性,你需要来提供。
大概一个最简单的解决方案,这里将要就启用/停用的部件的应用程序,需要与一个基于数据库的连接状态。
下一个级别的保护,将包括高速缓存这部分的数据模型的当地和在数据库连接下,使用本地缓观看并禁止任何职能,需要明确的数据库连接。
可能是最棘手的事情(也可能提供最稳定的经验最终用户)是复制的数据库本地和使用某种形式的同步模式,以保持你的复制该数据库的同步与远程数据库。
这可能是一点点 太 很多支持的脱机的情况下,但是有你认为的"微软同步框架"?包括在该框架是"同步服务ADO.NET 2.0",它允许您应用于打一个当地SQL服务器CE实例。这可以很容易地与之同步的一个中央SQL服务器通过各种各样的方法。
这个框架内处理永久性的脱机的情况下,以及正如我所说的,它可能不适合特定要求,然而,它会给您的应用程序的固体的离线的支持。
我们已经在我们这 Main()
方法,该方法的陷阱,所有未处理的例外情况...
Application.ThreadException += new
System.Threading.ThreadExceptionEventHandler(UnhandledExceptionCatcher);
Thread.GetDomain().UnhandledException += new
UnhandledExceptionEventHandler(Application_UnhandledException);
然后 Application_UnhandledException
和 UnhandledExceptionCatcher
显示用户友好的消息。
此外,该应用程序,然后电子邮件数据,如栈跟踪开发商可能非常有用的。
它取决于应用程序的课程,但对于这种失败,你描述我想关闭程序下来。
在我们的应用中,我们得到的用户连接到另一个服务器,例如,如果数据库连接失败,一个对话框显示说,服务器可用,他们可以输入另一个IP地址的尝试。