Idempotency in REST APIs

Idempotence is sometimes a confusing concept, especially when you try to understand the academic definition. However, understanding what makes a REST API operation idempotent is simple with the concept introduced in this short, somewhat humorous look at Idempotency in Cows & REST APIs…

 

RESTExpress Overview and Tutorial

In my last post, Intro to REST (Revisited), as well as discussing the six constraints of the REST architectural style, the video discussed the background for the Java Rest Service Framework, RESTExpress and introduces a sample project.  The video below is part two of the presentation, where we dive in and create a real, working service suite using RESTExpress around a blogging system that uses MongoDB for its back-end store.  The reference implementation demo’d during the presentation is available on GitHub and supports linking, pagination, filtering and sorting of collection results returned (for blogs, entries, and comments).

This video goes into a bit of depth on how all that gets accomplished in your service suites with a minimum of coding.

[youtube http://youtu.be/hHDO6soGehc]

 

If you haven’t heard, RESTExpress is a lightweight micro-framework (along with some other micro-frameworks) that support rapid development of highly scalable, high performance REST services supporting JSON and XML payloads.  It is an active open source project that is gaining momentum.  You can get more information at the resources below:

Introducing RestExpress: Instant, High-Performance, RESTful Services in Java

RestExpress is the easiest way to create RESTful web services in Java. An extremely Lightweight, Fast, REST Engine and API for Java. Supports JSON and XML serialization automagically as well as ISO 8601 date formats. A thin wrapper on Netty IO HTTP handling, RestExpress lets you create extremely scalable, stand-alone REST web services rapidly.

RestExpress is the easiest way to create RESTful web services in Java. An extremely Lightweight, Fast, REST Engine and API for Java. Supports JSON and XML serialization automagically as well as ISO 8601 date formats. A thin wrapper on Netty IO HTTP handling, RestExpress lets you create extremely scalable, stand-alone REST web services rapidly.

It takes 5 minutes to get your first services up and running using the kickstart application and we’ve seen 15,000+ requests per second and 10,000 simultaneous connections on a single desktop box. Try accomplishing that with the competition!

Inspired by Ruby on Rails and Sinatra, RestExpress is designed as a micro-framework with sub-projects, Syntaxe, RepoExpress and OAuthExpress to provide domain/DTO validation, MongoDB persistence storage and OAuth authentication simply and easily.

Check it out (literally) at www.GitHub.com!

Interoperable, Fast Enterprise Messaging

Over the last few weeks, I’ve had the opportunity to consider various messaging frameworks. Being I’m a “Java guy” my bias has been JMS, of course. There are several interesting open source options in that space. Of particular interest to me is Apache’s ActiveMQ. I’ve had good luck with it and enjoyed it’s performance even when compared to high-buck options like Fiorano and Tibco.

As of late, however, because I’m working in a largely C# shop, language support is a new and interesting consideration. Additionally, performance and scalability via commodity hardware is increasingly important. So I’ve been shopping around for options. Yes, ActiveMQ supports C# via the NMS client. But what other options are out there, perhaps in non-Java languages? Erlang, for instance, which offers some compelling scalability opportunities…

Here’s what I’m looking at currently, which might be of interest to you:

  • Apache’s QPid – An AMQP messaging platform.
  • Zyre – An interesting RESTful enterprise messaging approach
  • OpenAMQ – Claiming 590,000 messages per second on a single broker maching (130,000 mps per client)
  • ZeroMQ – An extremely fast C++ AMQP platform, claiming 2.8 (8 byte) messages per second.
  • RabbitMQ – an Erlang AMQP implementation.

Stay tuned….