I am trying to consume a WCF SOAP service with wsHttpBinding from Ubuntu.
Whatever I try, PHP, SoapUI, Java, I'm running into problems with wsHttpBinding features not being implemented. Changing it to BasicHttpBinding or disabling security features is not an option.
NOTE: It pretty much doesn't matter what language is used. Is there a SOAP client/framework/library that supports all these features and runs on Linux?
I'd prefer a scripting language as this is supposed to run as a cronjob, but right now anything that works is appreciated.
There are similar questions from months/years ago, but they are unresolved or solved by changing the server side, which like I said is not an option here.
try GSOAP. you can find here more information about the functions:
http://www.cs.fsu.edu/~engelen/soap.html. it is a very complex package and it takes some time to learn the entire stack and how to use the generators and additional modules but it works.
Related
I need a recommendation for a framework/library for building web services on a Linux system. I have the following requirements:
It should have minimal dependencies, e.g. preferably not require any VM like Java or Mono.
My service implementation should have access to the native system APIs, preferably it should be possible to call C APIs directly.
If possible, the solution should not depend on a large web server installation. As I understand, Axis/C++ would require an Apache server, right? Is there anything that allows for writing some kind of "self-hosted" web service like in .NET (ServiceHost) on Linux? I would really like something that works as a standalone daemon in the end.
The resulting services should be standard-compliant as I need to make cross-platform calls. Most importantly, I need WS-Security.
The solution must be Open Source, the actual licence is less important.
If you have any suggestions, please post (web links would be nice ;-))
Thanks in advance,
Christoph
What about Twisted? http://twistedmatrix.com/trac/
I've went through several examples (shown below) based on the hopes that I could get WCF to work on the 4.0 framework in Mono.
Installing a Mono-Server for WCF
Indigo Infocard
However, the link on http://www.mono-project.com/WCF didn't seem to contain a "guide" so to speak as to "here's how to setup wcf on linux with mono". On a side note. I think I've checked the first two pages of google for most wcf/mono keyword combinations to no avail.
Is it possible to easily get a WCF service up and going on linux? I presume there may be some configuration on the apache2 side? (I'm running a lamp server with Ubuntu 11.10).
I took the stock 4.0 WCF Service Library and tested deploying it to my server and accessing the *.svc to see if I got the wsdl, however, I did get a status code of 500.
As far as alternatives. I'm thinking that http://www.servicestack.net/ is probably the best?
So there are a couple of questions:
Can you get WCF to work on Linux easily? If so, how? (Windows was easily done)
SOA Alternatives. Should I look at asmx (wcf did replace this) or go with Service Stack.
My goal (in a basic sense) is to pass data to a service and have it compute work. Nothing is returned.
servicestack.net itself (and all the live examples) runs on an Ubuntu 12.04 on a Hetzner vServer. All our live demos run on Nginx/MonoFastCgi.
Here is how to run a ServiceStack self-hosted service inside a Linux daemon which also includes configuration of hosting it behind an Apache or Nginx reverse proxy. This post was written by a team who moved to ServiceStack to fix their memory and performance issues with MVC on Mono.
I generally avoid trying to run any heavy Microsoft web frameworks on Mono unless the Mono team has expressed supported configuration. For WCF they've stated only the "Silverlight subset" of WCF is supported.
Microsoft themselves don't support or test on Linux so you will generally have a better experience with others that do.
I've also answered what I believe are the main differences between ServiceStack, WebApi and WCF in an earlier question here.
Ubuntu 11.10 has a very old version of Mono.
If you use Ubuntu 12.04, as it includes a newer version, it may just work.
I need to write a SOAP service for Linux (CentOS).
I need to do this using Lazarus/FreePascal. The service needs to be a binary (daemon) that runs in the background.
Questions:
1. Is this possible (as a standalone executable)?
2. If not, what are the alternatives?
3. How do I start?
4. What additional tools/libraries do I need?
This is possible with wst and either synapse or indy. wst is alsready included in your Freepascal download. There are some samples included as well, have a look at them.
I have created several soap services with wst + freepascal. You can choose to have them use their own webserver (so they just listen on a certain port, allows for simple debugging) or create an cgi module that you can use in Apache or IIS. You can also create a windows service or linux daemon, all by switching some parameters or including some other files.
It is not easy if you do it for the first time, but certainly possible.
I can answer some of your points since I'm doing it myself:
Using Lazarus and installing the LazDaemon package you can do daemons/services that compile and run stand alone on both Windows(Service) and Linux(Daemon). Daemons and Services
N/A
You have examples under the [fpc-source-dir]/packages/fcl-base/example/daemon.pp and under [lazarus-dir]/examples/cleandir/*
You will need some kind of SOAP framework that I'm not versed in.
Hope it helps.
This looks promising, at least as a start.
SOAP is a language neutral specification so in theory you could code in any language. But for your purposes if you can't find a library in pascal that does the grunt work you would be better off using any other language that does. Unless you are specifically looking for a long detour down the rabbit hole of WSDL and such, don't go there.
Is Pascal really a requirement??
Otherwise, you could write a SOAP service in Java, then your service would be platform agnostic.
The only requirement would be a JRE, and JRE are available for any platform, so it would run perfectly on all Linux flavors, WIndows, Mac OsS, Solaris, etc
There are also plenty of frameworks for doing SOAP in Java.
Pascal would also be able to run on Linux and Windows with minor adjustments, but I have no knowledge of existing good SOAP frameworks for Pascal.
I would just use Indy, and whatever Delphi soap lib a google search yielded. I would be surprised if there weren't a dozen.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I have a server that is running Ubuntu Linux Server Edition. I once had a Windows Server and it is easy to create web services using ASP.net on Windows. Linux on the other hand does support ASP.net using Mono, but is isn't as full featured as Windows. So what would be the best way to create xml web services on a linux server box?
Thanks
A web service can be written in any language. A web service is a program that takes request and returns response (xml or json) via http protocol. You can use a web server like Apache or lighthttpd to handle the http(s) and multithreading for you and write a simple script to do the actual work. The script can be written in anything - php, perl, python, shellscript, cgi c++, free pascal cgi etc.
Of course, You can write everything on your own by using TCP sockets, but this is not your goal I guess.
For FOSS I'd do it in php, because it`s easy:http://davidwalsh.name/web-service-php-mysql-xml-json
If I want it compiled, i'd use FreePascal as in this guide: http://leonardorame.blogspot.com/2010/02/web-20-programming-with-object-pascal.html
Or If I prefer C++, I'd use QTCreator with this guide: http://libqxt.bitbucket.org/doc/tip/tech-web.html
If you want to use ASP.net then use a windows server.
If you have to use Linux for some reason then you need to learn another language to work properly in the linux environment.
Linux web development is actually a world of difference from Windows web development. In leau of the bureaucracy of "applications" and "web services" we have scripts you can invoke via Apache, and if you want to get more advanced, daemons that can handle TCP/IP connections.
If you want to use something specific like SOAP, you should mention it in there, but as far as I know, Linux web development isn't service-based like Windows is.
There are many ways to do this, but given your ASP.NET background why not give the MonoDevelop IDE a go, it has matured a lot and will continue to do so.
Another option is using Eclipse (Java or PHP).
Depends mostly on the web server and web language you run on Linux more than anything else.
If you're using Apache Tomcat, look at Axis2 (http://ws.apache.org/axis2/) and CXF (formerly XFire at http://cxf.apache.org/)
JBoss has web service support built-in (JBossWS) so it's fairly easy to use and since it's a Java EE server, it uses standard web service code that is portable.
You can also write web services using PHP if you use that on your web server.
Apache = IIS
PHP or Java EE or JSP or JSF = ASP.Net
There are a lot more choices in Linux land...
I came across the same problem recently. I wanted a thin layer to turn my SQL database into a webservice with JSON or XML support. All I wanted to do was to have to write the SQL statements... it seemed a pretty reasonable thing to ask.
However, all the options I found involved installing some sort of enterprisy "do everything" solution. So I ended up writing some "glue" which took SQL statements defined in XML "dataset" definitions, and served a simple, RESTful web service.
I documented my approach here:
http://www.nsquared.co.nz/jarvis-docs/jarvis_guide.odt
If you want to use the framework, I can give you a tarball of the latest release. It's used in three or four small applications currently, 2 ExtJS, 1 Flex, and 1 Asp.Net.
There's a plethora of materials available with a simple search for "PHP Web Service" on Google. I'm not really sure what language you're using or what type of service you want to set up so I went with PHP Soap.
http://www.onlamp.com/pub/a/php/2007/07/26/php-web-services.html
There's a lot of industry standard specification and implementation in Java dealing with all aspects of server side web programming.
Start off by an open source implementation such as Apache Tomcat and/or any of http://ws.apache.org/
I guess the best answer depends a bit on what you really need, but one option is to use any of the recent web frameworks, such as Rails, CakePHP, or Django, which allow you to easily define database backed models, and then compose dynamic sites. Turnaround on these frameworks can be measured in minutes for simple sites.
Although it is based on a commercial product the following is an excellent primer to assist you in understanding how you would develop a Java based web service on Linux. If you find a similar tutorial based on free software please share it.
"So what would be the best way to create xml web services on a linux server box?"
A web framework like Turbogears, Django, Grok, Repoze.BFG, WebPy or such.
What can we do to integrate code written in a language with code written in any other language? Which techniques are more/less known? I know that some/most languages can be compiled to Java bytecode, but what do we do about the rest ?
You mention the "compile to Java" approach, and there's also the "use a .NET language" approach, so let's look at other cases. There are a number of ways you can interoperate, and it depends on what you're trying to accomplish, it's a case by case situation. Things that come to mind are
Web Services (SOAP or REST)
A text (or other) file in the file system
Use of a database to relay state or other data
A messaging environment like MSMQ or MQSeries
TCP sockets or UDP messages
Mailslots and named pipes
It depends on the level of integration you want.
Do you need the code to share data? Use a platform-neutral data format, such as JSON, XML, Protocol Buffers, Thrift etc.
Do you need to be able to ask code written in one language to perform some task for code in the other? Use a web service or similar inter-process communication layer.
Do you need to be able to call the code within a single process? The answer at that point will entirely depend on which languages you're talking about.
Direct invocations:
Direct calls (if the compilers understand each other's call stack)
Remote Procedure Call (early 90's)
CORBA (late 90's)
Remote Method Invocation (Java, with RMI stack/library in target environment)
.Net Remoting
Less tightly integrated:
Web services/SOAP
REST
The two I see most often are SWIG and Thrift. The main difference is (IIRC) Thrift opens up a port and puts a server there to marshal the data between the different languages, whereas SWIG builds library interface files and uses those to call the specified methods.
I think there are a few possible relationships among programs in different langauges...
There's shares a runtime (e.g. C# and Visual Basic) and compiled into same application/process...
There's one invokes the other (e.g. perl script that invokes a C program)...
There's talks to each other via IPC on the box, or over the network (e.g. pipes and web services)...
Unfortunately your question is rather vague.
There are ways to use different languages in the same process usually by embedding a VM or an interpreter into the executable. If you need to communicate over process boundaries there again are several possibilities many of them have been already mentioned by other answers.
I would suggest you refine your question to get more helpful answers.
On the Web, cookies can be set to pass variables between ASP/PHP/JavaScript. On a previous project I worked on, we used this to create a PHP file for downloading PDFs without revealing their location on the file system from an ASP application.
Almost every language that pretends some kind of system's development use is capable of linking against external routines with either a standard OS interface, or a C function interface. That is what I tend to use.