Rails Rails 如何创建 WebService 接口,提供给 .NET 程序调用

mumu · 2015年10月09日 · 最后由 mumu 回复于 2015年10月14日 · 4027 次阅读

rails 需要提供一个 web 服务给.net 使用

由于该 web 服务有可能被多个系统调用,所以希望还是以 wsdl 方式,以方便其他系统调用

根据http://www.ibm.com/developerworks/cn/opensource/os-ws-rubyrails/index.html 创建 wsdl 的 webservice 时,遇到以下问题, 应该如何解决

rails 就是 web 框架,你想要的应该是提供 api 吧,一般都是用grape https://github.com/ruby-grape/grape

#1 楼 @zoker 是想对其他系统发布一个 WebService 接口,供其他系统调用其中的方法

非要用 webservice,个人觉得最容易的方法是

你用 rails 做成 restfull 的 service 公布在内网 再用 vs 做一个 Webservice 包起来公布给外部 或者直接用 vs 连你的 rails db 做一个 webservice

也可以折腾折腾 http://stackoverflow.com/questions/4993900/how-to-create-a-web-service

有人使用过 thrift 实现 rails web 服务的服务器端吗

@mumu 使用过 ruby 做 thrift client, java 做的 thrift server。 ruby 做 server 的话官网上也有例子,原理都类似的。

#5 楼 @mueven 执行报错,不知这个 shared_types 是缺少什么 gem 包啊

#6 楼 @mumu windows 运行 ruby 没有用过,ubuntu 里 OK。 你的 rails 是运行在 windows 服务器里的?

#6 楼 @mumu 我在线下听过@ericguo的分享,他应该在 windows+ruby+rails 很利害,你可以找他:)

还是走 REST json 的方式比较靠谱,如果你的调用量不是很大的话 (< 2000/m) , 走 JSON 完全可以接受。折腾 thrift 除非对性能有比较高的要求。

#9 楼 @jimrokliu 没用过呢,有例子吗?

12 楼 已删除

#9 楼 @jimrokliu 同意,如果是 rails 的话,应该提供 json 格式的 restful 风格的 API 给其他平台调用,提供 web service 简直是扬短避长,.NET 这边调用 json 的话,虽然麻烦点,但也能接受,比如这样:

using (WebClient client = new WebClient())
{
    string url = string.Format("http://10.71.5.88/forms/real_time_broadcasts/{0}/confirm_speaked.json", say.confirm_speaked_id);

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

    request.Method = "POST";
    request.Timeout = 5000;
    request.ReadWriteTimeout = 10000;

    request.Accept = "application/json";
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    StreamReader reader = new StreamReader(response.GetResponseStream());
    string htmldoc = reader.ReadToEnd();
    response.Close();
}

另外现在语言和平台之间的互操作协议,json 相比 SOAP 早就一统江湖啦,唯一的争议是到底 json 格式语义如何定义,GraphQL/jsonapi,其实就是选 react 还是 ember.js,但无论如何前后端分离肯定是趋势,如果喜欢 Rails 的话 Rails 5 API 里面推荐的官方 gem 是AWS,其实换句话说,Rails 官方也给你选了,就是 jsonapi+ember.js 的方案。

所以我现在 focus 这两个技术,一个就是 ember.js,另外就是 rails 5。其他 wdsl, Thrift, Protobuf 特定场合特定技术吧,未来 Rails 主流应该还是 jsonapi。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号