Recommended: Sing it, brah! 5 fabulous songs for developers
JW's Top 5
Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs
Remember the heyday of Web services, when we were always just one specification away from perfect interoperability? Ultimately, that towering stack of protocols collapsed under its own weight. SOAP and XML generally are ridiculously verbose protocols that began with a commitment to simplicity and gave way to mind-numbing levels of complexity. Add to that the service repository mess: UDDI died an ignominious death, and OASIS's S-RAMP committee can't even create a website that isn't all broken links.
Interoperability Nirvana remains out of reach. What do we have instead? We have the registry called "the freaking Internet." Services are registered as URL handlers, and we execute against them. The XML transmission format was replaced by the format that your browser and mobile devices all learned to speak: JavaScript Object Notation. REST plus JSON over HTTP/HTTPS is the new Web services -- strangely, it's more interoperable without an explicit specification. Instead we make it work like the Internet, and DNS is your service registry.
[ Also on InfoWorld: 9 app dev projects you should cancel in 2013. | Download InfoWorld's PDF of tips and trends programmers need to know in our Developers' Survival Guide. | Keep up with the latest developer news with InfoWorld's Developer World newsletter. ]
We use JQuery/JavaScript/JSON for our UIs nowadays. We can even use Node.js for our business logic. Databases like Couchbase 2.0 and MongoDB speak JavaScript and JSON (or a direct derivative) natively. The beauty of this as an architecture is that we can drop entire layers of object binding and data transformation from our code.
Brought to you by the Internet
What does this look like? Consider your Order/Line items example.
Save or update the order:
POST http://infoworld.com/example/Order/123{
"firstName": "Andrew",
"middle": "C",
"lastName": "Oliver",
"address": {
"streetAddress": "345 West Main St, Suite 201",
"city": "Durham",
"state": "NC",
"postalCode": 27701
},
"LineItems": {
{
"type": "widget",
"sku": "123-456"
},
{
"type": "widget",
"number": "452-123"
}
}}
Replace the line items of the order:
PUT http://infoworld/example/Order/123/LineItems{
{
"type": "widgetTypeA",
"sku": "123-456"
},
{
"type": "widgetTypeB",
"number": "452-123"
}
}
Delete the order:
DELETE http://infoworld.com/example/Order/123
Get the order:
GET http://infoworld/example/Order/123
Security in a RESTful world
As Oracle will tell you, security isn't really important, and the best way to handle it is by sticking your head in the sand and making people wonder if you are the corporate equivalent
to Grandpa from "The Simpsons." However, if you're one of those young whippersnappers who care about preventing other people
from stealing your stuff, you'll want to secure those RESTful Web services. Security is simple with RESTful Web services.
Since complexity tends to result in complex breakages, this is a good thing ... mostly.