2008-08-25 60 views
-1

假设我有一个需要持久连接到服务器的应用程序。如何实现连接/重新连接逻辑,以便我不浪费资源(功率/带宽),并在连接出现/改善时快速重新连接时间?如果我只使用连接通知,则可能会遇到与本地网络无关的问题。通过连接通知重新连接逻辑

奖励如果你能告诉我C#版本。

回答

1

这是一个非常“巨大”的问题。我可以说我们使用O/R映射器,并且每个对数据库的“查询”都需要一个名为PersistenceBroker的对象。此类负责所有与连接,身份验证等相关的数据库工作。

我们编写了一个PersistenceBrokerFactory.GetCurrentBroker(),它返回“工作”代理。如果数据库突然失败(无论出于何种原因),CONN对象将在30secs(或您定义的任何内容)之后“timeout()”。如果发生这种情况,我们会向用户显示他/她已脱机并显示重新连接按钮。

另一方面,为了提供用户连接的可视指示,我们有一个线程在后台运行,每隔15秒检查一次Internet连接。我们做1 ping到google.com。 ;)如果失败了,我们认为互联网不知何故中断,我们更新状态栏。

如果您愿意,我可以向您显示网络健康状况监视器的所有代码。我从谷歌和其他一些我自己做了一些:)