XML Interface for Network Services

Last updated
XINS
Developer(s) Online Breedband B.V.
Initial release11/16/2004
Stable release 3.1 (February 22, 2013;9 years ago (2013-02-22)) [±]
Preview release 3.0 beta 2 (June 9, 2012;10 years ago (2012-06-09)) [±]
Repository
Written in Java
Operating system Cross-platform
Available in English
Type Web services
License BSD
Website xins.org

XML Interface for Network Services (XINS) is an open-source technology for definition and implementation of internet applications, which enforces a specification-oriented approach.

Contents

Specification-oriented approach

The specification-oriented approach is at the heart of XINS:

From specifications, XINS is able to generate:

Components of the XINS technology

Technically, XINS is composed of the following:

An introductory tutorial called the XINS Primer takes the reader by the hand with easy-to-follow steps to perform, with screenshots.

Since version 1.3.0, the XINS/Java Server Framework supports not only POX-style calls, but also SOAP and XML-RPC. And it supports conversion using XSLT. As of version 2.0, it also supports JSON and JSON-RPC.

XINS is open-source and is distributed under the liberal BSD license.

Specifications

All XINS specification files are Plain Old XML. Compared to SOAP/WSDL/UDDI/etc. the format is extremely simple. There are specifications for projects, environment lists, APIs, functions, types and error codes.

Below is an example of a XINS project definition.

<projectname="MyProject"domain="com.mycompany"><apiname="MyAPI"><impl/><environments/></api></project>

Here is an example of a specification of an environment list:

<environments><environmentid="netarray"url="http://xins.users.mcs2.netarray.com/myproject/xins/"/></environments>

An example of an API specification file:

<apiname="MyAPI"><description>My first XINS API</description><functionname="Hello"/></api>

An example of a function definition:

<functionname="Hello"><description>Greets the indicated person.</description><input><paramname="name"required="true"><description>The name of the person to be greeted.</description></param></input><output><paramname="greeting"required="true"><description>The constructed greeting.</description></param></output></function>

RPC protocol

The XINS Standard Calling Convention is a simple HTTP-based RPC protocol. Input consists of HTTP parameters, while output is an XML document. This approach makes it compatible with plain Web browsers.

Example of a request:

 http://somehost/someapi/?_convention=_xins-std&_function=SayHello&firstName=John&lastName=Doe%5B%5D 

Example of a successful response:

<result><paramname="greeting">Hello John Doe!</param></result>

Competition

There are no known products that provide an integrated approach to specification-oriented development, similar to XINS. However, there are several frameworks and libraries that provide functionality similar to individual parts of XINS, including:

Related Research Articles

In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space, which is coded as if it were a normal (local) procedure call, without the programmer explicitly coding the details for the remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. This is a form of client–server interaction, typically implemented via a request–response message-passing system. In the object-oriented programming paradigm, RPCs are represented by remote method invocation (RMI). The RPC model implies a level of location transparency, namely that calling procedures are largely the same whether they are local or remote, but usually, they are not identical, so local calls can be distinguished from remote calls. Remote calls are usually orders of magnitude slower and less reliable than local calls, so distinguishing them is important.

XML-RPC is a remote procedure call (RPC) protocol which uses XML to encode its calls and HTTP as a transport mechanism.

A web service (WS) is either:

The Apache XML project is part of the Apache Software Foundation and focuses on XML-related projects.

The Web Services Invocation Framework (WSIF) supports a simple and flexible Java API for invoking any Web Services Description Language (WSDL)-described service.

Web Services Discovery provides access to software systems over the Internet using standard protocols. In the most basic scenario there is a Web Service Provider that publishes a service and a Web Service Consumer that uses this service. Web Service Discovery is the process of finding suitable web services for a given task.

<span class="mw-page-title-main">Apache Axis</span> Web service framework

Apache Axis is an open-source, XML based Web service framework. It consists of a Java and a C++ implementation of the SOAP server, and various utilities and APIs for generating and deploying Web service applications. Using Apache Axis, developers can create interoperable, distributed computing applications. Axis development takes place under the auspices of the Apache Software Foundation.

<span class="mw-page-title-main">Apache Tapestry</span> Open-source web application framework

Apache Tapestry is an open-source component-oriented Java web application framework conceptually similar to JavaServer Faces and Apache Wicket. Tapestry was created by Howard Lewis Ship, and was adopted by the Apache Software Foundation as a top-level project in 2006.

Jakarta XML RPC allows a Jakarta EE application to invoke a Java-based web service with a known description while still being consistent with its WSDL description. JAX-RPC is one of the Java XML programming APIs. It can be seen as Java RMIs over web services. JAX-RPC 2.0 was renamed JAX-WS 2.0. JAX-RPC 1 is deprecated with Java EE 6. The JAX-RPC service utilizes W3C standards like WSDL or Web Service Description Language. The core API classes are located in the Java package javax.xml.rpc.

JSON-RPC is a remote procedure call protocol encoded in JSON. It is similar to the XML-RPC protocol, defining only a few data types and commands. JSON-RPC allows for notifications and for multiple calls to be sent to the server which may be answered asynchronously.

<span class="mw-page-title-main">Web API</span> HTTP-based application programming interface used in web development

A web API is an application programming interface for either a web server or a web browser. It is a web development concept, usually limited to a web application's client-side, and thus usually does not include web server or browser implementation details such as SAPIs or APIs unless publicly accessible by a remote web application.

qooxdoo Open-source Ajax web application framework

qooxdoo is an open-source Ajax web application framework. It is an LGPL- and/or EPL-licensed client-side and server-agnostic solution, and includes support for professional JavaScript development, a graphical user interface (GUI) toolkit and high-level client-server communication.

The Jakarta XML Web Services is a Jakarta EE API for creating web services, particularly SOAP services. JAX-WS is one of the Java XML programming APIs.

<span class="mw-page-title-main">Apache Axis2</span> Web service engine

Apache Axis2 is a web service engine. It is a complete redesign and re-write of the widely used Apache Axis SOAP stack. Implementations of Axis2 are available in Java and C.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

<span class="mw-page-title-main">Web Services Description Language</span> XML-based interface description language

The Web Services Description Language is an XML-based interface description language that is used for describing the functionality offered by a web service. The acronym is also used for any specific WSDL description of a web service, which provides a machine-readable description of how the service can be called, what parameters it expects, and what data structures it returns. Therefore, its purpose is roughly similar to that of a type signature in a programming language.

<span class="mw-page-title-main">ColdBox Platform</span> Web application framework

ColdBox is a free, open-source, conventions-based, modular web application framework intended for building enterprise applications with ColdFusion (CFML) using a Hierarchical MVC approach.

gSOAP is a C and C++ software development toolkit for SOAP/XML web services and generic XML data bindings. Given a set of C/C++ type declarations, the compiler-based gSOAP tools generate serialization routines in source code for efficient XML serialization of the specified C and C++ data structures. Serialization takes zero-copy overhead.

The OpenAPI Specification, previously known as the Swagger Specification, is a specification for a machine-readable interface definition language for describing, producing, consuming and visualizing RESTful web services. Previously part of the Swagger framework, it became a separate project in 2016, overseen by the OpenAPI Initiative, an open-source collaboration project of the Linux Foundation. Swagger and some other tools can generate code, documentation and test cases from interface files.