Sync Framework提供一个全面的同步处理平台,可以处理各种应用程序、服务与装置的共同工作和脱机存取。Sync Framework配备各种技术和工具,可启用漫游(Roaming)、数据共享及脱机处理数据。使用Sync Framework,开发人员可以建立同步处理生态系统,透过任何网络上的任何通讯协议,将任何应用程式与任何存放区中的数据整合在一起。基本架构,如图4所示。
如上图所示,我们可以称它为“天使之翼”,因为它是对称的而且数据也来自云端,但其实真正的目的是要提醒设计云端程序的架构师,不要忘了运用数据同步的拓扑(Topology 指的是它的连接方式可以是任何形状,例如中央星状、多支点、或点对点等)。尤其是当网络的通讯速度及质量都不够稳定的时候,此时既能提供协通工作,又能提供脱机快速读写能力,Sync Framework正是发挥功能的时候,设计师们不应该错过。至Sync的程序怎么写呢?非常简洁,可以参考以下示例:
SyncOrchestrator orch = new SyncOrchestrator();
orch.LocalProvider = new FileSyncProvider(guid1,"C:\\temp\floder");
orch.RemoteProvider =
new LiveMeshProvider(guid2, new NetworkCreditial(username,password),
"MyMeshFolder");
orch.Synchronize();
这是典型的运用Sync Framework所提供的档案同步功能(File Provider)进行指定档案同步的例子。在这里我们要同步的是本机端的C:\temp\floder目录与位于Windows Live Mesh端(云端的桌面)上面命名为MyMeshFolder的目录,程序十分简单,也反映了SyncFramework的简洁特性。
首先,建立一个SyncOrchestrator 的对象,它将负责同步的工作处理,也是应用程序的重要接口Orchestrator。接着就是个别创建本地端与云端的提供者(Provider),这里采用Sync Framework所提供的档案提供者,最后一个指令就是启动它的同步工作Orch.Synchronize。由以上可以看出运用提供者的方式可以使的程序变得十分简单,当然一些有关的冲突现象得处理功能,Sync Framework与原有数据库的Replication功能间的差异读者可以参考相关资料,在这里就不在赘述。
我们再扩充一下上面的主从架构下的同步工作图标。如图5所示,显示的是运用同步机制让你的另一个程序也能同步处理相同的数据,这一点也可以广义的运用在云端同时处理多个相同程序的机制。
同步工作的运用可举一个在线游戏的示例,上面的这张图示,它可以运用在一般在线的游戏,詴想你在在线玩一个对打的游戏,图下方的二个相同的Client Ap.应用程序分别代表甲乙二方,他们正在进行对战的游戏,这个时候SYNC服务可以依据双方的按键动作同步提供给二个个别的Client Ap.让他们自行运算并做出个别的反映,这样就能达到二个人看到同样的画面,并且进行同步的互动效果了。至于上方的Service方块,则在于可以提供多于二人的架构模式,让多人同时参与,而数据同步的部分则依靠此Service 进行同步作业。这样的需求到处都有,至于在云端上如何呢?我再针对SQL Azure Data Sync的同步功能做一下描述。
在SQL Azure Data Sync的特性中,两个必要的配置:
? Sync Framework 2.0
? Sync Framework Power Pack for SQL Azure
它提供了几种只有云端特有的功能:
? 一个新的数据库提供者(SQLAzureSyncProvider)。
? 一个独立执行的同步数据库转换功能程序。
? 一个Visual Studio的Plug In脱机作业展示程序。
目的:
? 将公司内部现有的SQL Server连结到SQL Azure。
? 在Windows Azure中新建应用程序时,不需要舍弃现有的公司内部应用程序。
? 脱机使用 Windows Azure 和SQL Azure的应用程序。