萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1918|回复: 37

[其它] 做.NET的童鞋进

[复制链接]
发表于 2013-2-17 09:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
现在有这样一个问题,要实现2个程序间的数据共享。一个程序是WinForms,另一个WPF。2个程序有各自的数据库,但数据库结构不同。

具体点,在A可以添加客户,及其客户相关数据(B也可以添加数据,但不能从B激活共享状态),A可以运行B。如果从A运行B,这些在A添加的数据与B共享,在B可以对数据继续操作。如果A,B共享数据,则在任何一方对数据的改变都自动改变另一方的数据。

一种方法是把A的数据export到本地,然后B import数据。这不是我想要的解决方案。
另一种是用共享数据库,但必须用timer访问共享数据库,看有没有数据变化?如果只能用timer,那应该也不是一个最优解决方案?

我想的解决方案是用WCF,用publisher/subscriber,每个程序分别是另一个程序的publisher和subscriber。对Webservice不是很熟悉,不知道各位童鞋有什么建议。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2013-2-17 10:31 | 显示全部楼层
本帖最后由 hauke 于 2013-2-17 10:33 编辑

上个UML看看 。。。
你看看这个文章有用吗
http://bbs.csdn.net/topics/310103579
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2013-2-17 11:01 | 显示全部楼层
楼主啊,我问个题外话啊,你做好的.net程序,给客户装的时候,让程序脱离.net运行吗,这样的软件都是有版权的啊,都好贵!
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2013-2-17 11:08 | 显示全部楼层
hauke 发表于 2013-2-17 11:01
楼主啊,我问个题外话啊,你做好的.net程序,给客户装的时候,让程序脱离.net运行吗,这样的软件都是有版权 ...

你购买了vs.net,编译出来软件,是可以商用的吧。 而且如果是免费 express 版本编译出来的,也 可以商用的 吧。。。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2013-2-17 11:10 | 显示全部楼层
keepfeeling 发表于 2013-2-17 11:08
你购买了vs.net,编译出来软件,是可以商用的吧。 而且如果是免费 express 版本编译出来的,也 可以商用的 ...


晕,我说的是让客户机脱离.net,这方面的软件都是要钱的啊 。。。
另外免费 express 版本编译出来的版本不能用于商用!
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2013-2-17 23:38 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2013-2-18 22:23 | 显示全部楼层
本帖最后由 雪候鸟 于 2013-2-18 22:26 编辑

你用什么数据库做共享,不同的数据库实现手法不一样,你可以尝试用数据库本身的锁机制来实现。如果不想用数据库的锁机制,可以考虑用一个表级或者行级的修改计数器或者timestamp来做(看你的控制粒度需求),也就是类似于乐观锁的做法。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2013-2-19 09:35 | 显示全部楼层
本帖最后由 并非如此 于 2013-2-19 09:39 编辑

最佳方案
首先,真要想解决这个问题,应该进行数据库重构,用wcf作为数据的独立存储,和逻辑处理层, 至于你有多少个外部应用(winform,wpf,asp.net...)是无所谓的, 这样才能真正保证数据的完整性和一致性。

次佳方案
如果你的客户,非要保持现有数据库,那么如你所说,利用wcf作为数据操作抽象层实现publisher/subscriber架构, 下面的例子很好的解释了这种模式。
http://www.codeproject.com/Artic ... sher-Subscriber-Mod
如果原来的应用是直接读取数据库的,那么要把他们读取数据库的模块独立出来,放到wcf中,所有的相关应用,用统一的数据库操作接口来操作数据库,你一样能保证数据的完整性和一致性, 前提就是没有其他的操作接口,只有唯一的,统一的操作接口。

最sb的方案,
原来的操作不便变,只把共同操作的部分独立出来,这种方案,相对较快的解决现有问题,但是未来的隐患是无限的,后面的工作会很恶心,很烦人,非常不利于以后的拓展及维护。

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2013-2-19 13:45 | 显示全部楼层
楼上说的很详细,多谢。

看起来要用最sb的解决方案了。公司现在只需要一个临时解决方案,要求保持部分数据一致性。两个应用准备在未来3年合为一个应用,把winforms应用作为一个module用wpf重写并集成在wpf应用。

感谢大家的回复。准备拿出两天看看WCF的文档,扫了下MSDN,内容并不多。另外我想看看是不是p2p是这种情况的合适解决方案。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2013-2-19 13:53 | 显示全部楼层
媛珊娃娃 发表于 2013-2-19 13:45
楼上说的很详细,多谢。

看起来要用最sb的解决方案了。公司现在只需要一个临时解决方案,要求保持部分数 ...

学习了。

我想问楼主,你觉得能有楼上这么样的思路,水平,至少要多少年.Net 经验。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2024-12-25 21:32 , Processed in 0.063654 second(s), 15 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表