Announcing CTP2 of Microsoft project code name "Velocity"


Today we are announcing CTP2 of Microsoft Project Code Name Velocity. Please download the CTP2 bits here. This entry will highlight what’s new with CTP2 and a follow-up request for feedback on what you would like to see in the product as we finalize on V1.


 


What’s New with CTP2?


 


CTP2 includes several new enhancements including High Availability, Performance improvements, PowerShell integration, Additional Configuration Store options and native 64 bit support.




  1. High Availability: Starting in CTP2, “Velocity” supports continuous availability of cached data by storing copies of that data on separate cache hosts. By using high availability enabled on a multi-server cluster, your application can retrieve its cached data even if a cache server fails. Because the high availability feature is managed by the cache cluster, no code changes in your application are required to take advantage of it.  
     


  2. Performance and Stress Enhancements: In CTP2 we spent substantial effort on improving the Latency and Thruput of the system as well as the stress and uptime requirements of the distributed cache. The success of a caching product is defined inherently by its performance and stress capabilities and we will continue on enhancing our exit goals as we move towards V1 of the product.
     


  3. PowerShell Integration: PowerShell is now the exclusive management tool for “Velocity.” With more than 130 standard command line tools, this new administration-focused scripting language helps IT professionals achieve more control and productivity. In addition to the standard command line tools that come with PowerShell, “Velocity” provides additional commands for managing your distributed cache environment.
     


  4. New Configuration Options: “Velocity” now offers many options for specifying and storing the configuration details used by the cache cluster and client application. Cache-based applications have the option of specifying configuration information programmatically or using an application configuration file. You now have two additional options available for storing cluster details. In addition to XML, cluster configuration settings can also be stored in a SQL Server Compact data file or a SQL Server database.  You can choose the option that best meets  the needs of your application and IT infrastructure.
     


  5. 64-Bit Support: There is now a 64-bit version of the “Velocity” cache service for x64-based computers. Due to memory limitations in 32-bit Windows operating systems, each 32-bit “Velocity” process can only support 2GB of memory. But with 64-bit “Velocity” on an x64-based computer, each process can use almost all available memory for caching data.
     

Roadmap to V1


 


We have heard your feedback from CTP1 and incorporated many of the requests into CTP2. We have a very short list of new features which we are looking at including for V1 and focus exclusively on performance, stress exit criteria and product fundamentals such as stability, reliability and diagnosability  of the product. The tentative list of features for V1 include




  1. Notifications


  2. Read Thru/Write Behind Callbacks on CacheItem miss/update


  3. Secure Access to Named Caches


  4. Cache Get/Put APIs with multiple objects


  5. Stability, Reliability and Diagnosability Improvements

We would like you to try it and give us feedback. We are waiting to hear from you.


 


Seshu Adunuthula
Development Manager


Comments (15)

  1. Though I like this project for a number of reasons, there has been very less logging or usage on this

  2. MichaelGG says:

    Hey, awesome stuff. We just started a new project that needs a distributed memory system; so hopefully we’ll have feedback soon.

  3. MichaelGG says:

    After looking at the API, my only question is: Could there be typed caches? Like GetCache<SomeType>("name")? Then we could get strongly typed items out, instead of having casts. I suppose it’s easy enough to add ourselves on top.

  4. MichaelGG says:

    Oh, and one more thing. It’d be great to have a "AtomicUpdate" method, similar to the Interlocked methods. So we could do "Cache.Atomic.Increment("totalhits")" rather than having to lock and so on?

    It’d be even cooler if we could remote an Expression<T> to do an atomic update:

    Expression<Func<int,int>> updater = i => i + 10;

    Cache.Atomic.Update("someint", updater);

    (I know there’s lots of limitations on this kind of approach.)

  5. TMan78 says:

    I had CTP1 installed for about a month and was using Velocity successfully as a SessionStoreProvider.  Today I installed CTP2 (after uninstalling CTP1) and can no longer get my project to run.  I am getting a web.config error.

    Parser Error Message: Unable to cast object of type ‘System.Configuration.DefaultSection’ to type ‘System.Data.Caching.DCacheClientSection’.

    Line 51:         <add name="SessionStoreProvider" type="System.Data.Caching.SessionStoreProvider, ClientLibrary"/>

    Any suggestions?  I re-added the proper references and went back to the blog post about how to modify web.config file to add the SessionStoreProvider.

    Here is the my whole config file.

    <configuration>

     <configSections>

       <section name="dcacheClient" type=" System.Configuration.IgnoreSectionHandler" allowLocation="true" allowDefinition="Everywhere"/>

     </configSections>

     <appSettings/>

     <connectionStrings/>

     <dcacheClient deployment="simple" localCache="false">

       <hosts>

         <!–List of hosts –>

         <host name="BLAH620" cachePort="22233" cacheHostName="DistributedCacheService"/>

       </hosts>

     </dcacheClient>

    <system.web>

             <httpRuntime enableVersionHeader="false" />

             <compilation debug="true"/>

             <authentication mode="Windows"/>

             <sessionState  mode="Custom" customProvider="SessionStoreProvider">

               <providers>

                 <add name="SessionStoreProvider" type="System.Data.Caching.SessionStoreProvider, ClientLibrary"/>

               </providers>

             </sessionState>

          </system.web>

    </configuration>

  6. I am right now in Microsoft Project “Velocity” talk in PDC2008 by Muralidhar Krishnaprasad. Microsoft

  7. PaulJones says:

    Great news that Velocity has announced its CTP2 and plans for V1. It was about time that Microsoft jumped into the distributed caching foray. Hopefully more and more people would become aware of the benefits that a distributed cache brings. That is good for the overall industry and would help others to spread the word around.

    Cheers,

    Paul Jones.

  8. dayashenoy says:

    Hi,

    we are planning to implement Distributed Cache option for our WCF based web service base application.

    we evaluated a couple of other out-of-box products which are available in market (scaleout/ncache etc).

    now sine ms came up with velocity ctp-2, i am trying to see if we can use this. i have installed ctp2 in 2 different machines. now i am not able to join the 2 clusters and form a distributed cache.

    can you please help me in finding how i can configure velocity to use the same cache which are distributed across 2 different hosts?.

    i am getting some errors like

    Start-CacheCluster : Cannot open Service Control Manager on computer ‘DESKTOP-2’. This operation might require other privileges.

    At line:1 char:18

    Help highly appreciated

    best regards

    Daya

  9. BenTaylorUK says:

    Congratulations on shipping CTP2.

    We are considering Velocity for a project that will ship late next year (2009).  Please can you tell me (here or on email) if Velocity will be a free or paid product, the ship date, and if there is currently a go-live license (just in case we bring the date forward 😉

    Thx.

  10. Vitaliy Liptchinsky says:

    Hello,

    I’ve noticed one disadvantage in CTP2:

    It is not possible to host your cache service in-proc and make it more tightly integrated with custom application server.

    Let me explain:

    Currently you can communicate with cache servers only via TCP/IP. It is ok, but what if I would like to host cache server in my application and communicate with it in-process. It’s ok that cache server still need to use TCP/IP to coordinate their work, but having each such server in-proc would increase performance in number of scenarios.

    Why cache client/cache server communication is not done over WCF with ability to system adminstrators to configure protocol etc.? I believe it is well-tuned over TCP/IP but in the same time you could well-tune it over WCF (for instance provide custom message format to avoid SOAP overhead)?

  11. sugupta00 says:

    One feature that I would  make velocity even better is transactions support.

  12. Bacha says:

    Hi, guys!

    Getting exception when trying to Remove() non-existing item from cache.

    Don’t think it this is common behaviour. It’s better to have bool Remove() method.

    Also,

    Cache["non-existing-item"] = null

    throws the same error, which is bad for me.

    Thanks in advance and Happy New Year! 🙂

    EXCEPTION text:

    System.Data.Caching.CacheException : ErrorCode<ERRCA0008>:Cache::Remove : Key referred to does not exist. Create objects based on a key to fix the error.

  13. foldip says:

    Do you have any roadmap? I’d like to use it in production system this year, but cannot start planning without roadmap.

    Thank you.

  14. mpraju says:

    I agree with foldip above. I would love to use this on my production system but can only do so with V1. What are the tentative time-lines ?

    Thank You

  15. Here is a collection random notes and links for Velocity. &#160; Release Schedule: CTP1: Released. CTP2