C# 创建ADO.NET数据服务客户端的最佳实践

C# 创建ADO.NET数据服务客户端的最佳实践,c#,.net,wcf-data-services,C#,.net,Wcf Data Services,我有基于ADO.NET数据服务的windows窗体应用程序和服务器端服务。 在windows应用程序中创建和初始化一个静态dataservice客户端并在整个程序中使用它是否是一种错误的做法?例如,我可以在所有打开的表单(绑定到服务的datacontext对象)中使用它来调用SaveChanges(),而不是松散跟踪。。或者为每一个新表单创建一个服务客户机实例更好(因为我认为使用一个静态客户机一段时间后,会有巨大的内存增长)?但是,当我为每个表单创建一个新的客户端时,我假设每次都会创建一个到服务

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

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

我会说:这要看情况而定。;)当您直接使用实体框架时,您必须做出的决策很熟悉您的问题。因此,我建议您搜索此类文章并摘录其要点

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


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

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

该应用程序只使用一个工作流。目前只有一个上下文,它运行良好。但是将有许多客户端使用windows应用程序,我不知道届时它的运行情况如何。谢谢您的回答。所以您担心的是服务本身,而不是客户端应用程序。如果我错了,请纠正我。但是我不明白你的帖子。您必须为每个将要启动的客户端应用程序创建至少一个到服务的连接。这是一个无法避免的事实。服务会处理的。但我对WCF数据服务的可伸缩性一无所知。我认为它对于一些小而简单的客户端应用程序来说已经足够好了。我认为你理解我的意思是对的。所以问题是:我应该创建一个连接,还是在一个应用程序中创建多个连接..谢谢!这正是我想要的答案……我将阅读更多关于OData协议的内容,不要在没有准备的情况下问这样的问题。