分享
 
 
 

向断开的.NET应用配置数据的方法

王朝c#·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

在开发.NET体系时,最常见的一个问题就是如何在分布式应用程序中本地保存数据。这类问题通常集中于用本地存储机制来使用数据集以及下载和同步机制的Web服务。我建议工程师避免考虑这些工具,除非访问的数据绝大部分是只读的。相反,我们应该首先考虑被实践证实为更可靠的拷贝和同步机制。让我们仔细看看几种可供选择的本地存储机制和同步功能。

本地数据存储的两种选择

对那些需要下载数据、需要对下载数据进行高速处理并可能返回结果的应用程序,使用数据集的方法是最理想的。数据集答应在有限的过滤和保存性能下进行对复杂数据结构进行高速的、内存中的(in-memory)访问,其性能与把数据以文件的形式保存到本地文件系统的性能一样好。然而,假如应用程序需要更强大的离线数据操作,那么你需要求助于更强有力的本地数据库机制。

微软公司提供了作为轻量级本地数据库引擎的两种不同版本的SQL 2000。在Windows CE设备的环境下,你可以使用SQL Server CE 2.0(SQLCE)。SQLCE是SQL Server 2000的重写版,它着重考虑到了Windows CE环境下的有限内存和处理器速度的限制。

膝上型、tablet或者远端桌上型电脑可以利用MSDE。MSDE实际上使用了真正的SQL Server 2000引擎代码,但是不答应同时有超过一定数量(目前为五个)的连接。此外,在MSDE中,SQL Server 2000所提供的绝大多数的拷贝函数和所有的Analysis Services功能就被移去,这样MSDE可以在桌上型电脑上更加有效的运行。微软公司开始在它的某些新产品上使用MSDE,这些新产品包括新的CRM应用程序,它用来作为CRM数据的离线存储器(offline store)。

上面所提到的两种本地数据存储器有两个共同的特点,这两个特点使得它们成为离线数据访问的理想选择。第一个特点是它们支持.NET框架。SQLServerCE名字空间包括所有的操作SQLCE所必须的类,而标准SQLClient名字空间答应一个Windows CE应用程序来治理远端的SQL Server数据库。Windows应用程序还可以用SQLClient来治理MSDE的本地拷贝或者远端的SQL Server数据库。第二个特点是这两种数据存储器可以作为远端SQL Server发行的订户(subscribers),这就答应它们参与拷贝合并(merge-replication)。

远端数据存储

SQL Server 2000与它对应的本地版本协作来提供强壮的拷贝和同步机制。SQL Server 2000支持由一个本地引擎处理的两种不同的治理数据的机制。

--------------------------------------------------------------------------------

不是SQL Server?

假如你正在使用其它数据库,或者你处理其它系统的数据,那么一个选择就是把你的数据移到一个中间SQL Server,然后使用标准的同步机制来从中配置数据。假如你的数据库提供商没有本地数据库引擎的话,这样做的好处就是避免你自己编写同步机制了。

--------------------------------------------------------------------------------

第一个机制是SQL Server的拷贝合并(Merge Replication)功能。使用拷贝合并功能后,无论是客户端还是服务器段都可以跟踪数据的改变,在同步期间,只有改变的数据才需要在客户端和服务器端之间传递。由于服务器端跟踪了所有的改变,它可以要求更多的服务器硬件和连接来有效工作。拷贝合并的功能只有SQL Server 2000才提供。

SQL Server的拷贝合并引擎在治理离线数据时是非常有效的。它答应垂直和水平数据分割以及动态水平过滤以减少前后传输的数据集的大小。它可以自动创建自定范围的标示栏(auto-ranged identity column)这样多个订户(subscribers)就可以在创建同步期间自动分析的独有的标示栏。而且它使用了标准或者自定义冲突解决规则,这就降低了开发者使用它的难度,确保了数据在同步期间的完整性。

第二个机制是远端数据访问(Remote Data Access,RDA)机制。在所有的数据变化均有客户端产生的情况下,使用RDA机制是最理想的。假如数据在服务器端发生改变,RDA没有自动同步机制,客户端需要自己检查出这些变化。RDA可以与SQL Server 2000或者SQL Server 7.0协同工作。在使用RDA的场合下,你的本地应用程序需要与服务器相连,下载表格到本地设备上作为SQL Server的拷贝,然后断开连接。离线后,本地SQL Server存储器(如SQLCE或者MSDE)有跟踪数据变化的能力。当本地应用程序重新去服务器相连时,这些变化就返回给服务器。RDA很轻易建立,其性能也不错,这是因为服务器无需要求跟踪数据的变化。

决定使用哪种拷贝机制

选择使用拷贝合并机制还是RDA机制并不互相矛盾。例如,在离线定购的系统中,你可以选择用拷贝合并机制来更新对话框,但是本地传输处理却又使用RDA。无论哪种情况,你都需要确保对授权限制的理解。你还必须确保每个分享拷贝的客户都有客户访问授权(Client Access License),你也可以购买CPU授权(它当作拷贝中心)。尽管即使是最具竞争性的本地引擎技术也要收取per-device费用,好在只要你获得了SQL Server桌面电脑版的授权,那么无论你配置了多少个客户,都无需再为本地SQL引擎缴纳授权费用了。你可以把节省下来的钱用于为客户提供更好的解决方案上。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有