# How could I get RPC in iron ruby?

**URL:** <https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398>\
**Category:** IronRuby\
**Created:** [March 19, 2010, 7:25am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398 "2010-03-19T07:25:15Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [March 19, 2010, 7:25am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/1 "2010-03-19T07:25:15Z")

</div>

I want to find a solution in IronRuby to use RPC function.  
I tried SOAP, but it can’t work, any one could tell me how to implement  
RPC  
(or XMLRPC) in ironruby?  
Thanks,

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [March 19, 2010, 7:42am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/2 "2010-03-19T07:42:49Z")

</div>

There are several ways to do that with IronRuby.

Very CLR centric:  
You can create a proxy to your webservice using visual studio, compile  
to a  
dll and use the proxy from your ruby code.

CLR centric:  
You can use System.Net.HttpWebRequest to make the request and  
System.Xml.XmlDocument to parse the response

## Very Ruby centric: Use Net::HTTP to perform the request and REXML to parse the response

Met vriendelijke groeten - Best regards - Salutations  
Ivan Porto C.  
Web: [http://whiterabbitconsulting.eu](http://whiterabbitconsulting.eu) - [http://flanders.co.nz](http://flanders.co.nz)  
Twitter: [http://twitter.com/casualjim](http://twitter.com/casualjim)  
Author of IronRuby in Action ([IronRuby in Action - Ivan Porto Carrero and Adam Burmister | Manning](http://manning.com/carrero))  
Microsoft IronRuby/C# MVP

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 17, 2010, 9:49am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/3 "2010-04-17T09:49:08Z")

</div>

Or use hpricot or nokogiri Ruby libraries. You will find several libs  
to choose from.

Sent from my iPhone

On Mar 18, 2010, at 11:41 PM, Ivan Porto C.  
\<removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 17, 2010, 9:15pm UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/4 "2010-04-17T21:15:01Z")

</div>

Maybe I spoke too soon, but I thought it did. I was switching back and  
forth a lot at the time. I will try again once I get everything re-  
installed.

Sent from my iPhone

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 18, 2010, 9:02am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/5 "2010-04-18T09:02:33Z")

</div>

## nokogiri works on windows but not on IronRuby … it needs a C-extension

Met vriendelijke groeten - Best regards - Salutations  
Ivan Porto C.  
Web: [http://whiterabbitconsulting.eu](http://whiterabbitconsulting.eu) - [http://flanders.co.nz](http://flanders.co.nz)  
Twitter: [http://twitter.com/casualjim](http://twitter.com/casualjim)  
Author of IronRuby in Action ([IronRuby in Action - Ivan Porto Carrero and Adam Burmister | Manning](http://manning.com/carrero))  
Microsoft IronRuby/C# MVP

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 17, 2010, 11:00am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/6 "2010-04-17T11:00:31Z")

</div>

2010/4/17 Ryan R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Or use hpricot or nokogiri Ruby libraries. You will find several libs to  
> choose from.

Does nokogiri work on IronRuby?!

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 18, 2010, 9:49am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/7 "2010-04-18T09:49:58Z")

</div>

So whose going to port it? 🙂 or even implement FFI?

~Jimmy

On Apr 18, 2010, at 12:02 AM, “Ivan Porto C.”  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\> wrote:

## nokogiri works on windows but not on IronRuby … it needs a C-extension

Met vriendelijke groeten - Best regards - Salutations  
Ivan Porto C.  
Web: [http://whiterabbitconsulting.eu](http://whiterabbitconsulting.eu) [http://whiterabbitconsulting.eu](http://whiterabbitconsulting.eu) -  
[http://flanders.co.nz](http://flanders.co.nz) [http://flanders.co.nz](http://flanders.co.nz)  
Twitter: [http://twitter.com/casualjim](http://twitter.com/casualjim) [http://twitter.com/casualjim](http://twitter.com/casualjim)  
Author of IronRuby in Action  
([http://manning.com/carrero](http://manning.com/carrero)[IronRuby in Action - Ivan Porto Carrero and Adam Burmister | Manning](http://manning.com/carrero))  
Microsoft IronRuby/C# MVP

On Sat, Apr 17, 2010 at 9:14 PM, Ryan R.  
\<[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
wrote:  
Maybe I spoke too soon, but I thought it did. I was switching back and  
forth a lot at the time. I will try again once I get everything  
re-installed.

Sent from my iPhone

On Apr 17, 2010, at 1:47 AM, Seo S.  
\<[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>  
wrote:

2010/4/17 Ryan R.  
\<[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)\>:  
Or use hpricot or nokogiri Ruby libraries. You will find several libs to  
choose from.

Does nokogiri work on IronRuby?!

–  
Seo S.

* * *

Ironruby-core mailing list  
[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

* * *

Ironruby-core mailing list  
[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

* * *

Ironruby-core mailing list  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[http://rubyforge.org/mailman/listinfo/ironruby-core](http://rubyforge.org/mailman/listinfo/ironruby-core)

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 18, 2010, 11:59am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/8 "2010-04-18T11:59:55Z")

</div>

On Sun, Apr 18, 2010 at 09:49, Jimmy S.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> So whose going to port it? 🙂 or even implement FFI?

Nokogiri is built on top of libxml2 and libxslt so we could have a C#  
Nokogiri that performs interop with those libraries, but a  
fully-managed Nokogiri would be cooler (BTW the JRuby guys are  
reaching the goal of a pure-Java version and they are close to passing  
all the tests).

I did a very quick research on the subject a few weeks ago. The reader  
bits should be relatively easy to port since, as far as I remember,  
the reader interface of libxml2 is modeled after the XmlTextReader  
class of .NET. “SAX for .NET” could be used for the SAX parser to  
start (it’s BSD licensed but hasn’t been updated since ages… we just  
don’t have Xerces :-)). Mono has something for RelaxNG validation.

–  
Daniele A.

> **[clorophilla.net](https://clorophilla.net/)**

[http://twitter.com/JoL1hAHN](http://twitter.com/JoL1hAHN)

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 19, 2010, 2:06am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/9 "2010-04-19T02:06:49Z")

</div>

Performance is one negative - since most of the logic that would  
normally be implemented in C, Java or C# is implemented in Ruby, it  
will be slower. Libxml is callback heavy, and depending on how well  
the FFI impl handles these, the rather large number of transitions  
between ruby and the native lib costs a lot.

Portability is another - with a pure-ruby or C# impl, you don’t need  
to worry about having the appropriate native lib on the system - its  
plug and play. libxml is also a pretty nasty api to bind using  
something like FFI, and nokogiri really pushes FFI, so until you have  
a really complete FFI impl, you’ll have stability problems.

In hindsight, I think JRuby would have been better served by just  
going for a java impl of nokogiri upfront rather than the  
nokogiri-over-FFI stopgap.

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 18, 2010, 11:11pm UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/10 "2010-04-18T23:11:13Z")

</div>

Speaking of FFI, what’s the tradeoff here? FFI let’s us use the existing  
libraries without porting, but a managed alternative should be more  
performant, right? Seems like FFI is the winner here, but I may be  
missing  
something.

Ryan R.

Email: removed\_email\_address@domain.invalid  
LinkedIn: [http://www.linkedin.com/in/ryanriley](http://www.linkedin.com/in/ryanriley)  
Blog: [http://wizardsofsmart.net/](http://wizardsofsmart.net/)  
Twitter: @panesofglass  
Website: [http://panesofglass.org/](http://panesofglass.org/)

On Sun, Apr 18, 2010 at 12:49 AM, Jimmy S. \<

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 20, 2010, 12:29am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/11 "2010-04-20T00:29:08Z")

</div>

Just out of curiosity: What’s the process for making an ironruby port of  
something like Nokogiri?

I looked at a blog  
post[http://blog.headius.com/2010/04/nokogiri-java-port-help-us-finish-it.html](http://blog.headius.com/2010/04/nokogiri-java-port-help-us-finish-it.html)by  
one of the people working on the JRuby port and it looks pretty  
involved,  
but essentially, to port it you would just implement all the  
“attach\_functions” in libxml.rb in .NET?

–c

On Sun, Apr 18, 2010 at 18:46, Tomas M.

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 20, 2010, 10:44am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/12 "2010-04-20T10:44:17Z")

</div>

There are several approaches you can take.

Nokogiri has been a b\*\*\*\* to get going on windows, and even now it only  
compiles on mingw based MRI AFAIK.  
To come close to the quality of the Nokogiri gem I think you would need  
to  
find a very fast .NET based xml library (it’s not XLinq :)), that also  
has a  
SAX parser, knows about CSS3 for parsing documents in addition to XPATH,  
and  
then provide an adapter to make it look like the nokogiri API.  
You could potentially use P/Invoke to call to libxml2 but then you take  
on a  
dependency on a native library. I’m also not sure if libxml2 actually  
performs in the same way on windows as it does on \*nix.

If we would have an implementation of FFI then we could use the FFI  
based  
nokogiri gem.

I looked at it a few times but it would be a serious amount of work, too  
much for my taste :).

* * *

Met vriendelijke groeten - Best regards - Salutations  
Ivan Porto C.  
Web: [http://whiterabbitconsulting.eu](http://whiterabbitconsulting.eu) - [http://flanders.co.nz](http://flanders.co.nz)  
Twitter: [http://twitter.com/casualjim](http://twitter.com/casualjim)  
Author of IronRuby in Action ([http://manning.com/carrero](http://manning.com/carrero))  
Microsoft IronRuby/C# MVP

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 19, 2010, 3:46am UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/13 "2010-04-19T03:46:54Z")

</div>

Using native code in your app also requires full trust (implying it  
won’t work in Silverlight) and is potentially a security issue. Any  
exploit in the library would make IronRuby vulnerable to attacks.

Tomas

---

<div class="post-metadata">

**Author:** ![sagasw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/94ad74/32.png) [@sagasw](https://www.ruby-forum.com/u/sagasw)\
**Post date:** [April 20, 2010, 4:12pm UTC](https://www.ruby-forum.com/t/how-could-i-get-rpc-in-iron-ruby/185398/14 "2010-04-20T16:12:42Z")

</div>

To me at least, it seems that it might be easier to take the approach of  
developing an FFI. I think JRuby took that approach and they’re just  
about at the point where they’ve got access to Nokogiri. Might be worth  
looking into if someone wants to put forth the effort. I might even look  
into it :).

-Zac
