Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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
.net 如何构建脱机数据库_.net_Sql_Sql Server 2008 - Fatal编程技术网

.net 如何构建脱机数据库

.net 如何构建脱机数据库,.net,sql,sql-server-2008,.net,Sql,Sql Server 2008,使用Sql Server 2008、.Net 3.5和C# 我正在设计一个桌面应用程序,它在没有internet连接的情况下以只读状态运行。当连接再次可用时,它将使用webservices更新中央数据库 我可以使用什么技术“下载”适用于每个客户端的一组数据以供脱机使用?正是为这个过程而设计的。它具有同步功能,但请注意,它没有完整的SQL功能(即视图、索引等)。这取决于您的要求、连接类型(是否有线/无线?),是否为便携式笔记本电脑/掌上电脑/台式电脑,通常有几种方法,您希望每隔几分钟监控一次网络连

使用Sql Server 2008、.Net 3.5和C#

我正在设计一个桌面应用程序,它在没有internet连接的情况下以只读状态运行。当连接再次可用时,它将使用webservices更新中央数据库


我可以使用什么技术“下载”适用于每个客户端的一组数据以供脱机使用?

正是为这个过程而设计的。它具有同步功能,但请注意,它没有完整的SQL功能(即视图、索引等)。

这取决于您的要求、连接类型(是否有线/无线?),是否为便携式笔记本电脑/掌上电脑/台式电脑,通常有几种方法,您希望每隔几分钟监控一次网络连接(可配置),当网络连接上有活动时,连接到webservice(同样,防火墙呢?)并从数据库中取出更新。这种对网络的监控可能会有所不同,例如,如果你谈论的是诸如pda之类的便携式设备,那么每隔一段时间就会ping一次Web服务的ip地址(这是确定网络连接的一种常见且最简单的方法)。这会变得更加棘手(在vs的标准控件中没有合适的方法来执行此操作-您可能想查看opennetcf.org以获得activesync的扩展和增强)…在检查网络连接时,请小心不要由于轮询而消耗太多cpu时间。

这不是智能客户端应用程序的目的吗


另一个选项是将所有数据缓存在内置于windows的include中。另一个选项是将SqlLite或类似的嵌入式数据库包含在应用程序中,以便在连接存在时同步。

您可能想看看SqlLite这一开源便携式数据库引擎

以下url上有ado.net版本:

包括引擎在内的所有东西都包含在dll中。非常容易部署

我刚刚开始在一个类似的项目中使用它,到目前为止它似乎工作得很好

它支持各种标准sql功能,如视图、触发器等


Scott

嗯,这取决于您计划提供的离线功能类型,可能会有很大差异。此外,还取决于计划的离线状态有多远。您的离线模式是用户切换到的吗?还是internet连接意外终止的结果?用户能否关闭并打开应用程序在脱机模式下?换句话说,你需要将临时数据存储到硬盘上,还是可以将其保存在内存中?脱机是为了在互联网关闭时使用,因此应用程序可以继续显示数据。我可以将临时数据存储在XML中,随时可以上载。由于他的数据后端是web服务,如果他在他的数据层上有很好的抽象,它仍然可以工作。