博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF服务的REST / SOAP端点
阅读量:2289 次
发布时间:2019-05-09

本文共 4662 字,大约阅读时间需要 15 分钟。

我有一个服务,我想将它作为full服务和服务公开。 以前有人做过这样的事吗?


#1楼

MSDN现在似乎有一篇文章:

介绍:

默认情况下,Windows Communication Foundation(WCF)使端点仅对SOAP客户端可用。 在如何:创建基本WCF Web HTTP服务中,端点可供非SOAP客户端使用。 有时您可能希望以相同的方式提供相同的合同,如Web端点和SOAP端点。 本主题显示了如何执行此操作的示例。


#2楼

您可以在两个不同的端点中公开该服务。 SOAP可以使用支持SOAP的绑定,例如basicHttpBinding,RESTful可以使用webHttpBinding。 我假设您的REST服务将使用JSON,在这种情况下,您需要使用以下行为配置来配置两个端点

您的方案中的端点配置示例如下

所以,该服务将在

将[WebGet]应用于操作合同以使其成为RESTful。 例如

public interface ITestService{   [OperationContract]   [WebGet]   string HelloWorld(string text)}

请注意,如果REST服务不在JSON中,则操作的参数不能包含复杂类型。

回复SOAP和RESTful POX(XML)的帖子

对于普通的旧XML作为返回格式,这是一个既适用于SOAP又适用于XML的示例。

[ServiceContract(Namespace = "http://test")]public interface ITestService{    [OperationContract]    [WebGet(UriTemplate = "accounts/{id}")]    Account[] GetAccount(string id);}

REST Plain Old XML的POX行为

端点

服务将在

REST请求在浏览器中尝试

添加服务引用后SOAP服务的SOAP请求客户端端点配置,

在C#中

TestServiceClient client = new TestServiceClient();client.GetAccount("A123");

另一种方法是公开两个不同的服务合同,每个合同都有特定的配置。 这可能会在代码级别生成一些重复项,但是在一天结束时,您希望使其正常工作。


#3楼

这个帖子已经有一个很好的答案通过“社区维基”,我也建议看里克施特拉尔的网络博客,大约有WCF休息多好职位像 。

我用两者来获得这种MyService服务......然后我可以使用jQuery的REST接口或Java的SOAP。

这是来自我的Web.Config:

这是我的服务类(.svc-codebehind,不需要接口):

///  MyService documentation here ;) [ServiceContract(Name = "MyService", Namespace = "http://myservice/", SessionMode = SessionMode.NotAllowed)]//[ServiceKnownType(typeof (IList
))][ServiceBehavior(Name = "MyService", Namespace = "http://myservice/")]public class MyService{ [OperationContract(Name = "MyResource1")] [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "MyXmlResource/{key}")] public string MyResource1(string key) { return "Test: " + key; } [OperationContract(Name = "MyResource2")] [WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "MyJsonResource/{key}")] public string MyResource2(string key) { return "Test: " + key; }}

实际上我只使用Json或Xml,但这些都是出于演示目的。 这些是获取数据的GET请求。 要插入数据,我会使用带有属性的方法:

[OperationContract(Name = "MyResourceSave")][WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, UriTemplate = "MyJsonResource")]public string MyResourceSave(string thing){    //...

#4楼

如果您只想开发单个Web服务并将其托管在许多不同的端点上(即SOAP + REST,使用XML,JSON,CSV,HTML输出)。 您还应该考虑使用我为此目的构建的 ,您开发的每个服务都可以在开箱即用的SOAP和REST端点上自动使用,而无需任何配置。

示例演示了如何使用just创建一个简单的服务(不需要配置):

public class Hello {    public string Name { get; set; }}public class HelloResponse {    public string Result { get; set; }}public class HelloService : IService{    public object Any(Hello request)    {        return new HelloResponse { Result = "Hello, " + request.Name };    }}

无需其他配置,此服务可立即在REST中使用:

  • 肥皂

它还内置 (当使用具有Accept:text / html的HTTP客户端调用时,例如浏览器),因此您可以更好地可视化服务的输出。

处理不同的REST动词也很简单,这里是一个完整的REST服务CRUD应用程序,在1页的C#中(少于配置WCF所需的);


#5楼

我们必须将行为配置定义到REST端点

还有一项服务

在行为之后,下一步是绑定。 例如,basicHttpBinding到SOAP端点,webHttpBinding到REST

最后,我们必须在服务定义中定义2端点。 注意端点的地址=“”,REST服务在哪里没有必要。

在服务的接口中,我们使用其属性定义操作。

namespace ComposerWcf.Interface{    [ServiceContract]    public interface IComposerService    {        [OperationContract]        [WebInvoke(Method = "GET", UriTemplate = "/autenticationInfo/{app_id}/{access_token}", ResponseFormat = WebMessageFormat.Json,            RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]        Task
autenticationInfo(string app_id, string access_token); }}

加入所有各方,这将是我们的WCF system.serviceModel定义。

要测试两个端点,我们可以使用WCFClientSOAPPostManREST


#6楼

这就是我做的工作。 确保你放

webHttp automaticFormatSelectionEnabled =“true”内部端点行为。

[ServiceContract]public interface ITestService{    [WebGet(BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/product", ResponseFormat = WebMessageFormat.Json)]    string GetData();}public class TestService : ITestService{    public string GetJsonData()    {        return "I am good...";    }}

内部服务模式

终点行为

转载地址:http://fzcnb.baihongyu.com/

你可能感兴趣的文章
CodeForces429B WorkingOut
查看>>
JAVA中的反射机制
查看>>
代理模式(Proxy Pattern),静态代理 VS 动态代理
查看>>
抽象工厂模式-与-工厂方法模式区别
查看>>
java泛型的内部原理、类型擦除以及类型擦除带来的问题
查看>>
云计算领域顶级期刊会议列表
查看>>
java Lint 工具(JDK1.5环境下的 -Xlint:unchecked 的解决方式)
查看>>
max-min fairness 最大最小公平算法
查看>>
Ubuntu安装jdk报错:-bash /usr/.../java:No such file or directroy
查看>>
ubuntu kylin上部署hadoop源码环境
查看>>
动态规划之Work Break
查看>>
动态规划之Minimum Path Sum
查看>>
动态规划之Maximum Subarray
查看>>
局部敏感哈希(LSH)
查看>>
leetcode UglyNumberII
查看>>
leetcode dp之Triangle
查看>>
newInstance()和new的区别
查看>>
leetcode之Maximum Product Subarray
查看>>
数据密集、计算密集、IO密集
查看>>
Java类加载器总结
查看>>