Earlier attempts to solve the problem of general application interoperability have failed because they have relied on technologies that are not universally accepted, not generally available, or are too difficult to use. For example, four of the more common previous alternatives include EDI, COM/DCOM, RMI, and CORBA, and these have failed as a basis or alternative to Web services for some of the following reasons:
Electronic Data Interchange (EDI) is very expensive to implement, proprietary, and single-purposed.
Common Object Model (COM) and Distributed Common Object Model (DCOM) are limited exclusively to Microsoft platforms.
Remote Method Invocation (RMI) is strictly a Java technology.
Common Object Request Broker Architecture (CORBA) is based on open standards. But CORBA standards are numerous and complex, requiring a relatively large and expensive effort for vendors to implement. Also, because there is little common agreement on standards interpretation among CORBA implementors, different implementations tend to be inconsistent with and difficult to use with each other.
Web services, in contrast, rely on relatively simple standards that already exist to support the Internet and World Wide Web (such as XML and HTTP) and are therefore already widely accepted and used in the industry.