总体设计如下:某些应用程序作为Windows服务安装网络上可能有几个这样的它们中的每一个都向网络公开一些接口(interface)(将其视为“远程控制”或“配置”之类的东西)然后有另一个应用程序充当该接口(interface)的客户端(使用相同的类比——“远程Controller”或“配置工具”)后者的目标是嗅出网络上前者的所有实例,将它们作为列表显示给用户,并允许用户使用公开的界面(即“远程控制”或“配置”它们)为了简单起见,我们假设每个人都在同一个网络中-也就是说,每个人都可以听到彼此的UDP广播。很简单,是吗?在过去,我曾经使用我自己的基于UDP广播的发现机制来构建这种东西。但现
我有一个应用程序一遍又一遍地重用同一个WCFchannel。我通过工厂对象保留静态引用。我想知道这是一个好的做法还是我应该打开x个channel并通过这些channel轮询所有服务调用而不是使用单个channel?如果仅使用1个channel,这些服务调用是否会排队?或者当我使用x个channel时是否会发生同样的情况? 最佳答案 您应该为所有请求使用一个channel工厂,但应该为每个请求构造不同的channel。永远不要重复使用channel。它们的创建成本并不高,而且不是线程安全的。创建成本高昂的是channel工厂。它是线程
当我尝试使用网络服务时,出现以下异常。我的主要问题是这个异常什么时候发生?在服务器或客户端?错误在哪里?服务器是否会因各种错误而抛出此错误?我自己做了一些似乎有效的更改它现在确实有效了。我在服务客户端上删除了using并添加了somcleanup。if(Service!=null&&Service.State!=CommunicationState.Faulted){success=true;Service.Close();}}catch(Exceptionex){msg="Error"+Environment.NewLine+ex.Message+Environment.NewLin
有没有办法在不指定配置名称的情况下使用指定端点地址在C#中创建WCF服务客户端实例?默认情况下,客户端有这些构造函数:publicServiceClient()publicServiceClient(stringendpointConfigurationName)publicServiceClient(stringendpointConfigurationName,stringremoteAddress)显然,由于第一个构造函数,存在默认配置。我想要的是只指定最终构造函数的第二个参数。现在,我正在努力阅读使用ConfigurationManager的配置元素来弄清楚,但这似乎非常麻烦。
我正在使用Microsoft服务配置编辑器来设置诊断(WCF日志记录),但我找不到任何方法来设置最大文件大小?我找到了MaxSizeOfMessageToLog但它对文件大小没有任何作用?编辑1:根据这个:http://msdn.microsoft.com/en-us/library/aa395205.aspxsharedListeners级别应该有一个maxFileSizeKB,但是当在添加标记中点击空格时,我无法键入maxFileSizeKB?编辑2:当添加maxFileSizeKB时,服务将不再启动,而是会出现以下异常:“maxFileSizeKB”不是类型“System.Dia
我是WCF服务的新手,想知道解决以下问题的最佳方法是什么。我有很多客户(约200-约500人),他们在工作日期间都在不断地请求我的服务。大多数请求涉及询问底层数据库以反馈正确的响应。我关心的是传入请求产生的潜在数据库连接数。如果所有客户端同时发出请求,那么数据库服务器将受到重创。如果可能,我想避免与数据库的连接数过多。限制与WCF服务的并发连接数并因此无意中减少可能的数据库连接数会更好吗?我考虑过让服务成为一个单例,它生成线程来执行数据库事务,这样我就可以控制线程的数量,但这是否有点过头了,限制与服务的连接就足够了吗?非常感谢您的任何建议。 最佳答案
在单独的程序集中创建WCF服务然后通过同一解决方案中的Web项目公开其端点的正确方法是什么? 最佳答案 我是这样做的:在类型为类库的新项目中构建您的WCF服务将您的接口(interface)和实现放在这个库中的namespace中,例如MyServiceLib在您的Web项目中添加一个类似MyService.svc的文件只有一条语句,即ServiceHost指令:哪里MyServiceLib是WCF服务的命名空间名称,MyService您的服务实现类的名称。(这个简单的设置适用于将服务部署为编译程序集的情况(例如在Bin目录中)。如
我有契约(Contract):[OperationContract][WebInvoke(Method="GET",ResponseFormat=WebMessageFormat.Xml,UriTemplate="GetCategoriesGET/{userIdArg}",BodyStyle=WebMessageBodyStyle.Bare)]ListGetVideosGET(stringuserIdArg);[WebInvoke(Method="POST",UriTemplate="evals")][OperationContract]voidSubmitVideoPOST(Vide
是否可以在App.config中为WCF设置客户端凭据?我想避免这样做:UsingsvcAsNewMyServiceClientsvc.ClientCredentials.UserName.UserName="login"svc.ClientCredentials.UserName.Password="pw"...EndUsing登录名和密码应该是配置的一部分。 最佳答案 扩展LadislavMrnka的回答,您可能会发现此实现很有用:publicclassUserNameClientCredentials:ClientCreden
我已将Web服务配置为使用Json,如本博客所述:http://www.west-wind.com/weblog/posts/164419.aspx和其他各种博客,但我无法创建客户端来使用此服务。我尝试了各种方法,但总是遇到无意义的异常。实现(我应该添加的WCF)客户端的正确方法是什么? 最佳答案 似乎缺少有关如何为JSONREST服务编写WCF客户端的示例。每个人似乎都使用WCF来实现服务,但很少用于编写客户端。所以这里有一个相当完整的服务示例(实现GET和POST请求)和客户端。服务服务接口(interface)[Service