permalink | title | layout | sortBy |
---|---|---|---|
/ |
Babel RPC |
post |
1 |
We are archiving the project because there are other great alternatives that are better maintained, like gRPC.
Babel is a tool for defining web service interfaces in a compact way and generating client and server code in multiple programming languages. It helps produce consistent, discoverable, and easy to consume web services.
It takes a serious effort to produce great web services.
- Documenting services is challenging.
- Services often use different styles - SOAP, plain XML, RESTish, etc.
- Test harness pages are manually created, if they exist at all.
- When client libraries exist, they are only for one programming language.
- There is no good way for developers to browse or discover services.
- Service response codes vary widely.
Additionally, developers spend way too many hours writing all the components of a service call.
Babel starts with a contract - an "interface definition language" file (or "babel file"). The babel file can be fully documented and immediately used to generate server code, client code, and a test harness. Babel supports multiple programming languages, so you can generate your server components in Java and your client components in C#.
Babel uses JSON over HTTP for all calls. While not a strictly RESTful API, Babel's APIs conform to web standards and can easily be called from code where Babel clients could not be used.
Documentation comments from the babel file are written to all the generated code and test harnesses, enabling IDEs to display help for developers.
Each API gets a fully working test harness (including documentation) so that you can try out the API by hand.
Babel supports syntax highlighting in Eclipse, Visual Studio, and Sublime Text 3.
Babel is similar to Facebook's Thrift and Google's Protocol Buffers. Why a new tool? Because we wanted web-standard APIs with awesome test harnesses. And, a focus on documentation as a core value.
Babel lets you define constants, enumerations, structures, and services. The Babel runtime libraries let you customize metrics, error logging, error mapping, and more. Check out the documentation to learn more.
The Babel runtime libraries allow you to separate your service implementation from any web framework sitting on top of it. This design is more flexible and allows you to use your core functionality in other contexts.
In addition to supporting multiple languages, Babel runs on Linux, Mac, and Windows.
- Documentation - learn about the Babel software
- Frequently Asked Questions - get answers to common questions
- Best Practices - understand how make the most of Babel
- Design Patterns - learn how to solve service design problems