consume .NET in rails

Hello,

What is the preferred way to consume .NET webservices in rails? Currently we have a file in the lib directory handling all this but I would like a cleaner way to

1 - have the services act more “model” like so we can access data like NETApi.get_users()

2 - Allow the rails client to login only once, as logging in each time for a request can be very slow on a very large wsdl file

Any suggestions? I am using soap4r now and it works fine but I think it can be tidier. Also logging in to the NET site on startup slows down launching future rails instances. Some sample below

module NETAPILibrary

require ‘soap/wsdlDriver’

require ‘soap/header/simplehandler’

require ‘uuid’

class AutheticationHeaderHandler < SOAP::Header::SimpleHandler

#The header is named “SecureHeader” in this web service.

@@HEADER_NAME = ‘AuthenticationHeader’

def initialize(namespace, companyID, userID)

super(XSD::QName.new(namespace, @@HEADER_NAME))

@user_element = XSD::QName.new(namespace, ‘CompanyId’)

@password_element = XSD::QName.new(namespace, ‘UserId’)

@companyID, @userID = companyID, userID

end

def on_simple_outbound

{@user_element => @companyID, @password_element => @userID}

end

end

def bt_initialize

$soap = SOAP::WSDLDriverFactory.new($BT_WSDL_URL).create_rpc_driver

$soap.headerhandler << AutheticationHeaderHandler.new(“http://testapi.com/”, $bt_rootid,$bt_user_id)

end

def bt_getmemberbyemail(email)

res = $soap.GetMemberByEmail(:email => email)

return res.getMemberByEmailResult.iD

end