我是RESTful网络服务的新手。我们正在采用REST路线来构建我们的公共(public)Web服务,供我们的客户使用。我有几个问题。纯REST网络服务是否有任何限制?如果是,那么混合RESTWeb服务会解决这些限制吗?我正在考虑在授权header中使用SSL+哈希消息身份验证代码(HMAC)以确保安全性以及基于IP的过滤。大家怎么看呢?有没有好的客户端测试工具?目前我正在使用以下http://code.google.com/p/rest-client/那么某种客户端代码生成工具呢?以下链接是我的信息来源。http://msdn.microsoft.com/en-us/library/
显然Close和Dispose实际上是一样的。我希望能够关闭和打开我的ServiceHost实例,而不必每次都重新实例化它。有任何想法吗?谢谢。 最佳答案 ServiceHost.Close实际上与Dispose()相同。一般来说,对于所有具有Close()方法的类型都是如此-Dispose()是根据Close()实现的.仅供引用-ServiceHostBase通过以下方式显式实现Dispose():voidIDisposable.Dispose(){base.Close();}这实际上意味着当您关闭ServiceHost时,您将始
我有一个要针对WCFGET服务运行的AJAX调用。基本上,对服务的调用(通过jquery)如下所示:$.get(serviceEndpoint,{query:"somesearchtext",statusTypes:[1,2]},function(result){/*dosomething*/},'text');当此调用运行时,我看到firebug中的GET正确通过,并且我确实到达了端点。但是,参数statusTypes始终为null。jquery中的GET本身看起来像是经过编码的,但是当我不对括号进行编码时,调用根本不会进入端点:http://localhost/Services/S
我有一个简单的WCFREST方法,它将返回字节数组中的图像/文件/等:[OperationContract][WebGet(UriTemplate="TestMethod")]byte[]TestMethod();服务契约绑定(bind)到具有以下行为的webHttpBinding:该方法工作正常,除了字节数组的格式如下:[25,15,23,64,6,5,2,33,12,124,221,42,15,64,142,78,3,23]如果我删除属性defaultOutgoingResponseFormat="Json",该服务默认为XML格式,并且结果在Base64中编码如下:GQ8XQAY
我有一个WCF服务契约(Contract),它基本上是发布订阅者模式。WCF服务托管在我要从中发布的Windows服务中。客户端订阅消息,当Windows服务执行某些操作时它会发布给所有客户端。为了托管服务,我声明了一个ServiceHost类,并且Contract类有一个方法,该方法未在接口(interface)中标记但在要发布的类中实现。我希望能够在本地调用此方法(不通过WCF),然后通过回调发布消息。我似乎无法从ServiceHost获取Contract类的实例。这可能吗?如果可能的话怎么办?我知道解决方法是在服务中也内置一个客户端,但创建一个连接到自身的客户端似乎有点奇怪。提前
我有一个包含大约10个只读配置项目的解决方案。它们是Web应用程序、Windows服务、控制台应用程序等。除一个项目外,所有项目都在同一台服务器上。每个项目都有3个环境-开发、测试和生产。所以有30组不同的配置,每组都有相当数量的设置。在每个应用程序和环境中保持配置一致很麻烦。我注意到大多数配置在每个项目中都是通用的,所以我认为以某种方式集中配置会很好。我在某处读到WCF服务可能是一个好方法。我认为也许包含硬编码静态类的库实际上可以正常工作——尽管必须编译以更改配置。理想情况下,配置应该来自实际的.config文件。您将如何为多个项目集中配置? 最佳答案
创建JSON网络服务的最佳方式是什么?我们有另一个使用Java的团队,他们坚持使用JSON完成所有通信。我宁愿使用WCF而不是任何第3方框架。我找到了这个博客:http://www.west-wind.com/weblog/posts/164419.aspx,它表明Microsoft的实现存在M$特定废话的缺陷。 最佳答案 如果您使用WCF和3.5框架,那就再简单不过了。当您使用WebGet属性标记OperationContracts时,只需将ResponseFormat参数设置为WebMessageFormat.Json。当以RE
我定义了以下DataContract实现了IDisposable:[DataContract]publicclassRegularFileMetadata:FileMetadataBase,IDisposable{bool_Disposed=false;//notethis!//...protectedvirtualvoidDispose(booldisposing){if(!_Disposed){//..._Disposed=true;//notethistoo!}}publicvoidDispose(){Dispose(true);GC.SuppressFinalize(this)
我有一个Windows服务,它获取一堆文件的名称并对它们进行操作(压缩/解压缩、更新数据库等)。这些操作可能需要一些时间,具体取决于发送到服务的文件的大小和数量。(1)向该服务发送请求的模块等待文件处理完毕。我想知道是否有一种方法可以在服务中提供回调,在完成文件处理后通知调用模块。请注意,多个模块可以一次调用该服务来处理文件,因此我猜该服务将需要提供某种类型的TaskId。(2)如果一个服务方法被调用并正在运行,并且对同一个服务进行了另一个调用,那么将如何处理该调用(我认为只有一个线程与该服务相关联)。我已经看到,当服务在处理方法时花费时间时,与服务关联的线程开始增加。
总体设计如下:某些应用程序作为Windows服务安装网络上可能有几个这样的它们中的每一个都向网络公开一些接口(interface)(将其视为“远程控制”或“配置”之类的东西)然后有另一个应用程序充当该接口(interface)的客户端(使用相同的类比——“远程Controller”或“配置工具”)后者的目标是嗅出网络上前者的所有实例,将它们作为列表显示给用户,并允许用户使用公开的界面(即“远程控制”或“配置”它们)为了简单起见,我们假设每个人都在同一个网络中-也就是说,每个人都可以听到彼此的UDP广播。很简单,是吗?在过去,我曾经使用我自己的基于UDP广播的发现机制来构建这种东西。但现