Monday, June 13, 2005

Metadata Soup: Models, Contracts & Types – Don Box

Don Box, surprisingly enough, wore the Microsoft speaker’s uniform and did not strip naked during his presentation.  I’ll leave it up to the reader to find links talking about the several times he’s done this in the past.  Search on “COM is Love”

Don didn’t really spend a lot of time talking about Indigo specifically.  He felt that Microsoft had learned a lot of lessons from COM and that they were in a good spot with Indigo (not the end goal, but in a better position).  He instead wanted to talk about Modeling.  Since Indigo has been given such a catchy acronym – HST (Hooking Shit Together), Don decided that Modeling needed it’s own acronym – WSD (Writing Shit Down).

Modeling is the process of representing process and integration ideals.  The struggle here is to balance the complexity of the real world with the more pristine simplicity of the model.

Meta – architectural quicksand.  Metadata is a model or representation of data, but in the end it is just data itself (check Sam Ruby’s blog for an excellent post about this).

Structure – the bottom of any modeling stack, it is an agreement on how to arrange or organize the model. 

Interpret – to translate or understand form.  Since structure itself has no semantics, you translate it or relate it to something you understand in order to understand the structure itself.

Data model – rule for structural representations.  An example of a data model is XML.  Another data model which, according to Don, is well understood but never written down as a data model is the simple type vs the things that are not simple types.  Consider the difference between atomic and non-atomic elements or dimple primitives vs groups of primitives.  An example of these groups of primitives would be an IDL array or struct, a VB variant safe-array.  Primitive types are types for which there is only one value which doesn’t change depending on how you look at it.  An integer value is a primitive type.  An array of primitive types will have several values which might be different based on which array position is examined.  Don had a demo of this difference written in IronPython.

A grammar or schema is comprised of rules for structuring and de-structuring data.

A domain specific language is comprised of a data model and an interpretation taken to code.

A repository is a provider of data.  Examples of repositories include databases, the file system, Active Directory (a repository of identity information), and VSS or other source code control systems.

A behavioral model is the representation of the behavior of an interaction or a contract.  Contracts are typically represented a C style function calls with inputs and outputs.  Adding WS-Policy adds the ability to bind symbols to nodes on the contract tree refining the contract.  For example, Don says he gets up at 9am and that he rarely responds to e-mail.  These policy refinements help others understand how to interact with him.

Process Model – a BPM builds rules for aggregating interactions to think about large numbers of interactions as a whole.  This is an orchestration, and BizTalk provides excellent management of orchestrations.

Conceptual models provide rules for relating terms and ideals.  This is a taxonomy and can be demonstrated by IS A and HAS A relationships.

Don pointed out a list of fallacies:

  • one representation fits all (this means that Don Box is saying Indigo will not work for every interaction)
  • Models are immutable (this was the problem with COM – the models DO get changed)
  • Models are authoritative (because they change, the model is out of date practically as soon as it is created)
  • interpretation terminates (bake some interpretation intelligence into the runtime – ex allow for changing addresses, transportation layers, security, etc (Indigo is great at this as it allows many changes through configuration)
  • Code is special (code is just data in the end)

Guidance from Don Box:

  • Write Shit Down!  XML is your friend.  Use it to write down everything – yow you expect things to behave and work.  If it’s not written down it doesn’t exist
  • Treat models like source code – use MSBuild and XSLT to enforce this.
  • SCC is your friend – put your models here!
  • Learn BizTalk Server – the BizTalk team is way ahead of their time with transformation as interpretation.
  • Learn the DSL toolkit!
  • Learn about Lisp or Scheme – both way ahead of their time back in the 70s solving the same problems we are solving today.
  • RDF Resource Description Framework – tuples and symbols.  Learn it!

More guidance from Don Box (less esoteric this time)

  • Indigo vs WSE2 vs WSE3 – when to use what.  Per D. Box, use the ASMX API.  Use WSE2 and map to Indigo when Indigo is released.  Otherwise, use WSE3 and don’t rewrite it to Indigo.
  • Don Box is not in favor of O/R Mappers (but I forgot why he said this)
  • A contract is a representation of ideals.  To manage contracts use WSDL and Code generation.
  • The future of .Net Remoting – remoting will continue to be supported but will not be the centerpiece of .Net communication
  • When it comes to a question about contract first or code first development, Don recommends that you define the contract ahead of time, but be aware that the contract will always be changing as you learn more about the project requirements.  Build a development process to let you automate the generation of these contracts so management is not an issue
  • Learn about taxonomies and ontologies.
  • When it comes to Indigo message sizes, use WS-RM to fragment messages and send several packets over the wire.  Stream large data chunks by base64 encoding or binary encoding the data.

— Matt Ranlett

posted with BlogJet

6/13/2005 11:12:56 AM (Eastern Standard Time, UTC-05:00)  #    Trackback
Tracked by:
"diet hoodia hoodia pill" (diet hoodia hoodia pill) [Trackback]
"online poker room" (online poker room) [Trackback]