InfoQ Homepage Design Content on InfoQ
-
Interview and Book Excerpt: Thomas Erl's SOA Design Patterns
Today, InfoQ publishes an excerpt from Thomas Erl’s newest book, SOA Design Patterns, and used the opportunity to interview the author. Topics covered include the role of a patterns catalog, differences between service-orientation, SOA, and Web services, and the current state of the SOA world.
-
Workflow Orchestration Using Spring AOP and AspectJ
This article demonstrates how to build and orchestrate highly configurable and extensible yet light-weight embedded process flow using Aspect Oriented Programming (AOP) techniques. The current examples are based on Spring AOP and Aspect J, however other AOP techniques could be used to accomplish the same results.
-
Describing RESTful Applications
If servers control their own namespace without a fixed resource hierarchy, how do clients, and more importantly client developers, get to learn or discover URIs of resources? In a new article, Subbu Allamaraju discusses how to describe a RESTful API, focusing on using hypermedia instead of an out-of-band description format such as WADL or WSDL 2.0.
-
Colors and the UI
In this article, Dr. Tobias Komischke explains how colors used in a GUI can influence our interaction with a computer and offers advice on using the appropriate colors for the interface.
-
Composite Oriented Programming with Qi4j
The goal of modeling domain concepts through objects set by OOP has for a long time been handled in insufficient ways. In this article we introduce the concept of Composite Oriented Programming, and show how it avoids the issues with OOP and reignites the hope of being able to compose domain models with reusable pieces.
-
How to GET a Cup of Coffee
In this article, Jim Webber, Savas Parastatidis and Ian Robinson show how to drive an application's flow through the use of hypermedia in a RESTful application, using the well-known example from Gregor Hohpe's "Starbucks does not use Two-Phase-Commit" to illustrate how the Web's concepts can be used for integration purposes.
-
Paradigm based Polyglot Programming
Have you ever wondered why people talk about having "the right language for the right job"? Or why people talk about using more languages within the same system? Sadek Drobi explains why you should consider mixing languages within your system, how to think and what to consider.
-
Service-Oriented Development with Consumer-Driven Contracts
In this article, Ian Robinson discusses how "consumer-driven contracts", in the form of "stories for services" and unit tests exchanged between service development streams, can strengthen the service-oriented development lifecycle. In contrast to contracts defined from the POV of the provider, consumer-driven contracts result from combining the demands of all known service consumers.
-
Domain-Driven Design in an Evolving Architecture
Mat Wall and Nik Silver explain how their has been using Domain-Driven Design in an evolving and Agile environment, at high traffic news site guardian.co.uk.
-
Debunking Common Refactoring Misconceptions
In comparison to Java, an emphasis on continuous refactoring is still relatively new in .NET. Besides having few ardent proponents, many myths linger around what refactoring really is and how it applies to the development process in general. Danijel Arsenovski, author of Professional Refactoring in Visual Basic, attempts to dispel some of these myths.
-
REST Anti-Patterns
In this article, Stefan Tilkov explains some of the most common anti-patterns found in applications that claim to follow a "RESTful" design and suggests ways to avoid them: tunneling everything through GET or POST, ignoring caching, response codes, misusing cookies, forgetting hypermedia and MIME types, and breaking self-descriptiveness.
-
Nate Kohari on Releasing Ninject 1.0
Ninject is touted as a lightning-fast, ultra-lightweight dependency injector for .NET applications. Helping developers split applications into a collection of loosely-coupled, highly-cohesive pieces, and then glue them back together in a flexible manner. Using Ninject to support your software's architecture, your code will become easier to write, reuse, test, and modify.