XINS is a technology used to define, create and invoke remote APIs. XINS is highly specification-oriented. API specifications (written in XML), are transformed by XINS into HTML-based documentation and Java code for both the client- and the server-side. The communication is based on HTTP.
XINS competes with the overcomplex Microsoft web services technologies (e.g. SOAP, WSDL). Main design goals include simplicity, scalability and testability.
New features include support for floating point and binary types, structured input, XML based request and various other improvements as well as bug fixes.
For more information visit the XINS home page, read the user guide and have a look at the demonstration page.
XINS is published under the BSD License.
-
XINS 1.1 released - Web Services Simplified (7 messages)
- Posted by: Anthony Goubard
- Posted on: January 28 2005 09:29 EST
Threaded Messages (7)
- Web Services (SOAP) Alternatives.. by Paul Danckaert on January 28 2005 09:58 EST
- Is there room for improvement? by Ernst de Haan on January 28 2005 10:36 EST
- XML CORBA by Tim Chadwick on January 28 2005 10:54 EST
- Web Services (SOAP) Alternatives.. by Konstantin Ignatyev on January 28 2005 15:57 EST
- Simplicity by Tom Eugelink on January 31 2005 02:48 EST
- XINS 1.1 Raining on Parade by Tim O'Brien on January 28 2005 12:01 EST
- Re: XINS 1.1 Raining on Parade by Ernst de Haan on January 28 2005 12:20 EST
-
Web Services (SOAP) Alternatives..[ Go to top ]
- Posted by: Paul Danckaert
- Posted on: January 28 2005 09:58 EST
- in response to Anthony Goubard
So, I have to say two things here... one is, this doesn't look bad at all. Looks well thought out, very functional.. and simplicity/performance oriented. So thats good.
The other side though.. unless its being pushed as a W3 standard and is supported by major vendors, I'm not sure what the attraction is here. We have XML-RPC, REST, ICE (ZeroC), and Burlap. We have binary transports like RMI and CORBA.. and we have emerging hybrids, like the SOAP/XML Binary Encoding stuff being tossed around. All of these are technically very good.. all provide great features.. but if you are outside of a controlled environment, aren't you basically going to be using SOAP at this point?
I don't want this to be taken that I'm a huge fan of SOAP.. I think its been getting more and more complex.. especially with competing standards around security and the like. Its starting to look more like XML CORBA to me in some ways.. but being realistic, where would these alternate transports gain a foothold? SOAP is the lowest common demoninator.. not the best.. but works over HTTP and is out there. Others may work over HTTP, may tunnel through HTTP, or may be totally different. But, how are people using them? Internal system development? (And if so, why not use a binary encoding and save the XML overhead?)
I'm curious.. It would be interesting to take some of these remoting protocols and build out a matrix of "real-world" deployments and such as a comparison.. -
Is there room for improvement?[ Go to top ]
- Posted by: Ernst de Haan
- Posted on: January 28 2005 10:36 EST
- in response to Paul Danckaert
So, I have to say two things here... one is, this doesn't look bad at all. Looks well thought out, very functional.. and simplicity/performance oriented. So thats good.
Indeed. We have spent more than 2 years developing XINS into what it is today. In production, the technology has proven to be reliable, scalable and very well manageable (operationally).The other side though.. unless its being pushed as a W3 standard and is supported by major vendors, I'm not sure what the attraction is here.
The attraction is in the simplicity. This technology just makes your life easier, whether you are in the role of a Developer, a Specification Author, an Operations Manager or a Support Manager.As a Developer, for example, you get generated classes to call your API. All input parameters are converted to the most specific Java types.As an Operations Manager, I can define the URLs to connect to without restarting the application. I can use an overview of all possible log messages to determine what to look for in the logfiles. I can change time-out values on-the-fly, etc.Still, XINS offers enough power to be attractive in more complex scenarios as well.We have XML-RPC, REST, ICE (ZeroC), and Burlap. We have binary transports like RMI and CORBA.. and we have emerging hybrids, like the SOAP/XML Binary Encoding stuff being tossed around. All of these are technically very good.. all provide great features.. but if you are outside of a controlled environment, aren't you basically going to be using SOAP at this point?
That's not what we see happening in practice. Most people seem to accept the fact that SOAP is the dominating standard in the web services landscape. However, most avoid it because it is just way too complex. Instead, custom XML or URL-based remoting applications are built.
This is where XINS comes in. It allows one to write an XML- or URL-based in just a few minutes. Write the specs, generate the WAR file and then modify the editable generated source file (there is also non-editable generated code involved).I don't want this to be taken that I'm a huge fan of SOAP.. I think its been getting more and more complex.. especially with competing standards around security and the like. Its starting to look more like XML CORBA to me in some ways..
This is exactly the point. If SOAP was sufficiently simple and powerful, XINS would never have been developed in the first place. Give XINS a try and see for yourself. We would be really interested in your comparison of SOAP and XINS!It would be interesting to take some of these remoting protocols and build out a matrix of "real-world" deployments and such as a comparison..
Good idea. We intend to put such a matrix on the XINS web site. However, an independant comparison would be even more useful. -
XML CORBA[ Go to top ]
- Posted by: Tim Chadwick
- Posted on: January 28 2005 10:54 EST
- in response to Paul Danckaert
Hi Paul,
I could not agree with your more, as far as these web service tools becoming more and more like CORBA. I even read an article (i think it was TSS) about how to use certain patterns in SOAP to account for context-necessary provisions that you normally get in CORBA!
When it comes right down to it though, in a way i think that SOAP is a more verbose, less context sensitive, tool for doing what much of CORBA does in the first place. Like you say, SOAP is just the lowest common denominator. I think conceptually, an XML CORBA is what a lot of people want, but when the reality of performance starts to rear its ugly head, these other specs start to spring up (Binary XML Package spec released yesterday from w3c).
I would like to see the same sort of comparison. In addition i would like to see more domain specific areas where the lines between SOAP and XML CORBA are starting to be blurred, and from there a specification for appropriate tool application could be built.
Can anybody provide some experience where they have seen this blurring? In my own experience i have found that webservices that support large result sets have pushed for binary tools, and where i think most people would agree: SECURITY.over-soap() == XML-CORBA.INSTANCE
Thanks!
~tim -
Web Services (SOAP) Alternatives..[ Go to top ]
- Posted by: Konstantin Ignatyev
- Posted on: January 28 2005 15:57 EST
- in response to Paul Danckaert
(And if so, why not use a binary encoding and save the XML overhead?)I'm curious.. It would be interesting to take some of these remoting protocols and build out a matrix of "real-world" deployments and such as a comparison..
Indeed why?
It is time to say NO to the nonsense and FUD from network people and simply require CORBA IIOP port was open on firewalls. That is it.
As for comparison: look for a very simple one on my site, some day I will add XINS there http://kgionline.com/articles/protocol_compare/doc/index.jsp -
Simplicity[ Go to top ]
- Posted by: Tom Eugelink
- Posted on: January 31 2005 02:48 EST
- in response to Konstantin Ignatyev
I'm always very drawn to simplicity and maintainability.
So that is why is use Apache Axis to enable public accessible SOAP methods; all I need to do is write a JWS file containing the SOAP interface (and nothing more than the interface), the rest is generated.
Or Hessian for application internal (read: applet, JWS) communication; I only need to specify an interface and the actual communication is binary (fast). Ports exists for CPP, C#, PHP, Flash, so using the occasional different technology is not really a problem.
I'm already happy. No configuration hassle, no XML specifications to write. :-) -
XINS 1.1 Raining on Parade[ Go to top ]
- Posted by: Tim O'Brien
- Posted on: January 28 2005 12:01 EST
- in response to Anthony Goubard
This thing is "highly specification-oriented", and if you read the docs, the thing that just makes me cringe is the fact that you have to modify generated code. Read the Implementing the Method section and follow the process, read down to "implementing your function" and notice how after you've generated MyFunctionImpl.java you have to edit it manually.
Instead of focusing on web services, XINS gets into load balancing, CVS integration, log files, etc. So, you end up writing all of your services to XINS specific APIs. (all your base will belong to XINS) Instead of XINS, I'd recommend Spring Framework, with something like Spring, your services remain independent of any specific services framework and you just end up decorating an existing service with a number of different adapters - Axis, Hessian, Burlap, RMI.
-
Re: XINS 1.1 Raining on Parade[ Go to top ]
- Posted by: Ernst de Haan
- Posted on: January 28 2005 12:20 EST
- in response to Tim O'Brien
This thing is "highly specification-oriented", and if you read the docs, the thing that just makes me cringe is the fact that you have to modify generated code. Read the Implementing the Method section and follow the process, read down to "implementing your function" and notice how after you've generated MyFunctionImpl.java you have to edit it manually.
This is optional. You could also write the code yourself. XINS just aids you in this. Note that XINS offers a combination of active and passive code generation. All the passively generated code (which is what you are referring to) runs within a kind of sandbox imposed by the XINS/Java Server Framework and the actively generated code, specific to the API.