(1)Your service must be accessible by different languages and platforms.
(2)Your service must be able to go through firewalls.
Given these requirements, the best solution is to provide a so-called "web service".
For example, you may make a web service accessible on the host www.ttdev.com and accessible as /SimpleService, so the full URL is http://www.ttdev.com/SimpleService. This is called the "endpoint" of the service.
However, you hope to provide a globally unique name to each operation so that you can have your "concat " operation while another person may have his "concat" operation. So, in addition to the name, you may declare that the "concat" name above is in the "namespace" of http://ttdev.com/ss.
So, the full name of the operation will be "concat" in namespace http://ttdev.com/ss. The name "concat" is called the "local name". The full name is called a "QName(qualified name)".
The endpoint really is the location, while the namespace is just a unique id.