创建ADO.NET DataService客户端的最佳实践

时间:2010-08-05 08:01:07

标签: c# .net wcf-data-services

我有基于ADO.NET dataservice的Windows窗体应用程序和服务器端服务。 在Windows应用程序中创建和初始化一个静态数据服务客户端并在整个程序中使用它是不好的做法吗?例如,我可以在所有打开的表单中使用它(它绑定到服务的datacontext的对象)来调用SaveChanges()而不是松散跟踪..或者为每个新表单创建一个服务客户端实例更好(因为我想在一段时间之后一个静态客户端会有巨大的内存增长)?但是当我为每个表单创建一个新客户端时,我假设我每次都创建一个新的服务连接..

在客户端应用程序中使用服务可能是错误的,有点困惑。请帮助我理解它正常运作的方式。

2 个答案:

答案 0 :(得分:2)

实际上,DataServiceContext类不会创建与服务的连接。它使用的OData协议基于REST,因此它是无状态的。因此,单独创建上下文甚至不会触及服务。每个操作(查询,保存更改)都会向服务发出单独的独立请求。从服务的角度来看,这只是无关请求的数量。 如上所述,为应用程序的每个“部分”设置单独的上下文通常是个好主意。这究竟取决于您的应用程序。如果您不打算加载/跟踪大量实体(至少1000个),那么一个上下文可能没问题。另一方面,几个上下文使您能够通过简单地删除上下文而不调用SaveChanges来“取消”更新操作,这在某些应用程序中可能很方便。

答案 1 :(得分:0)

我会说:这取决于。 ;)当您直接使用Entity Framework时,您必须熟悉的问题是熟悉的。所以我建议你搜索这些文章并提取他们的观点。

我对EF的经验告诉我,具有多个工作流程的应用程序应该具有每个工作流程的上下文。特别是,当可以同时启动多个工作流程并且用户可以在它们之间切换时。

如果应用程序很简单,那么只使用一个上下文是正确的方法。