8

在多用户环境中:如何确保所有客户端都能看到彼此的变化?做这个的最好方式是什么?

过去我创建了一个 C# 应用程序并将其安装在 2 台电脑上。它连接到中央 SQL Express 服务器(客户端应用程序使用 Entity Framework Code First 作为 ORM)。当客户端 1 向数据库添加一条记录时,客户端 2 无法直接看到。仅当 client2 再次获取所有数据(硬刷新)时,更改才可见。

现在我正在寻找一个解决方案来解决这个“同步”(?)可以或应该如何完成。我喜欢首先使用实体​​框架代码,如果有一个解决方案可以保留这一点,那就太好了。此外,该应用程序仍处于非常早期的阶段。我想通过有一个中央数据库和多个客户端连接到它,但我不确定这是否是一个好的解决方案。如果您的建议/解决方案需要客户端连接到的中央服务器应用程序(以及服务器应用程序执行数据库处理的位置),这将没有问题。

如果可能的话,一个基本的示例解决方案或一些显示如何始终使用最新数据的基本代码可能会非常有帮助!

类似的问题:

提前致谢

4

2 回答 2

2

这取决于您的环境、您管理的数据以及您想要的架构。

如果让客户端拥有可以使用的数据副本是可以/可以接受的,那么他们需要在未连接到中央服务器时使用数据,那么您可以使用同步框架。

您将像往常一样拥有中央 SQL Server,并使用同步框架与客户端同步。

您将编写一个“提供者”来决定如何解决不同客户端对相同数据所做的更改等。

您必须将 SQL Express(或者可能是 LocalDB(SQLCE 的新名称))放到客户端机器上。

然后执行您的实体框架模型/代码来访问本地数据库而不是中央数据库。

http://blogs.msdn.com/b/sync/archive/2008/06/24/sample-sql-express-client-synchronization-using-sync-services-for-ado-net.aspx

否则就归结为设计和实现一些“层”并遵循分布式 Internet/数据库架构/SOA。

一个不错的免费资源:

http://msdn.microsoft.com/en-us/library/ff650706.aspx

http://mtechsoa2011.blogspot.co.uk/2011/04/soa-vs-distributed-internet_27.html

一些有用的书:

http://www.amazon.co.uk/Service-Oriented-Architecture-Concepts-Technology-Computing/dp/0131858580/ref=sr_1_1?s=books&ie=UTF8&qid=1343295432&sr=1-1

于 2012-07-25T19:59:59.357 回答
1

其他解决方案是为您的数据库创建一个“接口”,并且来自某个客户端的每个放置数据操作都可以通知其他客户端。您可以通过 WCF 使用它的回调来实现这样的接口。对于整个架构解决方案,我没有简单的代码...如果您提出有关使用 WCF 构建 n 层应用程序的更具体问题,我会尽力提供帮助。

于 2013-10-28T10:05:11.957 回答