新手问题 Rails 如何解决类似 .NET 搭建的 WebService 应用,如何为其他端程序 (Android) 提供统一的 API 接口?

pinewong · April 29, 2016 · Last by alvin2ye replied at May 01, 2016 · 2811 hits

事情是这样的,学校工程实训的课程是“SOA 和 WebService”,教学用的是 c#,我现在想用 rails 做出一些类似的东西。

通过搜索,看到论坛三年前的一篇帖子:https://ruby-china.org/topics/4671

感觉都是泪啊,三年前你们就不用的东西,我们现在正在教!

现在说说具体问题: 我现在有个网站和一个 Android 程序,现在要用 Rails 再开发一个类似课程里的 WebService 的东西,然后用我的网站和 Android 程序通过一个 uri 调用完成一些数据存取简单操作,如果现在 Rails 不用 WebService 实现,那该怎么实现?上述帖子里看到管理员回答的将 Rails 应用设计成 RESTful 的方式提供 WebServices,我不是能太理解,有没有师兄师姐解释清点的,或者告诉我下哪里有简单的例子,谢谢大家!

WebServices 只是一个大的概念,表示通过 Web 的方式对外提供服务。SOAP 或者 REST 都是具体实现的协议或者风格。2002 年的时候,当时的 Web Service 特指基于 SOAP 协议的架构风格,这个概念是当时的 W3C Web Service 工作组定义的;但是时过境迁,到了 2004 年,W3C 扩展了这个定义,认为 Web Service 可以分为两类,其中一类是以 REST 风格为代表,另一类则很宽泛,没有特别明确限制,只要是:

Arbitrary Web services, in which the service may expose an arbitrary set of operations

关于 Web Service,可以阅读维基百科的词条: Web service

如果你的安卓应用是全新的,那就直接按照 Rails 的规范开发就是正确方向了!

#1 楼 @martin91 谢谢解答!这是说用 Rails 做多个程序的共用部分,也是按正常开发就行吗?

#2 楼 @pinewong 多个程序的共用部分?你不是只是为了服务器给移动客户端提供服务吗?

这坟挖得也太那啥了。。。

#3 楼 @martin91 不是,我还有个现成的网站,也想用这个服务。我想问的就是 Rails 开发这种服务,是不是跟普通 WEB 程序开发流程一样,如果不一样,该怎么弄。

各大银行的接口还是那种老式的 soap。。。

#7 楼 @martin91 因为没有实际开发经验,表述可能不对!哈哈,你尽可能站新人的角度再帮我看看。

我已经有一个 Web 程序和一个 Android 程序(以后可能还有 iOS 端、OS X 端,可以理解为已经有了一系列平台的程序),他们现在有一个待开发的功能,这个功能各个程序的需求基本一致,所以我现在就想再开发第三个程序(这里我接下来把他叫做服务,因为它不完整,主要给我的其他程序引用),这个服务如果用.net 开发,就是一个 WebService 服务。

现在我用 Rails 来开发这个服务,来简化我多个程序的开发工作。问题就是这个叫服务的东西的开发流程是跟普通 Rails 开发 Web 程序一样吗?还是要特殊对待,添加插件什么的?

用 grap 这个 gem 包开发 api

Web 服务,能用 API 走 Web 调用的服务就叫 Web 服务。 话说 SOA 和 SOAP 是两个东西哦,一个是 Service-Oriented Architecture 一个是 Simple Object Access Protocol。 以前用 SOAP 是因为 XML 那时候非常火热,啥都要往那个上面靠一下。 现在则普遍认为 XML 对于小型应用来说太重了,徒增代码量,相当于更轻量级的实现(例如 Restful)来说没有很大的提升,所以就渐渐少用了。

很显然 你们学校做的“学校工程实训”就是扯犊子的事情。可以想象,是拿十年前不变的东西又教授一遍给学生。理论知识不会变,然而 实训应该是结合实际的,还不如结合现在的发展实际,教授更新的知识给学生

#9 楼 @bocai 我要怎么查 grap 这个 gem 的中文文档?找了一下,没找到

前端时间刚刚写过 1 个。

用 Rails 2.3 的 rubyjedi-actionwebservice gem 生成 wsdl 然后把 wsdl 放到最新版的 rails 里直接用即可

You need to Sign in before reply, if you don't have an account, please Sign up first.