Dev Muse

"Any sufficiently advanced technology is indistinguishable from magic."  Arthur C. Clarke

Sunday, October 01, 2006

Lego Blocks

In a prior software incarnation I worked with Genetic Programming. Reflection reminds me vaguely of GP in the sense that the problem data influences the solution in an 'autonomous' fashion. Of course, with GP this is a 'random' influence whereas template code and attributes constructed for use with Reflection are most definitely not.

However both can assemble code or objects from bits and pieces - like Lego Blocks. GP by running large functional populations over many generations of evolution. Reflection by making runtime decisions, dynamically invoking and 'emitting' objects or code depending on the variation of data inputs. Fascinating.

What sorts of problems use reflection and how is it used?

Saturday, September 30, 2006

XML Everywhere

As you may imagine, in the service oriented, information integration and sharing business, data flows, work flows and business processes are where it's at. In this context, everything we touch relates in one way or another to XML. Often XML is used in conjunction with Web Services - but that's another topic.

XML is the currency in this world. Passed up and down layers and hierarchies of systems and code. Being complex and structured, XML is not to be looked upon simply as collections of 'data'. That is, XML implies 'objects'. And the objects we deal with are being passed around, serialized and deserialized, everywhere.

XML begats Objects and Objects begat XML. Up and down round and round... We end up doing some novel and downright cool stuff with this XML/object currency. One of the things that enables us to get funky with XML/objects is the idea of Reflection.

Reflection is all about MetaData. Data about data. Attributes are a way to add this metadata to your methods, classes, events, programs and other assembly targets. In a nutshell, Reflection allows a running program to discover its own metadata and modify its behaviour accordingly.

XML, client dependent data say, is passed around and instantiated as objects. These objects are then acted upon via reflection at runtime. Our client data has come alive! This is powerful stuff. More about relection later.


My employer, Visiphor, inhabits the Service Oriented Architecture (SOA) / Software Integration / Data Sharing space. We're a Microsoft shop that uses BizTalk, K2, InfoPath, custom solutions, and our own Enterprise Information Integration (EII) product called BIE. (for more about BIE or Briyante Integration Environment, see the Visiphor website) We have a product side and a consulting side. I work for the consulting side - Visiphor Consulting Services. (VCS)

One simple way of looking at the Data Sharing/Integration space is in terms of two development solutions at opposite ends of a spectrum as depicted above. A stateful EAI (Enterprise Application Integration) solution may use Biztalk, amongst other tools. And a 'real-time', stateless, purely EII (Enterprise Information Integration) solution using BIE.

Employ EII in situations where you need to query the 'latest' information from a network of database providers now and state is not critical. Example: perform a 'Federated Query' of several disparate law enforcement agencies for potential suspect information in real-time.

Use EAI in situations involving long running Business Processes that evolve over time and which necessitate the keeping of state. An EAI example might involve using BizTalk, web services, web applications and databases to maintain correct relationships, according to complex Business Rules, between different Health Care Providers that host related patient data on seperate systems.

EAI is usually the more heavyweight solution.

Thursday, September 28, 2006

Hello World

Some noteworthy items of interest to this software developer are to be found here.

A few Words to get the ball rolling; BizTalk, C#, .NET, SQL, Perl, Web Services, Federated Query, Mash-Up, Web 2.0.