Fabric3 is a platform for building distributed applications and integrating loosely coupled systems. Perhaps the best way to describe Fabric3 is to contrast it with other middleware technologies:
- Unlike Java EE app servers, Fabric3 is designed to enable service-based as opposed to autonomous (and often monolithic) applications. Fabric3 is used to assemble applications from loosely-coupled distributed services.
- Dependency injection frameworks such as Spring and Guice assemble local application components; Fabric3 extends assembly from local to distributed services.
- Unlike Enterprise Service Buses (ESB), Fabric3 is not based on a proprietary programming and integration model that sends all communication through a routing and transformation framework. Instead, Fabric3 relies on standards such as OASIS SCA and JAX-RS and open protocols such as ZeroMQ to wire application components directly without the complexity and overhead of an intermediary.
- Fabric3 does not compete with messaging middleware (MOM), but uses it for remote communication between services.
- Fabric3 does not replace web services but can be used to expose RESTful (JAX-RS) resources and WS-* endpoints to external clients.
- Fabric3 supports polyglot communications including JMS, ZeroMQ and file-based transports. Fabric3 can also be extended to support additional protocols and transports.
The following sections explain key concepts used when designing, deploying and maintaining applications with Fabric3..