繁体   English   中英

从SOAP到REST

[英]Going from SOAP to REST

我有一堆可为WP7应用程序提供服务的WCF SOAP服务。 现在,我正在编写这些WP7应用程序的Android版本,但是Android中几乎不存在SOAP支持,因此我必须对这些Android应用程序使用REST。

因此,我的计划是在ASP.NET Web API中复制WCF SOAP服务。 我是RESTful服务的新手。

现在,我进入了细节,我认为我会更加欣赏SOAP。

例如,除其他参数外,我的SOAP方法之一还带有一个“ TripLocker_s”对象。 (下面粘贴了SOAP定义)。 如您所见,TripLocker_s对象是一个TripLegModel_s对象数组。 我的各种服务方法都将各种复杂的对象作为参数传递。

当我回顾任何与使用HTTP服务有关的Android教程时,没有比字符串更复杂的了,也许还有整数作为参数被讨论过。 我找不到有关传递复杂对象的任何信息。

如何使用Web API将复杂对象作为参数传递? 例如,是否有办法获取TripLocker_s对象并将其序列化为http parms(然后再次返回到服务器上?)。

谢谢,加里

    [DataContract]
public class TripLegModel_s
{
    [DataMember]
    public string ourDirection;  //SE, SW, SSW, etc.
    [DataMember]
    public double longitude;
    [DataMember]
    public double latitude;
    [DataMember]
    public double altitude;
    [DataMember]
    public DateTimeOffset TimeStamp;
    [DataMember]
    public double speed;
}

[DataContract]
public class TripLocker_s
{
    [DataMember]
    public ObservableCollection<TripLegModel_s> BreadCrums = new ObservableCollection<TripLegModel_s>();

谢谢,

没有理由不能通过RESTful(http)动词(获取,发布,放置等)在RESTful API中将复杂对象作为JSON或XML传递。 JSON与Web(javascript)更友好,并且通常为Web应用选择RESTful /超媒体API。 由于它非常适合网络使用,因此如果您选择将其用于移动android消费,则该API也更适合用于网络,iOS,Win Phone等。Javascript(以及JSON)正成为网络的首选语言。

如果要创建,则将序列化的对象发布到主体中。
有关完整示例,请参见此帖子: 嵌套模型的类似Restful的CRUD操作网址模式

如果您使用的是WCF,请考虑使用webapi,请参见http://www.asp.net/web-api

具体来说,结帐: http : //www.asp.net/web-api/overview/creating-web-apis/creating-a-web-api-that-supports-crud-operations

例如,在webapi CRUD示例中,它与product对象一起使用:

namespace ProductStore.Models
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }
    }
}

最后,请阅读此文章,了解更多关于RESTful的知识(与RPC或SOAP相对) http://blog.steveklabnik.com/posts/2011-07-03-nobody-understands-rest-or-http

RE:“我的计划是在ASP.NET Web API中复制WCF SOAP服务。”

建议:甚至不要考虑 不需要...您应该能够创建基于REST的Web服务。 那就是世界前进的方向……而微软也在与时俱进。 这不应该是一个问题。

并且,请不要挂在“一切都必须成为对象”上。 没有 特别是,如果简单的JSON消息也能正常工作,为什么还要使用一个(可能是不必要的)GSON库来中断Android应用程序呢?

另外,如果您当前不是“ Java Guy”,则可能需要考虑在诸如PhoneGap的高级框架中编码Android内容:

只是一个建议!

1)如果需要,为什么不能使用SOAP? 您有什么具体问题?

2)为什么会有人使用SOAP,如果他们可以使用REST呢?

3)您熟悉JSON吗?

您的Android是网络服务客户端,对吗? Web服务本身在哪里/在哪里?它是使用SOAP,JSON还是“其他”?

请查看有关REST的指导性教程:

这些其他链接可能会有用:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM