【问题标题】:Can Windows Mobile Synch Services use a business layerWindows Mobile 同步服务能否使用业务层
【发布时间】:2010-05-13 08:40:21
【问题描述】:
我们正在构建一个 Win Mobile 6 仓库应用程序,该应用程序需要更新我们基于服务器的公司数据库。
我们的应用服务器上有一个 C# 业务层,我们真的希望我们的仓库应用能够通过它。
我们也喜欢 MS 同步服务。
有没有办法将两者结合起来,即我们可以使用同步服务但让它们通过我们的业务层?有没有人这样做并有一个我可以效仿的例子?这种情况有最佳实践吗?
谢谢,
安迪
【问题讨论】:
标签:
windows-mobile
synchronization
business-logic
【解决方案1】:
通过覆盖应用更改来实现:
服务器端(即 PFS.WarehouseHandheld.SyncServiceLibrary)
1. 在 SyncServiceLibrary 中,创建一个新的 SyncContract 实现。
新的 SyncContract 继承了生成的 SyncService(& 因此实现了 IXXXSyncService WCF 接口。)
-
在这个新实现中,覆盖 ApplyChanges 以拦截推送到服务器的更改,循环遍历传递的参数 dataSet 中详细说明的更改,确定从 dataSet.Tables[i].TableName 更改的表。
从表中的每一行中提取适当的 DTO 并将其推送到适当的 BLL 控制器。
在您库的 app.config 中,插入另一个 system.serviceModel/services/service。这应该与生成的合同实施的原始服务节点相同,但名称不同。
客户端(即CF / windows mobile)
1. 为您的新服务添加一个网络引用(我们的称为 PFSDatastore2CacheWebRefBLL)并按照演练中的指示对其进行破解以删除重复生成的代码。
- 在您的 Sync 调用代码中,引用新的 BLL 驱动服务(即 _webSvcProxy = new PFSDatastore2SyncServiceBLL();)并像以前一样操作。
详情http://handhelddeveloper.wordpress.com/2010/05/18/sync-thru-your-business-layer/