# Sunday, January 25, 2004

In preparation for the London Bloggers Dinner with Don Box and Chris Anderson on Monday (see the report of this dinner, and what went on at the pub afterwards), I thought I’d get up to speed and make some notes of the key points made in Don’s interview on the ServerSide.NET.  To my mind this is the best interview I've seen or read about Indigo.

I'm posting these notes mainly so that I can have them handy in SharpReader when I'm offline and in case others might find them useful.  You can see the interview and download the full transcript on the ServerSide.NET site.

What is Indigo? 

  • A connective tissue between programs.  It makes it simple for developers to put a message oriented façade on the edge of your application to allow easy communication with others.

Positioning Remoting and ASMX web services

  • The problem with .NET remoting was that even though it supported interfaces, it really worked best when both ends of the pipe shared code such as assemblies or DLLs to integrate.  Sharing types like this turns out hard to manage because you often don’t have control over the deployment versioning and testing at each end of the pipe.
  • ASMX Web Services (including WSE) are more flexible because they use WSDL and schema which is more adaptable to change than the OO style type interface used in remoting.  ASMX is proving more popular than remoting in the field because it is actually a simpler model and simplicity is a feature.
  • Developers should go down the path of integration using messaging because it is simpler and more flexible, but support for remoting won’t go away.
  • You don’t have to use XML Schemas and WSDL to describe structures and contracts, but that’s the practical way that everybody does it.
  • The problem with components was that they tried to do the right thing separating interface and implementation, but it was too easy to ‘leak’ object concepts and require the sharing of types.

Do components have a place in the world?  

  • Don argues that the world is simpler if you think about objects, which are great for programming software that gets integrated, tested and deployed, more or less as an atomic unit and services, which are the central abstraction for deployed, autonomous pieces of software.  Given this perspective he suggests there may not be a place for components.

What’s the difference between service-oriented programming and service oriented architecture?

  • SOA is the buzz word du jour, system message bus will probably be next, whereas service-oriented programming is more focussed on the reality of the code.
  • Service oriented programming is about four ideas:
  1. Boundaries are explicit.  In Indigo you have to place attributes on your code that you want publicly exposed
  2. Services are autonomous.  Indigo doesn’t assume you’ll deploy a whole system as a single unit.  Each service should be secure and reliable as a stand-alone unit.
  3. Share schema and contract, not class.  It’s too easy to mix up interfaces and implementation, so it’s a better idea to separate schema and contract into two distinct ideas.  Schemas are defined in XML Schema language, and contracts, which are message exchange patterns, are defined in WSDL.
  4. Compatibility based on Policy.  To know that services are compatible you have to care about other things than just the signature of the messages.  WS-Policy is supported in Indigo and provides a way to share this over the wire in an interoperable way.

Does Policy impose versioning restrictions?

  • Policy is similar to marker interfaces in Java or C#.  You have to have a stable name that is immutable that is decoupled from the actual signatures.  Both parties have to agree on the name and it has very strict version requirements.
  • WS-Policy provides a way to declare compatibility with any number of versions of a given policy assertion.  The logic engine is able to determine if party A’s assertion lines up with party B’s assertion.
  • In the PDC bits you can see the first message sent on the wire is a ‘get policy’ message.

Can policy be used to create versioning schemas?

  • There are three policy specs:
    • WS-Policy which is the XML form for writing a logic expression
    • WS-PolicyAttachment, which provides a way of taking those expressions and applying them to a particular domain
    • WS-PolicyAssertion which contains a small number of concrete assertions that plug into the expressions defined in WS-Policy.
  • WS-PolicyAssertion contains an assertion called Spec Version that can be used to determine compatibility at the naming level.  It’s looser than strict or nominal type equivalence that is used in C# and Java.  It provides some flexibility, not complete flexibility and Policy is used to do the version negotiation.

Are there situations where the Indigo approach doesn’t work well?

  • In future the service-oriented programming model may be a practical way of doing things like cross-process, cross-app-domain or even within a single exe.
  • The focus is making sure Indigo has a solid model that can be implemented and scale down well.  Objects took a ‘near’ metaphor and tried to stretch it out, Indigo is trying to take a ‘far’ metaphor and shrink it.  Indigo is striving to have very low performance costs within a single exe.

What are the performance optimizations being worked on now?

  • The team is very focused on make sure that the I/O implementation is as well tuned as possible.  They want to make sure we can get bytes in, in XML and other forms, in to and out of an app domain as fast as humanly possible. 
  • They want to make sure that it’s not tied to a specific protocol, such as HTTP.
  • The idea is ‘I create a message here, I need it to appear in your program as fast as possible’.
  • Performance is an important goal for the first release.

WSE and Indigo

  • WSE is the vehicle to give developers access to implementations of the WS-* protocols as quickly as possible.
  • The goal is still to integrate them into the .NET platform, but sometimes the platform has to ship before standards are set, which is why WSE will have a future post-Indigo.
  • Post-Indigo WSE may be used to track protocol evolution on top of the Indigo infrastructure rather than just the ASMX infrastructure.

Will Indigo do anything new at the wire level?

  • Indigo is about the software productization of ideas (such as the WS-* specs) rather than interesting new wire protocols.  For example, transactions on the wire will use WS-AtomicTransactions but within the service they are doing a lot to make transactions easier to use from managed code with extremely efficient implementations.
posted on Sunday, January 25, 2004 10:31:10 AM (GMT Standard Time, UTC+00:00)  #   
Related posts:
Office Server 2007: Can it help me write less code?
Server-side Excel: changing the face of financial apps?
Ray Ozzie: Services Disruption and the need for 'Client Server Service Synergy'
DDD3: Deadline for speaker submissions extended until Monday
DDD III on Sat 3 June: Call for Speakers!
I can see clearly now: NUnitAddin and NCoverBrowser
Tracked by:
"Roulette" (Roulette) [Trackback]
"valium" (valium) [Trackback]
"405f5e4b503d981c3e5d" (405f5e4b503d981c3e5d92386c35f766) [Trackback]
"cheap phentermine" (cheap phentermine) [Trackback]
"tramadol" (tramadol) [Trackback]
"buy phentermine no prescription" (buy phentermine no prescription) [Trackback]
"fioricet" (fioricet) [Trackback]
"buy fioricet" (buy fioricet) [Trackback]
http:// [Trackback]
"cialis" (cialis) [Trackback]
"sesso gratis" (sesso gratis) [Trackback]
"phentermine diet pills" (phentermine diet pills) [Trackback]
"tramadol" (tramadol) [Trackback]
"phentermine" (phentermine) [Trackback]
"tramadol" (tramadol) [Trackback]
"buy tramadol" (buy tramadol) [Trackback]
"buy fioricet" (buy fioricet) [Trackback]
"phentermine without prescription" (phentermine without prescription) [Trackback]
"fioricet" (fioricet) [Trackback]
"fioricet without prescription" (fioricet without prescription) [Trackback]
"fioricet prescription online" (fioricet prescription online) [Trackback]
"discount fioricet" (discount fioricet) [Trackback]
"buy cheap fioricet" (buy cheap fioricet) [Trackback]
"cheap fioricet" (cheap fioricet) [Trackback]
"tramadol hcl" (tramadol hcl) [Trackback]
"phentermine diet pills" (phentermine diet pills) [Trackback]
"buy cialis online" (buy cialis online) [Trackback]
"cheapest cialis" (cheapest cialis) [Trackback]
"levitra online" (levitra online) [Trackback]
"viagra" (viagra) [Trackback]
"ricetta" (ricetta) [Trackback]
"gazzetta dello sport" (gazzetta dello sport) [Trackback]
"corriere dello sport" (corriere dello sport) [Trackback]
"sport" (sport) [Trackback]
"last minute offerta viaggi" (last minute offerta viaggi) [Trackback]
"offerta viaggi last minute" (offerta viaggi last minute) [Trackback]
"viaggi maldive" (viaggi maldive) [Trackback]
"biglietto invito" (biglietto invito) [Trackback]
"biglietto invito compleanno" (biglietto invito compleanno) [Trackback]
"biglietto aeri" (biglietto aeri) [Trackback]
"sfondi calcio" (sfondi calcio) [Trackback]
"giochi online calcio" (giochi online calcio) [Trackback]
"amore incontro" (amore incontro) [Trackback]
"calcio scommessa" (calcio scommessa) [Trackback]
"incontro sex" (incontro sex) [Trackback]
"incontro on line" (incontro on line) [Trackback]
"incontro italia" (incontro italia) [Trackback]
"incontro adulto" (incontro adulto) [Trackback]
"incontro donna veneto" (incontro donna veneto) [Trackback]
"annuncio incontro italia" (annuncio incontro italia) [Trackback]
"incontro sesso" (incontro sesso) [Trackback]
"estrazione del lotto" (estrazione del lotto) [Trackback]
"medicina naturale" (medicina naturale) [Trackback]
"sesso anale" (sesso anale) [Trackback]
"sesso gratis" (sesso gratis) [Trackback]
"sesso animale" (sesso animale) [Trackback]
"webcam sesso" (webcam sesso) [Trackback]
"sesso" (sesso) [Trackback]
"grossista articolo regalo" (grossista articolo regalo) [Trackback]
"prenotazione albergo" (prenotazione albergo) [Trackback]
"musica classifiche" (musica classifiche) [Trackback]
"spartito musica classica" (spartito musica classica) [Trackback]
"prenotazione albergo roma" (prenotazione albergo roma) [Trackback]
"software musica" (software musica) [Trackback]
"prenotazione hotel parigi" (prenotazione hotel parigi) [Trackback]
"prenotazione albergo parigi" (prenotazione albergo parigi) [Trackback]
"prestito personale" (prestito personale) [Trackback]
"prenotazione hotel" (prenotazione hotel) [Trackback]
"prestito visa carta" (prestito visa carta) [Trackback]
"prestito finanziamento" (prestito finanziamento) [Trackback]
"collezione prestito personale" (collezione prestito personale) [Trackback]
"prestito personali" (prestito personali) [Trackback]
"prestito mutuo" (prestito mutuo) [Trackback]
"prestito personale online" (prestito personale online) [Trackback]
"idea regalo mamma" (idea regalo mamma) [Trackback]
"idea regalo" (idea regalo) [Trackback]
"idea regalo donna" (idea regalo donna) [Trackback]
"idea regalo uomo" (idea regalo uomo) [Trackback]
"regalo cani" (regalo cani) [Trackback]
"incontro adulto" (incontro adulto) [Trackback]
"Homeowner Insurance" (Homeowner Insurance) [Trackback]
"Baccarat" (Baccarat) [Trackback]
"House Insurance" (House Insurance) [Trackback]
"Home Insurance" (Home Insurance) [Trackback]
"Term Insurance" (Term Insurance) [Trackback]
"Homeowners Insurance" (Homeowners Insurance) [Trackback]
"Caribbean Poker" (Caribbean Poker) [Trackback]
"Insurance Homeowners" (Insurance Homeowners) [Trackback]
"cheap viagra" (cheap viagra) [Trackback]
"generic cialis" (generic cialis) [Trackback]
"taking viagra with cialis" (taking viagra with cialis) [Trackback]
"Discount phentermine." (Discount phentermine.) [Trackback]
"Cheap phentermine 37.5." (Get cheap phentermine online free delivery.) [Trackback]
"Buy hydrocodone." (Hydrocodone apap.) [Trackback]
"Drugs online cheap hydrocodone buy." (Where to buy hydrocodone online.) [Trackback]
"replica swiss rolex" (rolex replica) [Trackback]
"Buy cheap phentermine online." (Cheap phentermine.) [Trackback]
"Buy phentermine." (Phentermine.) [Trackback]
"Buy hydrocodone online." (Hydrocodone online.) [Trackback]
"Phentermine diet." (Phentermine diet pills.) [Trackback]
"Buy hydrocodone online." (Easy way to buy hydrocodone online.) [Trackback]
"Cheap phentermine." (Buy cheap phentermine online.) [Trackback]
"Will tramadol hcl test positive in drug testing." (Tramadol hcl 50 mg tablet.) [Trackback]