locked
How does it compare to CCR?

    Question

  • Axum looks nice, definitely - but with so many "parallel" technologies showing up currently one needs to question some things. One thing I am wondering is how Axum compares to the CCR?
    Just by skimming over Axum's features it looks like there are a lot of similarities.

    Thanks.

    Christian Weyer | thinktecture | http://blogs.thinktecture.com/cweyer/
    Sunday, May 10, 2009 7:24 PM

Answers

  • Here's what we did:

    1. We took the CCR sources, changed most of the names, slightly refactored the interfaces and added a few things.
    2. We built it into Microsoft.Axum.Runtime.dll
    3. We built channel ports on top of CCR Ports (renamed OrderedInteractionPoints).
    4. We exposed OIP to programmers (see the WebFetcher sample).
    5. We built 'async,' 'sync,' and 'const' empty/full storage capabilites on some additions we made to CCR.
    6. The 'receive' expression utilizes a Receiver to hook into the source.

    One reason for the rename is that in the CTP, you really need to use the Axum capabilities (data-flow networks, receives, etc.) to program the local (within-domain) message-passing capabilites, and we didn't want to create another distribution of the CCR. If you want to use CCR, please get it separately, as it is not currently safe to use with Axum unless you go through the language capabilities. It is likewise not generally safe to create your own threads from within an Axum domain, and there is no need to.

    Niklas
    Monday, May 11, 2009 3:15 PM
    Moderator
  • Keen observation Christian. In fact, Axum uses portions of the CCR as its underlying message substrate.  This touches on the libraries vs. language question that we've been asking.  With Axum, you get compiler enforced isolation at runtime, which we personally think adds massive value to safety and productivity.

    What are your thoughts?

    Josh
    Sunday, May 10, 2009 9:59 PM

  • CCR is used as infrastructure for some of our constructs. I'll let you be the judge of how valuable the enhancements are, and that's exactly the kind of feedback we're looking for, but there's more than a few.


    Thanks,

    Niklas
    Tuesday, May 12, 2009 2:31 PM
    Moderator

All replies

  • Keen observation Christian. In fact, Axum uses portions of the CCR as its underlying message substrate.  This touches on the libraries vs. language question that we've been asking.  With Axum, you get compiler enforced isolation at runtime, which we personally think adds massive value to safety and productivity.

    What are your thoughts?

    Josh
    Sunday, May 10, 2009 9:59 PM
  • Hi Josh,

    aha, that starts to make sense :)
    What would be great of course is to have more insight and details on how Axum uses CCR (and what exactly) - I am trying to understand when to use what, you know...

    I can smell the love for Axum already - hm...

    Thanks.
    Christian Weyer | thinktecture | http://blogs.thinktecture.com/cweyer/
    Monday, May 11, 2009 7:41 AM
  • Here's what we did:

    1. We took the CCR sources, changed most of the names, slightly refactored the interfaces and added a few things.
    2. We built it into Microsoft.Axum.Runtime.dll
    3. We built channel ports on top of CCR Ports (renamed OrderedInteractionPoints).
    4. We exposed OIP to programmers (see the WebFetcher sample).
    5. We built 'async,' 'sync,' and 'const' empty/full storage capabilites on some additions we made to CCR.
    6. The 'receive' expression utilizes a Receiver to hook into the source.

    One reason for the rename is that in the CTP, you really need to use the Axum capabilities (data-flow networks, receives, etc.) to program the local (within-domain) message-passing capabilites, and we didn't want to create another distribution of the CCR. If you want to use CCR, please get it separately, as it is not currently safe to use with Axum unless you go through the language capabilities. It is likewise not generally safe to create your own threads from within an Axum domain, and there is no need to.

    Niklas
    Monday, May 11, 2009 3:15 PM
    Moderator
  • Here's what we did:

    1. We took the CCR sources, changed most of the names, slightly refactored the interfaces and added a few things.
    2. We built it into Microsoft.Axum.Runtime.dll
    3. We built channel ports on top of CCR Ports (renamed OrderedInteractionPoints).
    4. We exposed OIP to programmers (see the WebFetcher sample).
    5. We built 'async,' 'sync,' and 'const' empty/full storage capabilites on some additions we made to CCR.
    6. The 'receive' expression utilizes a Receiver to hook into the source.

    One reason for the rename is that in the CTP, you really need to use the Axum capabilities (data-flow networks, receives, etc.) to program the local (within-domain) message-passing capabilites, and we didn't want to create another distribution of the CCR. If you want to use CCR, please get it separately, as it is not currently safe to use with Axum unless you go through the language capabilities. It is likewise not generally safe to create your own threads from within an Axum domain, and there is no need to.

    Niklas

    Niklas,
    this practically means that Axum = CCR + few enhancements. Is that what you mean?

    Abel
    Tuesday, May 12, 2009 11:58 AM

  • CCR is used as infrastructure for some of our constructs. I'll let you be the judge of how valuable the enhancements are, and that's exactly the kind of feedback we're looking for, but there's more than a few.


    Thanks,

    Niklas
    Tuesday, May 12, 2009 2:31 PM
    Moderator