Showing posts with label Volta. Show all posts
Showing posts with label Volta. Show all posts

Monday, January 25, 2010

Windows Azure and Cloud Computing Posts for 1/25/2010+

Windows Azure, SQL Azure Database and related cloud computing topics now appear in this weekly series.

 
Note: This post is updated daily or more frequently, depending on the availability of new articles in the following sections:

To use the above links, first click the post’s title to display the single article you want to navigate.

Cloud Computing with the Windows Azure Platform published 9/21/2009. Order today from Amazon or Barnes & Noble (in stock.)

Read the detailed TOC here (PDF) and download the sample code here.

Discuss the book on its WROX P2P Forum.

See a short-form TOC, get links to live Azure sample projects, and read a detailed TOC of electronic-only chapters 12 and 13 here.

Wrox’s Web site manager posted on 9/29/2009 a lengthy excerpt from Chapter 4, “Scaling Azure Table and Blob Storage” here.

You can now download and save the following two online-only chapters in Microsoft Office Word 2003 *.doc format by FTP:

  • Chapter 12: “Managing SQL Azure Accounts, Databases, and DataHubs*”
  • Chapter 13: “Exploiting SQL Azure Database's Relational Features”

HTTP downloads of the two chapters are available from the book's Code Download page; these chapters will be updated for the November CTP in January 2010. 
* Content for managing DataHubs will be added as Microsoft releases more details on data synchronization services for SQL Azure and Windows Azure.

Off-Topic: OakLeaf Blog Joins Technorati’s “Top 100 InfoTech” List on 10/24/2009.

Azure Blob, Table and Queue Services

Ryan Dunn reviews Clumsy Leaf Software’s CloudExplorer in a Neat Windows Azure Storage Tool post of 1/25/2010:

I love elegant software.  I knew about CloudXplorer from Clumsy Leaf for some time, but I hadn't used it for awhile because the Windows Azure MMC and MyAzureStorage.com have been all I need for storage for awhile.  Also, I have a private tool that I wrote awhile back to generate Shared Access signatures for files I want to share.

I decided to check out the progress on this tool and noticed in the change log that support for Shared Access signatures is now included.  Nice!  So far, this is the only tool* that I have seen handle Shared Access signatures in such an elegant and complete manner.  Nicely done!

Definitely a recommended tool to keep on your shortlist.

Christofer Löf’s Stubs with “ActiveRecord for Azure” post of 1/25/2010 describes “how to substitute the ‘cloud aware’ DataServiceContext with an in-memory context, allowing you to unit test your applications without accessing Windows Azure Table Storage:”

In a previous post I showed how to do basic CRUD operations with my sample ActiveRecord implementation for Windows Azure Tables. The attentive reader probably noticed my use of ASP.NET MVC and static methods on the entity for operations like Find and Delete. Most of the times statics like this are bad when it comes to testability, because they're hard to stub out. But just like ASP.NET MVC - "ActiveRecord for Azure" was designed with testing in mind.

If we have a look on the test for the Create action, it first setups the Task entity for testing by calling its static Setup(int) method. By calling Setup it will use a local, in memory, repository and populate it with the given number of entities. …

Cristofer continues with code snippet examples and notes:

… The above examples are available in the download below.

The complete “ActiveRecord for Azure” sample source is available here.

Jerry Huang asks Why Back Up Google Docs To Windows Azure Storage? and answers “Maybe because I need the peace of mind that I can access it the moment I need to” in this 1/25/2010 post:

If I have documents sitting in a cloud storage such as Google Docs, why do I need to back it up to a different cloud storage such as Azure Storage?

Maybe because I need the peace of mind that I can access it the moment I need to.

Or in some countries, access to one may be blocked such as in China for Google Docs and Google Picasa. Or maybe some days, one may go down as part of the cloud computing growing pain. Anyway, it is a good practice to back up.

This article will show you how to backup your Google Docs files on a daily basis to another cloud storage.

First you need to install Gladinet Cloud Desktop and map in your Google Docs and other cloud storages you have.

In the following picture, I have Azure Storage, Amazon S3, a FTP Server and Google Docs all mapped in the Gladinet drive. (I have Synaptic Storage too but it is not configured yet)

image

From the System tray menu, you can open Create Google Docs Backup Task.

image

Jerry, who is the founder of Gladinet, continues with a step-by-step tutorial for the process.

<Return to section navigation list> 

SQL Azure Database (SADB, formerly SDS and SSDS)

Liam Cavanagh describes Hilton Giesenow’s second Webcast about SQL Azure Data Sync in a How to Synchronize from SQL Azure to SQL Server using Visual Basic post of 1/25/2010:

In part 2 of Hilton Giesenow's webcast series "How Do I: Integrate an Existing Application with SQL Azure?", he walks through the process of adding the synchronization components to a new VB.NET application and executes  synchronization between a SQL Server and SQL Azure database that had previously been created using the "SQL Azure Data Sync Tool for SQL Server" (part of SQL Azure Data Sync) in about 10 lines of code.  He also shows how you can get access to events like conflicts and sync statistics (like # of rows uploaded and downloaded) to get you started exteding your sync executable.

Hilton offers this description of his Webcast:

In this follow-on video, we expand on what we set up in part 1 to use the Microsoft Sync Framework libraries and providers from our .Net code. This allows us to embed the synchronisation capabilities into our applications and hook into the various available events.

Brent Ozar’s  SQL Azure Frequently Asked Questions post of 1/25/2010 asks and answers the following questions:

    1. What is SQL Azure?
    2. How does SQL Azure pricing compare to SQL Server costs?
    3. Why does SQL Azure have a 10GB limit?
    4. How can I load balance SQL Azure or do cross-database joins?
    5. How do I handle the SQL Azure backup process?
    6. How good is SQL Azure performance?
    7. Can I use SQL Azure as a backup with log shipping or database mirroring?
    8. How do I run Microsoft SQL Azure on commodity hardware?
    9. What SQL Azure plans do MSDN subscribers get for free?
    10. Got a SQL Azure question I didn’t answer?

Be sure to read the comments, too.

Nick Hodge reports that “Using the open source jTDS JDBC Driver, you can connect to SQL Azure” in his JDBC to SQL Azure post of 1/25/2009:

Driver class name: net.sourceforge.jtds.jdbc.Driver

Database URL: jdbc:jtds:sqlserver://<server>.database.windows.net:1433/<databasename>; ssl=require

Username: (in the form username@server from SQL Azure)

The key thing is the “ssl=require” placed at the end of the connection string. SQL Azure SSL encrypts the data on the wire. Which is rather a good thing.
Hope this saves someone some time.

<Return to section navigation list> 

AppFabric: Access Control, Service Bus and Workflow

Brian Loesgen continues his Azure App Fabric series with Azure Integration - Part 2: Sending a Message from BizTalk to Azure’s AppFabric ServiceBus with a Dynamic Send Port post of 1/24/2010:

In a previous post, I wrote about how to extend the reach of an ESB on-ramp to Windows Azure platform AppFabric ServiceBus. This same technique also works for any BizTalk receive location, as what makes it an ESB on-ramp is the presence of a pipeline that includes some of the itinerary selection and processing components from the ESB Toolkit. In that post (and accompanying video) I showed how to use InfoPath as a client to submit the message to the ServiceBus, which subsequently got relayed down and into a SharePoint-based ESB-driven BizTalk-powered workflow.

In this and the next post, we’ll look at how to send messages in the other direction, and in this post, I’ll show how to do it using a BizTalk dynamic send port. If you’re used dynamic send ports with BizTalk, you’ll know they’re a powerful construct that let you programmatically sent endpoint configuration information that will subsequently be provided to a send adapter. This is a great way to have a single outbound port that can deliver messages to a variety of endpoints. And, dynamic ports are a key concept behind ESB off-ramps, but more on that later.

The video to go along with this post can be found here. …

<Return to section navigation list>

Live Windows Azure Apps, Tools and Test Harnesses

Ryan Dunn’s Supporting Basic Auth Proxies post of 1/25/2010 provides a workaround for problems with basic authorization proxies and Azure utilities:

A few customers have asked how they can use tools like wazt, Windows Azure MMC, the Azure Cmdlets, etc. when they are behind proxies at work that require basic authentication.  The tools themselves don't directly support this type of proxy.  What we are doing is simply relying on the fact that the underlying HttpRequest object will pick up your IE's default proxy configuration.  Most of the time, this just works.

However, if you are in an environment where you are prompted for your username and password, you might be on a basic auth proxy and the tools might not work.  To work around this, you can actually implement a very simple proxy handler yourself and inject it into the application.

Ryan shows an example of a workaround for wazt.

My Volta Redux by Erik Meijer’s Cloud Data Programmability Team and Reactive Extensions for .NET (Rx) post of 1/24/2010 describes “Volta’s New Lease on Life with the Cloud Programmability Team”:

The Erik Meijer and Team: Cloud Data Programmability - Connecting the Distributed Dots video (00:33:32) is the most recent Channel9 segment about the transmogrification of Volta into the Cloud Programmability team. The team leverages the Reactive Extensions (Rx) for .NET to enable asynchronous communication between clients, middle tiers, and data sources, such as Windows Azure and SQL Azure:

“Rx is a library for composing asynchronous and event-based programs using observable collections.

“The ‘A’ in ‘AJAX’ stands for asynchronous, and indeed modern Web-based and Cloud-based applications are fundamentally asynchronous. In fact, Silverlight bans all blocking networking and threading operations. Asynchronous programming is by no means restricted to Web and Cloud scenarios, however. Traditional desktop applications also have to maintain responsiveness in the face of long latency IO operations and other expensive background tasks.

“Another common attribute of interactive applications, whether Web/Cloud or client-based, is that they are event-driven. The user interacts with the application via a GUI that receives event streams asynchronously from the mouse, keyboard, and other inputs.

“Rx is a superset of the standard LINQ sequence operators that exposes asynchronous and event-based computations as push-based, observable collections via the new .NET 4.0 interfaces IObservable<T> and IObserver<T>.  These are the mathematical dual of the familiar IEnumerable<T> and IEnumerator<T> interfaces for pull-based, enumerable collections in the .NET Framework.

“The IEnumerable<T> and IEnumerator<T> interfaces allow developers to create reusable abstractions to consume and transform values from a wide range of concrete enumerable collections such as arrays, lists, database tables, and XML documents. Similarly, Rx allows programmers to glue together complex event processing and asynchronous computations using LINQ queries over observable collections such as .NET events and APM-based computations, PFx concurrent Task<T>,  the Windows 7 Sensor and Location APIs, SQL StreamInsight temporal event streams, F# first-class events, and async workflows.”

The post includes numerous links to earlier OakLeaf System articles about Erik Meijer’s Volta project.

Dave Thompson explains how to solve problems Using WCF Tester with Azure by applying a hotfix in this 1/25/2010 post:

If you’ve tried to use the wcf testing tool WcfTestClient.exe (\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\WcfTestClient.exe)

wcftester

which comes with Visual Studio on an Azure Project, you will probably have come across this problem…

As the WCF service runs locally or in the cloud hosted in Azure you will notice that the addresses are different between what is in the address bar in IE and the address given to run SvcUtil against… this is because Azure runs a load balancer and the url in the address bar is actually the load balancer’s address and not the services address.

wcfAzure

This is a known bug in WCF, and currently there is a hotfix for this issue, which will make developing and testing Azure a lot easier.

Dave goes on with a description of how to obtain and apply the hotfix.

Darren Neimke explains How to build an Azure Cloud Service package as part of your build process in this 1/25/2010 post:

I explained in a previous blog entry how important, and ultimately simple, it is to create a deployment package for SharePoint as a part of your Continuous Integration process and in this post I’d like to show you how to produce deployment packages for Windows Azure.  This article is laid out in the following sections:

  • Deploying to Windows Azure
  • The CSPack Command Line Tool
  • Automating the Creation of your deployment package …

Darren continues with a detailed explanation of how to use the Cspack.exe command line tool to automate creation of a deployment package.

Tudor Cret begins his three-part tutorial series with Behind ciripescu.ro, a Windows Azure cloud application (part 1) on 1/25/2010:

… The purpose of the current post is to make a summary of what is behind ciripescu.ro a simple micro-blogging application developed around the concept of twitter. This platform can be extended and customized for any domain.     

So our intention is to develop a simple one-way communication and content delivery network using Windows Azure. Let’s define some entities:     

  • User -  of course we can do nothing without usernames, passwords and  emails J Additional info can be whatever you want, just like an avatar, full name etc.
  • Cirip – defines an entry of maximum 255 characters, visible to everybody. Users content is delivered through this entity
  • Private Message – a private message between two users
  • Invitation – represents an invitation a user can send to invite more other users to use the application. 

I won’t enter in more details about what the application does, you can watch it in action (at least until the end of January L) at www.ciripescu.ro [in Romanian.] For the next sections I will concentrate on how the application does all its functionalities. Configurations and deployment aren’t so interesting since they are exposed to any hello world azure application video or tutorial. … 

Dom Green shows you when you’re Paying or Not Paying? for Windows Azure projects in this 1/24/2010 post:

I have recently been asked a number of questions both internally and from customers about when you will be billed for Azure usage.

Dominic Green - azurepayment

As Eric Nelson’s recent post describes, if you suspend a service you will still be paying this is due to the fact you will still have your application deployed on the server ready to start again. With your application utilizing the server others will not be able to provision its usage.

When you select delete you will stop paying as you will no longer have servers provisioned for your application and the recourses will be freed up for others to use.

The Innov8showcase site asks Want to know how Windows Azure is Feeling? on 1/25/2010 and offers this answer:

If you want to know the health status of Windows Azure Platform services in each of our data centers at any time take a look at the Windows Azure Platform dashboard at http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx.

image

Lori MacVittie posits “Cloud computing and content delivery networks (CDN) are both good ways to assist in improving capacity in the face of sudden, high demand for specific content but require preparation and incur operational and often capital expenditures. How about an option that’s free, instead?” in her How To Use CoralCDN On-Demand to Keep Your Site Available. For Free post of 1/25/2010:

Connection_FailedWhile it’s certainly in the best interests of every organization to have a well-thought out application delivery strategy for addressing the various events that can result in downtime for web applications it may be that once in a while a simple, tactical solution will suffice. Even if you’re load balancing already (and you are, of course, aren’t you?) and employing optimization techniques like TCP multiplexing you may find that there are sudden spikes in traffic or maintenance windows during which you simply can’t keep your site available without making a capital investment in more hardware.

Yes, you could certainly use cloud computing to solve the problem, but though it may not be a capital investment it’s still an operational expenditure and thus it incurs costs. Those costs are not only incurred in the event that you need it, but in the time and effort required to prepare and deploy the application(s) in question for that environment. …

Return to section navigation list> 

Windows Azure Infrastructure

Guy Barrette dispels Azure account creation confusion for MSDN suscribers in his 1/25/2010 post:

I had an Azure CTP account and I received an email from Microsoft saying that my account was about to expire on January 31, 2010 and that I’ll need to “upgrade” my account.  A link in the email pointed to this pricing page:
http://www.microsoft.com/windowsazure/offers/

If you just want to kick tires and don’t want to invest too much, Microsoft has an introductory special that has enough “hours” to do some basic testing for free. 

AzureAccountSetup1

Sweet but I have an MSDN Premium subscription with some Azure hours included as benefits, I should be able to link the account that I just created to my MSDN subscription, right?  Well, no.  I haven’t found a way to do that so far.  So how do you create an Azure account using your MSDN subscription benefits?  Simple, you need to log on the MSDN Website and click on the “My Account” tab.  From there, you can create an Azure account that will be linked to your MSDN subscription.

AzureAccountSetup2

Guy is Microsoft’s Regional Director for Montreal, PQ, Canada. (My How to Create and Activate a New Windows Azure and SQL Azure Account or Upgrade an Existing Account post of 1/7/2010 offers a more detailed explanation.)

Chris Hoff (@Beaker) expounds on the private-cloud and hybrid-cloud vs. public-cloud controversy in his Incomplete Thought: Batteries – The Private Cloud Equivalent Of Electrical Utility… post of 1/24/2010:

While I think Nick Carr’s power generation utility analogy was a fantastic discussion catalyst for the usefulness of a utility model, it is abused to extremes and constrains what might ordinarily be more open-minded debate on the present and future of computing.

This is a debate that continues to rise every few days on Twitter and the Blogosphere, fueled mostly by what can only be described from either side of the argument as a mixture of ideology, dogma, passionate opinion, misunderstood perspective and a squinty-eyed mistrust of agendas.

It’s all a bit silly, really, as both Public and Private Cloud have their place; when, for how long and for whom is really at the heart of the issue.

The notion that the only way “true” benefits can be realized from Cloud Computing are from massively-scaled public utilities and that Private Clouds (your definition will likely differ) are simply a way of IT making excuses for the past while trying to hold on to the present, simply limits the conversation and causes friction rather than reduces it.  I believe that a hybrid model will prevail, as it always has.  There are many reasons for this. I’ve talked about them a lot.

This got me thinking about why and here’s my goofy thought for consideration of the “value” and “utility” of Private Cloud:

If the power utility “grid” represents Public Cloud, then perhaps batteries are a reasonable equivalent for Private Cloud.

I’m not going to explain this analogy in full yet, but wonder if it makes any sense to you.  I’d enjoy your thoughts on what you think I’m referring to.

Geva Perry’s Integration-as-a-Service Heats Up post of 1/25/2010 observes:

Interesting to see things heat up in the emerging category of integration-as-a-service, also know as cloud integration or SaaS integration.

SnapLogic logo

Praneal Narayan at SnapLogic recently sent me a note about a developer contest they are running (more on that below). SnapLogic is a recent entrant into the field, competing with Boomi and Cast Iron Systems. In October, SnapLogic announced a $2.3 million investment from Andreessen Horowitz and others and that Informatice founder Gaurav Dhillon had joined as CEO.

Clearly in the integration game one of the key success factors is coverage -- or how many end-points can the service talk to out-of-the-box. Alternatively, an integration-as-a-service provider can allow customers and 3rd-party vendors to create their own integration points. And that's what the SnapLogic developer competition is all about.

The company created an app store, they call it SnapStore, which allows third-party developers and companies to sell their own integrations (which they call "Snaps") to various platforms. The developer competition offers each developer who submits a Snap a Kindle, and the winner of the competition a $5,000 grand prize.

Udayan Bannerjee delivers “A Platform Comparison” in his Cloud Economics – Amazon, Microsoft, Google Compared post of 1/25/2010:

Any new technology adoption happens because of one of the three reasons:

  1. Capability: It allows us to do something which was not feasible earlier
  2. Convenience: It simplifies
  3. Cost: It significantly reduces cost of doing something

What is our expectation from cloud computing? As I had stated earlier, it is all about cost saving … (1) through elastic capacity and (2) through economy of scale. So, for any CIO who is interested in moving to cloud, it is very important to understand what the cost elements are for different cloud solutions. I am going to look at 3 platforms: Amazon EC2, Google App Engine and Microsoft Azure. They are sufficiently different from each other and each of these companies is following a different cloud strategy – so we need to understand their pricing model.

Quick Read: Market forces seem to have ensured that all the prices are similar – for quick rule of thumb calculation to look at viability, use the following numbers irrespective of the provider. You will not go too much off the mark.

    • Base machine = $0.1 per hour (for 1.5 GHz Intel Processor)
    • Storage = $0.15 per GB per month
    • I/O = $0.01 for 1,000 write and $0.001 for 1,000 read
    • Bandwidth = $0.1 per GB for incoming traffic and $0.15 per GB for outgoing traffic

However, if you have time, you can go through the detail analysis given …

<Return to section navigation list> 

Cloud Security and Governance

Dom Green recommends WCF Hot Fix – Don’t be showing your nodes in this 1/25/2010 post:

When browsing to a WCF endpoint hosted in an Azure web role you normally get back a web page for the service showing the location of the individual node / web role that is serving up your request (seen blurred out here) instead of the actual endpoint.

This isn’t great as you don’t want everyone knowing about your internal system and especially the URL of one of your web roles, with which they could do who know what.

image

This can easily be fixed with this patch for WCF that will now show the expected endpoint. This endpoint is actually the address of the load balancer that will then forward your request to an web role.

Dom continues with instruction for downloading, installing and using the hotpatch.

Alessandro Perilli reviews the University of California Berkeley’s Paper: Exploring Information Leakage in Third-Party Compute Clouds in this 1/25/2010 post:

At the end of last year, people from the University of California and MIT published an extremely interesting 14-pages paper about the risks of information leakage in multi-tenancy Infrastructure-as-a-Service (IaaS) clouds.

Titled Hey, You, Get Off of My Cloud: Exploring Information Leakage in Third-Party Compute Clouds, it was presented at the ACM Conference on Computer and Communications Security 2009.

The paper claims that [when] “investing just a few dollars in launching VMs, there’s a 40% chance of placing a malicious VM on the same physical server as a target customer”.

It ends with a number of suggestions to mitigate the risks:

“First, cloud providers may obfuscate both the internal structure of their services and the placement policy to complicate an adversary’s attempts to place a VM on the same physical machine as its target. For example, providers might do well by inhibiting simple network-based co-residence checks.

“However, such approaches might only slow down, and not entirely stop, a dedicated attacker. Second, one may focus on the side-channel vulnerabilities themselves and employ blinding techniques to minimize the information that can be leaked. This solution requires being confident that all possible side-channels have been anticipated and blinded. Ultimately, we believe that the best solution is simply to expose the risk and placement decisions directly to users. A user might insist on using physical machines populated only with their own VMs and, in exchange, bear the opportunity costs of leaving some of these machines under-utilized. For an optimal assignment policy, this additional overhead should never need to exceed the cost of a single physical machine, so large users—consuming the cycles of many servers—would incur only minor penalties as a fraction of their total cost.”

Chris Hoff (@Beaker)’s Cloud: Security Doesn’t Matter (Or, In Cloud, Nobody Can Hear You Scream) post of 1/25/2010 begins:

In the Information Security community, many of us have long come to the conclusion that we are caught in what I call my “Security Hamster Sine Wave Of Pain.”  Those of us who have been doing this awhile recognize that InfoSec is a zero-sum game; it’s about staving off the inevitable and trying to ensure we can deal with the residual impact in the face of being “survivable” versus being “secure.”

While we can (and do) make incremental progress in certain areas, the collision of disruptive innovation, massive consumerization of technology along with the slow churn of security vendor roadmaps, dissolving budgets, natural marketspace commoditzation and the unfortunate velocity of attacker innovation yields the constant realization that we’re not motivated or incentivized to do the right thing or manage risk.

Instead, we’re poked in the side and haunted by the four letter word of our industry: compliance.

Compliance is often dismissed as irrelevant in the consumer space and associated instead with government or large enterprise, but as privacy continues to erode and breaches make the news, the fact that we’re putting more and more of our information — of all sorts — in the hands of others to manage is again beginning to stoke an upsurge in efforts to somehow measure and manage visibility against a standardized baseline of general, common sense and minimal efforts to guard against badness. …

<Return to section navigation list> 

Cloud Computing Events

Eric Nelson started a New Windows Azure Platform online community in the UK, according to this 1/25/2010 post:

There is a really strong interest in Cloud Computing and Azure in the UK – but it doesn’t appear to be supported by an online community. Well, at least I couldn’t find an active community.

Hence I decided to go and create one. Or at least create the skeleton of one: http://ukazure.ning.com/

image

… P.S. I since discovered Brazil has been doing “the same” for a long while. They have a very nice site and 256 members (very “binary”!). Lest see if we can beat Brazil in double quick time. No – I do not have a Microsoft objective to do that :-)

Signed up.

<Return to section navigation list> 

Other Cloud Computing Platforms and Services

Geva Perry’s Cloud as Monetization Strategy for Open Source: SpringSource analyzes SpringSource’s move of their dmServer to the Eclipse Public License (EPL):

I came across an interesting post by Savio Rodrigues from IBM. Savio writes about the recent announcement by SpringSource (now a division of VMWare) that they are proposing to move their dm Server product (the OSGi app server) to the Eclipse Public License (EPL). Until now the dm Server was offered with a dual-license model: free in GPL or with a proprietary license for a fee, also known as the "open core" model.

SpringSource logo

Rodrigues refers to a blog post by The 451 Group analyst Matthew Aslett in which he says that SpringSource is abandoning the GPL license (and therefore the dual license model), because the EPL is more permissive and therefore encourages adoption. Rodrigues then brings up the possibility that the change in licensing is due to a change in business model -- generating revenues for sale of support subscriptions instead of license sales.

But he pretty much ends up dismissing that as the main motivator and then truly hits the nail on the head: the real plan is to monetize this and other SpringSource products with cloud computing offering (presumably some kind of PaaS) -- as this was the original rationale given for the SpringSource acquisition by VMware. …

<Return to section navigation list> 

Sunday, January 24, 2010

Volta Redux by Erik Meijer’s Cloud Data Programmability Team and Reactive Extensions for .NET (Rx)

Volta began life in 2007 as a Microsoft Live Labs’ incubator project from the Tesla group with two primary objectives:

  • Declarative refactoring from single-tier to multi-tier applications
  • Recompilation of MSIL code to JavaScript

Following are earlier references to Volta from the OakLeaf Systems blog in LIFO order:

LINQ and Entity Framework Posts for 10/1/2008+: Mary Jo Foley wrote Live Labs kills Deepfish; suspends Volta downloads on 10/2/2008. However, she quoted a Microsoft representative as denying that Volta was being discontinued, but that’s all the rep would say. Very strange.

LINQ and Entity Framework Posts for 9/8/2008+: Miscellaneous Sessions from DevDays 2008 Amsterdam (01:09:32 video, May 2008): Mats Helander (Avenade): How does Volta Change the game? (Requires Live ID login).

First Volta CTP Available from Microsoft Live Labs (12/6/2007): Erik Meijer’s more detailed description of Volta and earlier links from the OakLeaf blog.

I’ll update this post as the team releases CTP source code that runs on Visual Studio 2010 Beta 2 and later.

JavaScript Note: Fredrik Holmström has posted IronJS on GitHub. Iron JS is a ECMAScript 3.0 implementation built on top of the Dynamic Language Runtime from Microsoft which allows you to embed a javascript runtime into your .NET applications.

Frederik says the latest version of IronJS (1/23/2010) will compile JQuery.

Cloud Programmability Background

Erik, whom I and many others call “the Father of LINQ”, is now managing the Cloud Programmability (also called the SQL Server Cloud Data Programmability) team. Here’s an excerpt from his current bio on the Microsoft Research site:

Erik Meijer is an accomplished programming-language designer who has worked on a wide range of languages, including Haskell, Mondrian, X#, Cω, C#, and Visual Basic. He runs the Cloud Programmability Team at Microsoft, where his primary focus has been to remove the impedance mismatch between databases and programming languages. One of the fruits of these efforts is LINQ, which not only adds a native querying syntax to .NET languages, such as C# and Visual Basic, but also allows developers to query data sources other than tables, such as objects or XML. Most recently, Erik has been working on democratizing the Cloud using Volta and preaching the virtues of fundamentalist functional programming in the new age of concurrency and many-core. Some people might recognize him from his brief stint as the "Head in the Box" on Microsoft VBTV. These days, you can watch him on Channel 9.

Volta’s New Lease on Life with the Cloud Programmability Team

The Erik Meijer and Team: Cloud Data Programmability - Connecting the Distributed Dots video (00:33:32) is the most recent Channel9 segment about the transmogrification of Volta into the Cloud Programmability team. The team leverages the Reactive Extensions (Rx) for .NET to enable asynchronous communication between clients, middle tiers, and data sources, such as Windows Azure and SQL Azure:

Rx is a library for composing asynchronous and event-based programs using observable collections.

The “A” in “AJAX” stands for asynchronous, and indeed modern Web-based and Cloud-based applications are fundamentally asynchronous. In fact, Silverlight bans all blocking networking and threading operations. Asynchronous programming is by no means restricted to Web and Cloud scenarios, however. Traditional desktop applications also have to maintain responsiveness in the face of long latency IO operations and other expensive background tasks.

Another common attribute of interactive applications, whether Web/Cloud or client-based, is that they are event-driven. The user interacts with the application via a GUI that receives event streams asynchronously from the mouse, keyboard, and other inputs.

Rx is a superset of the standard LINQ sequence operators that exposes asynchronous and event-based computations as push-based, observable collections via the new .NET 4.0 interfaces IObservable<T> and IObserver<T>.  These are the mathematical dual of the familiar IEnumerable<T> and IEnumerator<T> interfaces for pull-based, enumerable collections in the .NET Framework.

The IEnumerable<T> and IEnumerator<T> interfaces allow developers to create reusable abstractions to consume and transform values from a wide range of concrete enumerable collections such as arrays, lists, database tables, and XML documents. Similarly, Rx allows programmers to glue together complex event processing and asynchronous computations using LINQ queries over observable collections such as .NET events and APM-based computations, PFx concurrent Task<T>,  the Windows 7 Sensor and Location APIs, SQL StreamInsight temporal event streams, F# first-class events, and async workflows.

Video content related to Windows Azure and SQL Azure begins at 00:21:00.

Following are links to Cloud Programmability team and related member blogs:

Bart De Smet’s 2010 – A Personal Change: putting my “Head In The Cloud” post of 1/10/2010 announced that he joined the Cloud Programmability team.

More Background on Rx and Ripley

Erik presented a Rx: Reactive Extensions for .NET session at PDC 09 on 11/18/2009:

Hear how to model reactive applications using push-based, observable collections, and how to glue together complex event processing and asynchronous programs using declarative LINQ queries. Learn how Rx is part of the Business Platform Division and Live Labs "Cloud Programmability" project that aims to democratize the Cloud by providing tools and libraries to radically simplify the development of data intensive Cloud applications.

Erik Meijer: Rx in 15 Minutes - Rx is Here!!!!! from Channel9 is an abbreviated version of the presentation. Links to 18 other Channel9 video segments about Rx are here.

Ben Livshits’ Ripley research project runs on top of Volta and takes advantage of Rx:

Ripley is “a system that uses replicated execution to automatically preserve the integrity of a distributed computation. Ripley replicates a copy of the client-side computation on the trusted server tier. Every client-side event is transferred to the replica of the client for execution.”

Sunday, October 05, 2008

LINQ and Entity Framework Posts for 10/1/2008+

Note: This post is updated daily or more frequently, depending on the availability of new articles.

• Update 10/5/2008: EF, Misc.

• Update 10/3/2008: EF, LINQ to SQL, LINQ, Astoria, SSDS additions. Minor updates 10/4/2008 8:30 AM PDT

Entity Framework and Entity Data Model (EF/EDM)

•• Matthieu Mezil contends in his ADO.NET Data Services Hooking POC post of 10/5/2008 that “sometimes, you need to develop your own entity classes which encapsulate your EF ones … [to] support all cases.” However, Matthieu says that “the flow between the Server and the DB isn’t optimized” and provides a pair of SQL Server 2008 data (ADONETDataServicesHookingPOC.mdf) and log (ADONETDataServicesHookingPOC_log.ldf) files from CodePlex as a proof of concept (POC).

Kristofer Andersson’s Huagati DBML/EDMX Tools extend the automated Update LINQ to SQL Documentation from Database feature to Update ADO.NET Entity Data Model Documentation from Database. This new menu choice corrects the problem Kris notes in his Tools - Part 5 - Add-ins - Documentation features in Entity Framework vs Linq-to-SQL post of 9/5/2008: The appearance of “There are no comments for [name] in the schema” as the value of the Documentation property of each EntityType and its members. The option automatically imports description data and adds index informaton from table metadata in the same manner as for LINQ to SQL data sources.

You can download a free trial version of v1.36.3198.30279 of 10/3/2008 from here.

Julie Lerman reports in her Technology Deathmatch: LINQ to SQL vs. Entity Framework post of 10/3/2008 that Alex Thissen and Paul Gielens will be sparring partners in the smackdown at the Software Developer Network’s (SDN) Software Development Conference 10/6-7/2008 in Noordwijkerhout (near Amsterdam and Schiphol Airport.)

Hopefully, Alex and Paul will deliver the session in English and Julie will record it.

Update: Julie says the session will be in Dutch. Shucks.

Dennis van der Stelt delivers UK developers’ choice of database access technology on 10/1/2008. See the “LINQ to SQL” section.

• Ido Flatow cautions developers about slowly executing queries with related entities in his Entity Framework generated queries - look out post of 10/1/2008.

Julie Lerman announces on 10/2/2008 Programming Entity Framework available as a RoughCut within the next few days. She promised to post a linq when the first few chapters are available for downloading.

Mohammad Mosa demonstrates associations between twp base entities and shows you how to filter end properties to return specific type (subentity) in Inheritance and Associations with Entity Framework Part 3 of 10/1/2008.

Matthieu Mezil explains how to return the employees reporting to a specific supervisor when employee and supervisor records are in the same table in EF: how to do a recursive include? of 10/1/2008.

LINQ to SQL

Roger Alsing has implemented Jimmy Nilsson’s Workspace pattern with LINQ and will use NWorkspace in what appears to be a project for the Swedish government, according to NWorkspace / Linq Workspace Followup of 10/3/2008.

In a comment to an earlier post, DDD - NWorkspace Linq experiment of July 3, 2008, Roger says:

At the moment the project is just a small experiment so there is not much to show to the world. But I will continue to fiddle with it now during my vacation, so if I feel confident enough in it I will make it public. But for now it will just be my own toy.

He must be confident of NWorkspace if “a large portion of every Swedish citizens that turn 18 will pass through this system,” so it’s time to post the code. 

Dennis van der Stelt expresses surprise about the developers’ choice of LINQ to SQL (18%)and Entity Framework (13%) as the database access technology they would choose if starting a project on 1/1/2009.

In his Who is actually using LINQ or LINQ to SQL? post of 10/1/2008, Dennis quotes a recent Microsoft UK MSDN Flash newsletter. The fact that 41% plan to use ADO.NET (Commands, DataReaders, DataSets, etc.) is no surprise but the low ranking of other O/RMs is a shock to me: 7% Alternative ORM – Nhibernate, LLBLGen, EntitySpaces, etc.

I’d certainly like to see a similar survey for the US.

Miguel de Icaza’s DbLINQ, LINQ to Databases and Mono post of 10/2/2008 links to Atushi Enomoto’s Mono's Linq to SQL effort based on DBLinq post of the same date, which describes a LINQ to SQL clone that supports multiple RDBMSs.

LINQ to SQL was designed to do the same, but the Data Programmability group restricted the RTM version of SQL Server-only.

Mike Taulty binds a LINQ to SQL Data source to a WPF master/details form with WPF DataGrids in his DataGrid - Master/Details post of 10/1/2008.

LINQ to Objects, LINQ to XML, et al.

Jim Wooley reports in ThinqLinq on Deep Fried Bytes of 10/03/2008 that Keith and Woody interviewed him for Episode 14: LINQ’ing the Future of Development with Jim Wooley (MP3).

Paul Stovell starts writing documentation for his Bindable LINQ component in his Bindable LINQ: What is Bindable LINQ? post of 10/1/2008.

Paul Stovell’s Bindable LINQ: F# is Overhyped post of 10/1/2008 reflects his preference functional reactive programming over F#.

Beth Massie promotes her latest article in the October 2008 issue of MSDN Magazine - Dynamic Data Entry With XML Literals of 10/1/2008.

LinqMaster tells you How to Use LINQ OfType Standard Query Operator on 10/1/2008.

Garvin Clark observes in his IBM, Sun, Microsoft sink differences on VMs The Register article of 10/1/2008:

Among those heading to Sun's offices [for the JVM Language Summit] were computer languages expert and Microsoft architect Erik Meijer - who helped create the Language Integrated Query (LINQ) and Microsoft's experimental Volta tools language.

See the “Miscellaneous” section for more about Volta’s recent disappearance from Windows Live Labs.

ADO.NET Data Services (Astoria)

Phani Raj’s DataServiceContext: Detect if there are pending changes post of 10/3/2008 explains Astoria’s DataServiceContext object and its two collections, Entities and Links, that you can test for state and determine if they have changes pending.

Mike Flasko said in slide 9 of his ADO.NET Data Services for the Web (a.k.a. Project "Astoria") presentation at Remix UK 08 that an ASP.NET DataSourceControl for ADO.NET Data Services is coming “in the future.”

Mike insists on the using term LINQ for ADO.NET Data Services for the Astoria pseudo-implementation (string-based LINQ syntax) instead of LINQ to Astoria or (my favorite) LINQ to REST. Hopefully, the new control will be named RestDataSourceControl rather than AdoDotNetDataServicesDataSourceControl.

Eric Nelson’s Entity Framework and Data Services in one slide – a work in progress crams a diagram of ADO.NET Data Sources and its Entity Framework data source onto a single PowerPoint. Looks like a good start to me, but an arrow or two is missing and some seem to me to point in the wrong direction or the connectors should be double-headed.

Shawn Wildermuth describes problems with Silverlight and ADO.NET Data Service Operations on 10/1/2008.

ASP.NET Dynamic Data (DD)

Scott Hanselman intends to prevent “confusion about how ASP.NET WebForms, MVC and Dynamic Data all fit together” with his detailed Plug-In Hybrids: ASP.NET WebForms and ASP.MVC and ASP.NET Dynamic Data Side By Side post of 10/1/2008. If you’re into MVC and/or DD, this post is a must-read.

Scott Guthrie returns to link blogging with October 2nd Links: ASP.NET, ASP.NET MVC, ASP.NET Dynamic Data of 10/2/2008.

DLPanther continues to hype his forthcoming ASP.NET Dynamic Data, The Data Revolution is here! series with a 10/1/2008 post about prerequisites. Where’s the beef?

SQL Server Data Services (SSDS)

Bob Cringley’s Data Debasement: Cloud computing will change the way we look at databases column of 10/3/2008 takes the position that large-scale in-memory databases of the future will run on top of MapReduce and the Google File System, which is to say will run under the Google App Engine. This, of course, ignores Amazon SimpleDB, Microsoft’s SSDS, and relational database systems hosted by Amazon EC2 and in Microsoft Data Centers. Bob concludes:

[I]t looks like [Larry Ellison]'s bought up most of the traditional database-centric software industry just in time for it to be declared obsolete.

This has been a BIG week for cloud database news!

Note: Bob was a panelist at MIT’s Emerging Technologies Conference 08 held 9/23/-25/2008. Microsoft’s Craig Mundie and Amazon’s Werner Vogels were among the keynote speakers. Microsoft and Amazon Web Services were sponsors. Cloud computing appears to be a bit off-topic for a Parallel Computing panel discussing multi-core computer usage.

Soumitra Sengupta delivers the SSDS Team’s Data Service differentiation from hosted RDBMS instances in SQL Server Data Services Team Architect Contrasts SSDS with SQL Server Under Amazon EC2 of 10/3/2008. The contents of the post are from a comment to my Amazon Adds SQL Server to Oracle and MySQL as EC2 Relational Database Management Systems post of 10/1/2008 (see below).

Herb Torrens provides an analysis of cloud computing’s current status in his Coming to Terms With Cloud Computing article of 10/2/2008 for Redmond Developer News. Torres offers one of the better second-hand definitions of cloud computing I’ve heard so far:

[Forrester analyst James] Staten defined cloud computing as "a pool of abstracted, highly scalable, and managed compute infrastructure capable of hosting customer applications [that are] billed by consumption."

Herb’s article includes references to Microsoft “Red Dog” projects which analysts believe is what Steve Ballmer called “Windows Cloud” on 10/1/2008 during a Software plus Services (S+S) partner event in London, according to the Register’s Kelly FiveAsh. Details are expected at the Professional Developers Conference (PDC) 2008 in Los Angeles, 10/27/2008 to 10/30/2008.

Jas Dhaliwal’s Steve Ballmer’s Keynote in London post of 10/2/2008 contains a full-length (40:00) video of Steve’s presentation and a transcript of the Q&A segment.

Roger JenningsAmazon Adds SQL Server to Oracle and MySQL as EC2 Relational Database Management Systems post of 10/1/2008 analyzes the effect of the addition of Windows Server and SQL Server 2008 hosted on Amazon EC2 to the cloud computing marketplace. He also proposes a new metric: TCNO (Total Cost of Non-Ownership).

SQL Server Compact (SSCE) 3.5 and Sync Services

No posts as of 10/2/2008 2:00 PM PDT

Visual Studio 2008 Service Pack 1 and Later (General)

Steve Martin describes The Road to PDC - .NET Framework 4.0 and “Dublin” in a detailed post of 10/1/2008.

Miscellaneous (WPF, WCF, MVC, Silverlight, etc.)

Roger Jennings points out in his Google Analytics Data for the OakLeaf Blog, 9/4 to 10/4/2008 post of 10/5/2008 that the Oakleaf Systems blog is in the top 12% of all blogs tracked by Technorati for monthly page views and visitors and in the top 1.8% by Technorati Authority.

• Ayende Rahien continues his virtuoso analysis of the CouchDB document database while learning to read Erlang in these two new posts:

The posts are lengthy and amazingly detailed.

Rob Conery promises personalization, support for PayPal, and better conformance to his new core MVC template in MVC Storefront's Next Episode of 10/3/2008.

Mary Jo Foley learns that Live Labs kills Deepfish; suspends Volta downloads on 10/2/2008. However, she quotes a Microsoft representative as denying that Volta was being discontinued, but that’s all the rep would say. Very strange.

Mike Taulty wants help with WPF DataGrid and Hiding Columns on 10/1/2008.

Friday, September 12, 2008

LINQ and Entity Framework Posts for 9/8/2008+

Note: This post is updated daily or more frequently, depending on the availability of new articles.

•••• Updated 9/14/2008 7:00 AM PDT: Addition of EF POCO v 1.02
••• Updated 9/12/2008 9:00 AM PDT: Additions to EF, LINQ, Astoria, SSDS, and Sync Services  
•• Updated 9/11/2008 2:00 PM PDT: Additions to EF, LINQ to SQL, LINQ (to NHibernate and XML), Misc. (Technorati, MVC) 
• Updated 9/10/2008 10:00 AM PDT: Additions to LINQ to SQL, Astoria, Dynamic Data, and SQL Server Compact

Note: All DevDays 2008 session links point to the MSDN Spotlight page because login with a Windows Live ID is required and links without a session ID fail.

Entity Framework and Entity Data Model (EF/EDM)

•••• Jarek Kowalski has updated his Persistence Ignorance (POCO) Adapter for Entity Framework V1 (see below) to v1.02 to fix three issues reported by users that his EF POCO Adapter updated (v1.02) post of 9/13/2008 describes. Download the updated code here.

••• Elisa Flasko’s PDC 2008 - Los Angeles, CA - Oct. 27-30 post of 9/12/2008 to the ADO.NET Team blog describes Tim Mallalieu’s Entity Framework Futures session at PDC 2008:

The next version of the Entity Framework adds scenarios in the areas of   model driven development, domain driven development, simplicity, and integration. See a preview of production and prototype code for the next version of the Entity Framework as well as a candid discussion with members of the development team.

In the meantime, EF V1 pilgrims are still awaiting the arrival of the promised minutes of the first EF Advisory Council meeting.

Alex James provides a detailed description of the plans for adding a domain-design-first feature to Entity Framework v2 in his Model First post of 9/10/2008. Topics include:

  • Generating Databases from Models (an overview of the process and UI)
  • Under the Hood (a description of the Sequential Workflow WF implementation)
  • Stage and Purpose (of each WF element)
  • Templates (the T4 templates that perform CSDL to SSDL, CSDL to MSL, and SSDL to DBSchema transformations)

Huageti Systems’ Kristofer Andersson notes in his Tools - Part 5 - Add-ins - Documentation features in Entity Framework vs Linq-to-SQL post of 9/2/2008:

[EF’s documentation feature] has a cosmetic flaw: In the haste to release VS2008 and .net 3.5 SP1 it seems like MSFT forgot to apply the entity type documentation to the entity set accessor properties, so entity sets (and all undocumented classes and properties) will show the default “There are no comments for [name] in the schema.“. I would like to see the EntitySet using the same documentation as the EntityType, or at least have a “Documentation” property of its own. (It does in the EDMX, but not in the designer)

The “There are no comments” default value is a bit redundant and waste of screen real-estate. Why not leave the default value blank? Oh well, this is just version one so I guess that will be improved in some future service pack update.

Also missing is the ability to automatically populate the documentation field with descriptions from data model diagrams and/or the database. The descriptions may already exist in a data model diagram or in the database. In addition, knowing what indexes exist is very useful when writing queries, and what indexes exist on tables etc are of course available from the database so being able to automatically retrieve those two pieces of information from the db would be a nice-to-have feature.

According to Alex, EF v2 will include metadata for indexes because the generated DDL add them.

Note that Damien Guard has produced an initial set of T4 templates for serializing LINQ to SQL classes, as described in my Bidirectional Serialization of LINQ to SQL Object Graphs with Damien Guard’s T4 Template in VS 2008 SP1 of 7/27/2004. A later version will add:

  • Inheritance support
  • VB.NET generation
  • DataContract serialization

But it won’t support stored procedures or composite primary keys.

Jarek Kowalski’s Persistence Ignorance (POCO) Adapter for Entity Framework V1 post of 9/9/2008 provides extensive details about the new EFPocoAdapter that’s available for download from the CodeGallery. Here’s its description:

EF POCO Adapter enables Plain Old CLR Objects (POCOs) to be tracked using released version of Entity Framework V1. It consist of a code generator, supporting library and a test suite and examples.

Code generator writes an adapter layer that will translate between POCO objects and Entity Framework-aware objects and provide services on top of POCO objects, such as:

  • Change tracking (snapshot-based and proxy-based when possible)
  • Transparent lazy loading
  • Immutable Value Objects
  • Queries (LINQ and Entity SQL)
  • Shadow state (maintaining certain persistence-related fields outside of entity class)

Entity Framework V1 programming interfaces are wrapped with corresponding APIs that work with POCO objects and do necessary translation between POCO and Persistence-Aware objects.

The availability of the new adapter should quiet the tumult and shouting about EF’s lack of persistence ignorance.

• Update 9/10/2008: From comments to Jarek’s post:

Roger Jennings (9/9/2008):

Does Astoria consider the POCO Adapter's EFPocoContext a first-class data source, that is, supports IQueryable<T> and induces the Astoria runtime to provide IUpdatable<T>?

In other words, can it be plugged into an Astoria project without adding a significant amount of code?

Jarek Kowalski (9/9/2008):

I'll investigate the Astoria question, but since EFPocoAdapter does not implement IUpdatable I don't think it works now. …

OK. I have played with Astoria and I was able to get a basic service to work. All you have to do is to derive from DataService<adapterContextType>, such as:

public class NorthwindEFService : DataService<NorthwindEntitiesAdapter>
{
}

This makes use of the "second face" of the object model, which is the EF-compatible adapter layer. Astoria doesn't have a clue that it is talking to POCO model, but the EF-POCO translation happens under the hood.

Implementation of IUpdatable should be pretty straightforward, though.

Mike Taulty presents Understanding the ADO.NET Entity Framework at DevDays 2008 Amsterdam (Video, May 2008).

LINQ to SQL

•• Mike Tulty’s Messing with Dynamic LINQ Queries post of 9/11/2008 shows his attempt with a LINQ to SQL query:

[T]o take the Expression which will have 2 parameters and reduce it down to an Expression which has 1 parameter by hard-wiring the 2nd parameter with the current value of the loop variable "s" into the method call expression itself as a constant.”

• Mike Hadlow has posted a working sample and source code for the Suteki Shop eCommerce application that uses the following technologies:

  • .NET 3.5
  • MVC Framework
  • LINQ to SQL
  • Windsor IoC Container
  • NUnit (for testing)
  • Moq (for mocking)

• Matt Manela explains in his SQL CE 3.5 with LINQ to SQL post of 9/9/2008 how to avoid the performance hit caused by moving SQL Server Compact (SSCE) 3.5 into and out of memory when LINQ to SQL opens and closes connections on single or multiple threads.

Bill BurrowsASP .NET MVC Framework - Preview 4 Update demonstration “highlights the changes in the MVC model since the release of Preview 1 and covers both "drill-down" applications as well as showing how to update and existing database record and add a new record” with VS 2008 (not SP1), LINQ to SQL and VB.

It’s unfortunate that the demo is one service pack and preview behind, but most of the two video links apply to current releases.

Bill also offers a VB-based LINQ to SQL Tutorial and Introduction to MVC Tutorial.

Anko Duizer presents Is LINQ to SQL your data Access Layer? from DevDays 2008 Amsterdam (Video, May 2008).

LINQ to Objects, LINQ to XML, et al.

••• Eric White describes how LINQ used C# 3.0’s closures feature in his Closures post of 9/12/2008.

•• Ayende Rahien‘s NHibernate 2.0 and Linq post of 9/11/2008 delivers formal notification that LINQ to NHibernate is not part of the recently-released NHibernate 2.0, but an improved LINQ implementation will be part of NHibernate 2.1.

However, he notes that “Daniel Guenter has back ported the current version of Linq to NHibernate to Nhibernate 2.0 and made it available here.”

Mike Hadlow noted problems with LINQ to NHibernate and complex queries in his What's up with Linq to NHibernate? post of 9/2/2008.

•• Shayne Burgess notes that the XML Team plans to incrementally publish “frequently encountered issues in System.XML; mainly points that we felt were interesting because they were the source of a lot of difficulty for our users.” The first two members of the Frequently Asked Questions on XML in .NET series are:

  1. Part 1: Invalid Literals (9/10/2008)
  2. Part 2: Conformance Level – Fragment (9/10/2008)

While not specifically about LINQ to XML issues, they should be of interest to developers using LINQ to XML.

John Papa describes a workaround for an Amazon Web Services’ book price ambiguity in his LINQ to XML Tip - Checking for Values post of 9/9/2008.

Eric White explains “how to use content controls in Open XML word documents to delineate code snippets so that you can automate validation of the snippets” in his OpenXmlCodeTester: Validating Code in Open XML Documents post of 9/8/2008. Eric says:

I suspect that this blog post will be very interesting to a very few people, but of casual note to all others. I’m very interested to hear if this scenario is useful to you. But more than this particular scenario, I want to spark interest in the possibilities that content controls open up for you.

This may be the longest blog post I’ve written, because this blog post also serves as a manual of sorts for OpenXmlCodeTester.

Eric’s code is based on functional programming principles and all variable values are immutable.

Sessions from DevDays 2008 Amsterdam (Video, May 2008):

ADO.NET Data Services (Astoria)

••• Elisa Flasko’s PDC 2008 - Los Angeles, CA - Oct. 27-30 post of 9/12/2008 to the ADO.NET Team blog describes the following two Astoria presentations at PDC 2008:

Developing Applications Using Data Services: Mike Flasko

In the near future, applications will be developed using a combination of custom application code and online building block services, including data-centric services. In this session we discuss advancements in the Microsoft development platform and online service interfaces to enable seamless interaction with data services both on-premises (e.g., ADO.NET Data Services Framework over on-premises SQL Server) and in the cloud (e.g., SQL Server Data Services). Learn how you can leverage existing know-how related to LINQ (Language Integrated Query), data access APIs, data-binding, and more when building applications using online data.

Offline-Enabled Data Services and Desktop Applications: Pablo Castro

The ADO.NET Data Services Framework (a.k.a. Project "Astoria") introduced a way of creating and consuming flexible, data-centric REST services. By combining data services with the Microsoft Sync Framework, learn how to create offline-capable applications that have a local replica of their data, how to synchronize that replica with an online data service when a network connection becomes available, and how replicas can be used with the ADO.NET Entity Framework. Also, hear us talk about our plans, see the tools that help client- and server-side setup, and discuss the runtime components and APIs.

Mike Flasko’s ADO.NET Data Services Concepts post of 9/9/2008 points to a new "Overview of ADO.NET Data Services" white paper on MSDN. Mike says:

The document is meant to cover the high-level concepts for the product.  A companion paper "Using ADO.NET Data Services" published a little while ago complements this overview with details on product features and how to use them. 

Coming up next is a paper which goes one level deeper and shows how to host data services in different environments (ASP.NET, WCF, IIS, WCF self host, etc).

Click here for more information from LINQ and Entity Framework Posts for 9/2/2008+ about the companion paper.

Sessions from DevDays 2008 Amsterdam (Video, May 2008):

ASP.NET Dynamic Data (DD)

•• Mike Ormond’s Dynamic Data and Entity Framework post of 9/11/2008 describes exceptions thrown when using EF with Northwind as the data source: one with the Order_Details entity and one when navigating the Product –> Order_Details relations (that composite index issue again!) The fix is the Dynamic Data Entity Framework Workaround on CodePlex.

Steve Naughton completes his Dynamic Data Futures series with his Dynamic Data Futures – Part 3 – AnyColumnAutocomplete Filter post of 9/9/2008. Steve says:

The issue is that the Autocomplete filter and AutocompleteFilter web service is designed to work with Foreign Key columns, I thought this would be like the previous article in this series and be quite simple, instead it turned out to be a bit more complicated

SQL Server Data Services (SSDS)

••• Eugenio Pace lauds Apprenda’s SaaSGrid cloud services framework for ISVs in his Northwind Hosting exists, it's better than what you saw and it's called SaaSGrid post of 9/12/2008. Eugenio says:

This "non-intrusiveness" of SaaSGrid is a property of PaaS offerings we have studied in the past. I personally believe that all offerings requiring an ISV to re-write an app, or re-learn a whole new development paradigm (custom language, non-mainstream storage, etc) will be at a disadvantage compared to PaaS offerings that will make the most of your existing investments and strengths, and therefore adoption will be hurt (probability +80% :-)).

Eugenio’s Northwind Hosting concept demo and related white papers form much of the foundation of SSDS and especially the LitwareHR demo. Watch the video to learn more about SSDS’s current and future architecture and features.

Mike Amundsen updated his “SSDS-Proxy and SSDS Provision Client code on 9/8/2008 to support returning the Authority List for the logged-in user. This update also includes support for reading and deleting BLOB files (no upload via the web - yet).”

A live demonstration is running here http://amundsen.com/ssds/. The source code is available from Codeplex http://codeplex.com/ssdsexamples/.

SQL Server Compact (SSCE) 3.5 and Sync Services

••• See Offline-Enabled Data Services and Desktop Applications: Pablo Castro

• Matt Manela explains in his SQL CE 3.5 with LINQ to SQL post of 9/9/2008 how to avoid the performance hit caused by moving SQL Server Compact (SSCE) 3.5 into and out of memory when LINQ to SQL opens and closes connections on single or multiple threads. (Also in LINQ to SQL category.)

Martijn Beenes presents Sync Framework from DevDays 2008 Amsterdam (Video, May 2008).

Visual Studio 2008 Service Pack 1 (General)

Beth Massi’s What's New in Visual Studio 2008 SP1 - Client and Data Features post of 9/11/2008 includes links to the slides and code from her presentation to the East Bay.NET UG on some of the new features in Visual Studio Service Pack 1, including:

  • SQL 2008 Types and Data Binding Support
  • ADO.NET Sync Services Enhancements
  • WPF Enhancements
  • ADO.NET Entity Framework Designer
  • ADO.NET Data Services (Astoria)
  • “Client Profile” Framework Deployment
  • VSTO Content Controls and Smart Tags
  • VSTO Deployment Improvements

I wonder how long the meeting lasted.

Miscellaneous (MVC, WPF, WCF, Silverlight, etc.)

•• (OT) Roger Jennings takes Technorati to task for making acquisitions while failing to maintain their primary obligation to the blogosphere and provide timely customer service in his More Technorati Troubles post of 9/11/2008.

These two posts re Technorati were added on 9/12/2008:

Update 9/11/2008 2:30 PM PDT. Apparently the above post caught Technorati’s attention. The latest posts are now appearing and the Authority was updated (-2 points.)

David Hayden’s ASP.NET MVC and Enterprise Library Validation Application Block post of 9/10/2008 complements his earlier post with instructions for integrating the Validation Application Block with ASP.NET MVC.

Scott Heuer says in his 9/9/2008 post, H.264 and AAC support coming to Silverlight (in a future version). The Silverlight Shines at International Broadcasting Conference 2008 in Amsterdam press release of the same date includes Q&A with Scott Guthrie about the new video codecs for Silverlight.

Mike Taulty’s Silverlight, Async, Events post of 9/8/2008 deals with issues around asynchronous operations and the inability to pass an event into a function.

David Hayden uses a simple Customer class in his Custom Model Binder and More UI Validation in ASP.NET MVC post of 9/8/2008 to demonstrate the CustomModel binder’s input validation capabilities.

David Hayden’s ASP.NET MVC UI Error Handling - ModelState and AddModelError post of 9/7/2008 demonstrates validating a phone number input with ModelView’s ModelState property and the ModelState.AddModelError() method.

Miscellaneous Sessions from DevDays 2008 Amsterdam (Video, May 2008):