Showing posts with label TDD. Show all posts
Showing posts with label TDD. Show all posts

Tuesday, January 13, 2009

Azure and Cloud Computing Posts for 1/5/2009+

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

••• Update: 1/13/2009 10:00 AM PST: Minor additions
Update: 1/10/2009 1:30 PM PST: Minor additions
• Update: 1/8/2009 10:00 AM PST: Minor additions

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

Azure Blob, Table and Queue Services

•• David Pallman asks Questions about time and clocks in the data center in this 1/7/2009 thread in the Windows Azure forum. According to the Azure team’s Aleks Gershaft, the servers’ time zone is Pacific time but Last Modified Time for blobs and table entities is UTC.

• David LemphersWindows Azure - Sending SMTP Emails! post of 1/7/2009 describes how to send STMP emails through a relay host as an Azure web role, which solves the problems described in the System.Net.Mail.SmtpPermission not granted for smtp client from within a webrole thread of the Windows Azure forum.

Scott Watermasysk will conduct the NYC Code Camp - Understanding Data Storage Options in the Cloud session on 1/10/2009 and give a PhillyNJ.NET – What is Azure? talk to the PhillyNJ.NET Users Group on 1/15/2009 according to his two posts of 1/7/2009.

• Mark Nottingham submitted a Link Relations and HTTP Header Linking Internet Draft to the IETF on 12/1/2008. The draft “document specifies relation types for [Atom and HTML] Web links, and defines a registry for them.” If adopted, the document would affect the Atom syndication (RFC4287) and AtomPub (RFC5023) RFCs, which might affect the ADO.NET Data Services client library, and thus Azure Table Services.

OakLeaf’s Azure Storage Services - StorageClient Library: Table Storage API Class Reference post of 1/7/2009 includes class diagrams for TableStorage, TableStorageDataServiceContext, TableStorageDataQuery and other .NET types with which developers must conversant to take full advantage of Azure Table and Blob Storage services. The post has bee updated to include diagrams similar to class diagrams for the Details of TableStorage, TableStorage.DataServiceContext and TableStorage.DataServiceQuery classes from the System.Data.Services.Client namespace.Oakleaf’s

OakLeaf’s Azure Storage Services - StorageClient Library: Blob Storage API Class Reference and Azure Storage Services - StorageClient Library: REST Blob Storage API Class Reference of 1/6/2009 provide class diagrams for the two primary components of the StorageClient library for processing blobs.

OakLeaf’s Fighting the Azure Blob Storage Blues post of 1/2/2009 describes issues encountered while creating an Azure Blob Test Harness project that’s an extension of Jim Nakashima’s early Windows Azure Walkthrough: Simple Blob Storage Sample of 10/29/2008. Problems reported include failure of one or more GridView cells to render, overlapping table rows and similar UI issues.

However, it appears that IE 8 Beta 2 cause the GridView rendering issues because Firefox 3.0.5 doesn’t exhibit the symptoms. Intermittent failures to download large files from SkyDrive probably are caused by Azure. [Repeated from Azure and Cloud Computing Posts for 12/29/2008+.]

SQL Data Services (SDS)

Cerebrata Software, an Indian startup, has announced Omega.SDSClient, a browser-based Silverlight 2.0 application that lets you access and manage data stored in Windows Azure’s SQL Data Services. Here’s a screen capture of Omega.SDSClient managing the oakleaf1 authority’s Customers entity set in the Northwind container:

Omega.SDSClient lets you:

  • Connect to SQL Data Services.
  • Manage authorities.
  • Manage containers.
  • Manage flexible entities.

These new features will be added shortly:

  • Support for BLOB entities.
  • Querying capabilities.
  • Advanced container & entity operations.

You can download run the tool’s current demo (beta) version on the Cerebrata site and obtain a license file from the Omega.SDSClient site. Pricing for production use doesn’t appear to be available yet.

Jeff Currier from Microsoft’s SDS team answered my The SQL Data Services Team’s Recent Silence Isn’t Golden post of 1/3/2009 with the following comment:

We've been a bit more silent than usual because the features we've been focusing on have been more of a operational nature (and therefore not customer facing). This should explain the recent silence (along with the holidays).

However, the team isn’t discussing long-promised customer-facing features.

.NET Services: Access Control, Service Bus and Workflow

•• Anne Thomas Manes, a Burton Group analyst, says SOA is Dead; Long Live Services in her 1/5/2009 blog post. Here’s the abstract:

SOA met its demise on January 1, 2009, when it was wiped out by the catastrophic impact of the economic recession. SOA is survived by its offspring: mashups, BPM, SaaS, Cloud Computing, and all other architectural approaches that depend on “services”.

Once thought to be the savior of IT, SOA instead turned into a great failed experiment—at least for most organizations. SOA was supposed to reduce costs and increase agility on a massive scale. Except in rare situations, SOA has failed to deliver its promised benefits. After investing millions, IT systems are no better than before. In many organizations, things are worse: costs are higher, projects take longer, and systems are more fragile than ever. …

The latest shiny new technology will not make things better. Incremental integration projects will not lead to significantly reduced costs and increased agility. If you want spectacular gains, then you need to make a spectacular commitment to change. Like Bechtel. It’s interesting that the Bechtel story doesn’t even use the term “SOA”—it just talks about services.

And that’s where we need to concentrate from this point forward: Services.

••• Her SOA Obituary: Misinterpretations and Perceptive Enrichment post mortem of 1/9/2009 begins:

The cacophony generated by my SOA obituary post exceeded my expectations. Obviously, I hit a nerve.

Admittedly, the title was designed to draw a response. But I was still a bit surprised by the number of people that misinterpreted my meaning. I attribute the misunderstanding to the ambiguity of the term "SOA" itself, which JP talks about in his post from earlier today.

Sam Gentile’s Enterprise Service Buses (ESBs) Drive SOA Adoption Part 2 is the second chapter of a series that describes how ESBs are (supposed to) work using the commercial Neuron ESB for WCF as an example.

Following this series to its conclusion should enable you to judge whether .NET Services’ Service Bus (formerly “BizTalk Services”) meets your requirements or you need a purpose-built commercial ESB.

To learn more about the .NET Services.Service Bus watch Clemens Vasters’ Microsoft .NET Service Bus: Connectivity, Messaging, Events and Discovery PDC 2008 presentation (BB38). Clemens is the Service Bus Technical Lead.

Live Windows Azure Apps, Tools and Test Harnesses

••• Alin Irimie’s Weekly Cloud Application: Wikipedia Explorer post of 1/12/2009 describes Dot Net Solutions’ new version of its Wikipedia Explorer, which is built on top of Windows Azure. The project, which was built in partnership with Microsoft’s Developer and Platform Evangelism team, runs on a snapshot of Wikipedia’s entire English database that took 50 Azure server instances “a little over four days” to reformat from wikicode to XAML.

David Pallman’s Azure Storage Explorer of 1/9/2009 is a three-pane Windows form for inspecting blobs,tables and queues in a specified Azure storage account. David updated his Explorer on 1/12/2009:

Azure Storage Explorer has been updated. Binaries and source code to "preview version 0.2" have been posted on CodePlex. This update adds some polish, has cleaned-up source code, and allows items in cloud storage to be deleted.

Jon Udell’s Test-driven development in the Azure cloud post of 1/8/2009 continues the description of his project to recreate the elmcity.info calendar aggregator on the Azure platform. In this installment he focuses on test-driven development in Azure.

To make NUnit run under Windows Azure code access security restrictions, Jon added [assembly: AllowPartiallyTrustedCallers()] attributes to its assemblies and then rebuilt nunit.core.dll, nunit.core.interfaces.dll, nunit.framework.dll, and nunit.testutilities.dll. Yet another case where Azure’s lack of support for partially trusted callers bites you. 

Cerebrata Software, an Indian startup, has announced Omega.SDSClient, a browser-based Silverlight 2.0 application that lets you access and manage data stored in Windows Azure’s SQL Data Services. See the entry in the “SQL Data Services (SDS)” section.

• David LemphersWindows Azure and Web Services! post of 1/6/2009 explains how to work around a problem with the current internal Windows Azure environment’s configuration to enable connections to .asmx Web Services in Web Role projects when running in the Azure Cloud Fabric.

Oakleaf posted on 1/5/2009 Initial Azure Blob Generation Time vs. File Size Graph, which plots Upload, Create and Total time data for a set of *.bmp and *.zip files ranging in size from ~70 kB to 37.75 MB stored by my Windows Live SkyDrive account. The post includes source data from the OakLeaf Windows Azure Blob Test Project that’s now running in production on Windows Azure. The Windows Azure Blob Test Harness Project is Live! post of 1/4/2009 has instructions on how to use the test harness.

OakLeaf’s quick summary of currently available viewers for Azure tables and blobs is from my reply to a Would a Azure Storage Web UI be useful? thread in the Windows Azure forum:

There are several UIs for Azure storage and logs available, but the ones I've tried leave much to be desired. Examples:

Sergei Meleshchuk’s Azure storage viewer post of 12/24/2008 showed a storage browser for Queues, Blogs and Tables that looked promising, but it wouldn’t run for me. Starting the app causes it to immediately stop running under Windows Vista Ultimate on two computers. Others confirm it won't run on Vista. If Sergei fixes his app to run on Vista, it probably would satisfy most users.

Chris Hay offers his Windows Azure Blob Browser WPF application for CRUD operations on Azure blobs that you can download from here. It's list boxes aren't expandable and don't have scrollbars, but I use it.

David Aiken’s Windows Azure Online Log Reader is a no-frills Azure Services log reader by the author of Yap, an Azure-based Twitter clone with LiveID login but a terrible user experience.

David LemphersWindows Azure Logs! post of 1/1/2009 starts the new year with a spartan LogBrowser project that I couldn’t get to read my logs.

Above are from recent OakLeaf blog posts.

OakLeaf posted Windows Azure Blob Test Harness Project is Live! on 1/4/2009 to announce the availability of and provide instructions for the OakLeaf Windows Azure Blob Test Project on Windows Azure. [Repeated from Azure and Cloud Computing Posts for 12/29/2008+.]

Azure Services Framework and Infrastructure

••• Scott Watermasysk’s Two Tips On Preparing For The Cloud post of 1/12/2009 suggests that architects and developers contemplating use of cloud computing:

  1. Assume they (the cloud providers) are right.
  2. Decouple your current applications as much as possible.

Scott offered these tips to attendees of his first talk on cloud computing at the NYC Code Camp.

••• Paul Miller contrasts neophyte cloud users’ preference for meta data as opposed to “end user-approachable self-service customization” or vice-versa in his So do ‘Cloud Babies’ like metadata post of 1/11/2009. He concludes:

A database of flight codes, routes, times and aircraft is rich with data just begging to be used in a plethora of ways, whilst ‘BA283′ is equally comfortable as a piece of metadata describing one airline’s afternoon flight from London to Los Angeles.

The concept of metadata can be an extremely useful one; so long as we avoid becoming too dogmatic in defining its boundaries or fervid in upholding spurious conceptual purity.

••• Cloud Computing Journal’s Keynote Systems to Present at Cloud Computing Conference in NYC post of 1/10/2009 reports that

Vik Chaudhary, VP of Product Management & Corporate Development at Keynote Systems, will be presenting at SYS-CON's 2nd International Cloud Computing Conference & Expo in New York City this coming March 30-April 1, 2009.

According to Fuat Kircaali, Chaudhary's session will be

[L]ooking at how cloud platforms assure that your application will perform well and meet the high expectations for your end users by taking these clouds on a test flight. He will be running an application on a cloud platform, and examining performance bottlenecks and their impact on functionality by looking at how various clouds make it easy or hard to monitor the reliability and availability of applications.

••• Redmonk analyst Michael Coté warns Don’t confuse SaaS with Cloud Computing on 6/30/2008. Michael explains:

I’ve recently tracked down one of the causes of much confusion about and wheel spinning in cloud computing: it stems from thinking that Software-as-a-Service - software you get, largely, through a web application involving little or no on-premise installs, usually priced by subscription - counts as “cloud computing.”

Indeed, cloud computing is (visually) much less sexy than that. Cloud computing is “merely” what SaaS applications (usually) run on.

Fritz Nelson of InformationWeek describes CES: Startup Ctera's CloudPlug (Literally) device in this 1/11/2009 post from Las Vegas’s Consumer Electronic Show. Fritz says:

The CloudPlug is a tiny plug with a processor inside, an Ethernet jack and a USB port, with which you can turn any USB device into a NAS and back up your data to Ctera's cloud-based service. …

The company's CEO and co-founder is Liran Eshel, formerly the CEO of SofaWare, one of many companies Checkpoint gobbled up over the years. Eshel says the device has a powerful processor inside, making it what seems like the world's smallest server. Via a web interface you define which folders to share, and with whom, and set it up for automatic backup, which Ctera also offers. This is perfect for a small office that needs simple file services and online backup. Ctera wouldn't specify pricing yet, partly because the company will offer it through managed service providers who will likely set pricing based on connectivity and storage requirements.

Thomas Bittman, a member of the Gartner Blog Network, wrote Cloud Computing and K-12 Education on 11/26/2008. Bittman points out:

Content creation has traditionally been very personal during the K-12 years, and content produced then has often had a very short lifespan. Publishing text, images, films, art, and opinions has been limited to a small audience, and publishing tools were very limited. …

This is no longer true. Anyone can create content that is available to the world instantly, and can last for many years – possibly “forever”. Content can be constantly evolving through collaboration and interaction and updates. People don’t just refer to information, or just copy it, they interact with it. They modify it, they add to it – and this is to be encouraged.

Rob Bagby’s Powerpoints for ‘Best of PDC’ sessions post of 1/9/2009 includes the slides from Demystifying Azure, which Rob describes as follows:

Th[e] goal of this session is to provide a framework for understanding the Azure namespace. This namespace comprises Windows Azure (“The Cloud OS”), Live Services, .NET Services, SQL Data Services, and more.The session will begin with a discussion of the hi-level features of Windows Azure (“The Cloud OS”), including scalable storage, a rich developer experience, automated service management and service hosting. The session will then provide a high-level overview of the services available in Live Services and .NET Services. The session will conclude with a brief overview of SQL Data Services. This session will demonstrate the use of Azure Table Services, SQL Data Services and will illustrate the Developer Fabric.

Andrew Conry-Murray says There's No Such Thing As A Private Cloud in this 1/9/2009 article for InformationWeek’s Plug into the Cloud blog that’s primarily about Parascale, which sells software for the creation of private clouds. I’m inclined to take Andy’s side in the argument.

The SQL Data Services forum has a number of interesting questions posted 1/9/2009 and pending replies by Azure team members:

My answer to the last question is that my tests show the SOAP wire protocol is about twice as fast as REST when manipulating an entity set consisting of the Northwind Customers table’s 91 entities (rows).

Geva Perry’s Accounting for Clouds: Stop Saying CapEx Vs. OpEx of 1/8/2009 offers accounting suggestions and guidelines for comparing the cost of on-premises and off-premises data processing. He promises a ROI analysis post shortly.

Mike Amundsen applauds de hÓra, Subbu, Tilkov: 2009 Data APIs for supporting HATEAOS (Hypermedia as the engine of application state) by legit REST data API’s in his Snowflake APIs post of 1/9/2009.

•• Eric Novikoff’s Are Humans Really Necessary for Maintaining SLAs in the Cloud? article of 1/9/2009 for Cloud Computing Journal carries the following deck:

Are humans really necessary for maintaining SLAs? In today's cloud computing deployments, especially with systems like Amazon's EC2, the users' application is responsible for both measuring and taking action on application performance issues. This complicates deployment and coding, as well as tying your application to a particular cloud provider. However, I believe that the next generation of cloud deployment frameworks will be able to do this automatically, by integrating general-purpose monitoring applications with policy-based cloud management engines. 

Bob Muglia calls Azure roll-out “phased” rather than “slow-motion” in this Q&A: Muglia on the cloud, Azure, and the economy interview of 1/6/2009 by CNet’s Ina Fried. The interview is remarkably similar to that with Redmond Developer News linked below.

Steve Ballmer pays lipservice to cloud computing in his Consumer Electronics Show keynote of 1/7/2009, but the transcript doesn’t include a single instance of him uttering Microsoft’s “Azure” trademark.

• Wally McClure’s podcast, General Thoughts on Windows Azure - Audio only of 1/6/2009, complements his earlier posts on Blob, Table and Queue storage. A Tweet on 1/7/2009 announces that he’ll probably present at CloudCamp Atlanta on 1/20/2009.

Redmond Developer News Q&A with Microsoft's Bob Muglia post of 1/6/2009 is devoted to what appears to be an extensive e-mail interview about Azure with the newly promoted president of Microsoft’s Server and Tools Business.

• Wally McClure wondered on 1/6/2009 about the status of the StorageClient library as an Azure API in his StorageClient thread starter in the Windows Azure forum. Two MSFT representatives and I replied.

Guy Barette, Microsoft Regional Director for Quebec, says in his 2009 Predictions - ASP.NET, BizTalk and LINQ 2 SQL are dead and so are VB, C# and Azure post of 1/5/2009 that these technologies are dead but then goes on to debunk his initial prediction with the “real story" for Windows Azure:

Azure vs apps hosted in the enterprise: Microsoft has taken a bold approach to cloud computing. Instead of hosting your virtual machines running your apps, they will host your apps in a new cloud OS running in their virtual machines. But why would you do that? To drive IT costs down of course. Look, there’s something called a recession going on right now and it’s a nasty one. At some point, your boss will be asked by his/her boss to cut expenses drastically and maybe one way to do it is to go the cloud way. We’ll see but there’s one thing that I’m sure: this will be another tool in your .NET arsenal and it will not make sense to write all apps to run in the cloud. Again, look at your project/assignment, analyse the problem/need and select the right technology to do the job. I’m sure that people will get burned by using the cloud model on projects where it doesn’t make sense.

2009 prediction: Microsoft has a lot of work to do to convince people to move to cloud computing. 

Guy’s 2009 prognostications aren’t the last you hear for the Azure Frameword and Infrastructure this year. You can read other Regional Directors’ predictions in their The Region blog.

Other Cloud Computing Platforms and Services

••• James Urquhart’s Finding distinction in 'infrastructure as a service' post of 1/12/2009 discusses ‘cloud centers,’ a term coined by Randy Bias, chief technology officer of ServePath, who offer GoGrid, to describe hosting companies-turned-cloud providers.

••• Cloud Computing Journal reports Adobe Takes LiveCycle into the Cloud on 1/12/2009:

Kumar Vora, vice president and general manager for LiveCycle at Adobe today announced the availability of Adobe LiveCycle ES Developer Express software - a full version of Adobe LiveCycle ES hosted in the Amazon Web Services cloud computing environment.

“Adobe continues to push the boundaries when supporting its enterprise developer community,” said Adam Selipsky, vice president of product management and developer relations for Amazon Web Services. "We are excited to see Adobe extend to its customers the vast potential for unlocking productivity by providing access to enterprise-scale environments in the cloud by offering developer access to its comprehensive LiveCycle ES solution via Amazon Web Services," he added.

••• Kai describes how to emulate Amazon EC2 and SimpleDB in his Eucalyptus - Free Interfacing (Mocking) of Amazon Web Services post of 1/7/2009. Kai writes:

Usually, when you develop applications that make use of EC2 or S3, you'd need to pay for every bit even though you develop on your local machine or in a staging/testing environment. Amazon is of course very happy about it. But with Eucalyptus running on your in-house hardware, your AWS-powered applications will be very happy to talk to Eucalyptus as if it's the real amazon web services. You can also test drive Eucalyptus without installing anything. Be sure to check EC2 API compatibility and S3 API compatibility first.

•• The Conference on Innovative Data Systems (CIDR) 2008 emphasized social data analysis and cloud computing during its last semi-annual meeting at Asilomar, CA (near Monterey) on 1/4/2009 to 1/6/2009. Highlighted presentations were:

All presentations are available for downloading in individual and collected Electronic Proceedings (13MB) PDFs.

•• John Foley’s Amid Belt-Tightening, Engine Yard Expands The Cloud post of 1/9/2009 observes:

In the past few weeks, Engine Yard has brought in a new CEO, laid off 15% of its workforce, and merged two of its key development efforts. With that out of the way, the Ruby on Rails hosting company appears ready to announce a cloud platform and a new hosting option. …

On Jan. 14, Engine Yard will make two announcements. The company is offering details under embargo, which I declined, but Walley give a few tips about may be coming in the above blog post. He writes that Engine Yard plans to bring out new services based on Amazon Web Services and to release its Vertebra software as open source. Vertebra is a framework for "orchestrating complex processes" on a company's own IT infrastructure or in "the cloud" on Amazon's EC2 or VMware's Vcloud.

It's worth noting that Amazon, along with New Enterprise Associates, invested $15 million in Engine Yard in mid '08. With that in mind, it's not surprising that Engine Yard would be looking to host Rails apps on AWS, if that's what it's doing. However, I would also point out that, unlike some other application hosting companies, Engine Yard actually operates its own data centers, two in the United States and a third planned in London. As Engine Yard looks for ways to manage costs, it will be interesting to see if cutting back on data center expense is one of them.

Mary Hayes Weier takes Larry Ellison’s firm to task for its Oracle On Salesforce.com's Service Disruption post of 1/6/2009. In her 1/9/2009 post, Mary starts with:

Salesforce.com went down worldwide for about 40 minutes Tuesday, marking the company's first notable service disruption in months. There's never a good time for a service disruption, but this one seems particularly ill-timed, given Oracle's sudden bloodthirsty gaze on Salesforce.com's customer base. …

and concludes:

But my sense is Oracle is going to be looking at any way it can to weaken Salesforce's position of strength in the CRM SaaS market. SaaS may not be a highly profitable business model for software companies, but Ellison & team clearly want a piece of it.

James Urquhart describes Amazon’s new control console for EC2 in his Amazon Web Services releases web-based EC2 console post of 1/9/2009.

John Foley’s Managing Amazon Web Services From An iPhone post of 1/8/2009 starts with:

The day has arrived when Average Joe can manage data center resources from a soccer field or the beach using the world’s most popular gadget. Ylastic, an Atlanta-based startup founded last year, has introduced an iPhone version of its management interface for Amazon Web Services.

James Urquhart claims that The biggest cloud-computing issue of 2009 is trust in this 1/07/2009 post to his The Wisdom of Clouds blog. He cites Alan Murphy of the Virtual Data Center blog who points to the dynamic nature of the cloud as a reason why there will need to be more "trust" between customers and vendors and Chris Hoff of the blog Rational Survivability who responds by pointing out that if more trust means less security, we've got a problem.

Penny Crosman’s Cloud Computing Begins to Gain Traction on Wall Street article of 1/6/2009 describes Nasdaq’s use of Amazon Web Services' S3 storage cloud to capture 30 GB to 80 GB of trading activity data per day. Data is uploaded as flat files that contain details of about 10 minutes of a trades in a particular security. Crosman quotes Nasdaq’s Claude Courbois, associate VP, product development, saying that “data retrieval time is less than one second, and the system scales instantly.”

Brokerage firms use Nasdaq’s Market Replay application to show customers and regulators that best-execution requirements were met for a given trade. You can learn more about tool and sign up for a free trial at https://data.nasdaq.com/mr.aspx.

John Foley’s SAP CEO Predicts SaaS 'Disillusionment' post of 1/7/2009 observes Bill McDermott’s contention that:

[N]ow more than ever companies need a full featured, integrated applications platform for running global business operations--mySAP, for example--not half-baked applications from unproven SaaS upstarts.

Foley notes that McDermott is SAP’s CEO and continues with his quote:

“It will take another 36 years for software-as-a-service vendors to do the same thing [as on-premises SAP] in the cloud.”

Cloud Computing Journal reports that former Microsoft tools honcho Tod Nielsen will join VMWare in the newly created position of Chief Operating Officer reporting directly to VMWare CIO Paul Moritz. I knew Tod as the chief marketer for Microsoft Access in its early days (before Access became a member of Microsoft Office.)

John Foley announced on 1/6/2009 a forthcoming Webcast about How Eli Lilly Taps Into The Cloud for pharmaceutical research with Amazon Web Services. You can register here.

Sam Charrington’s Gartner's CIO New Year's Resolutions: Start Taking Cloud Seriously post of 1/6/2009 quotes from Gartner analysts Mark Raskino, John Mahoney and Patrick Meehan outline of 10 tactics that will help CIO’s “survive in 2009,” and put them “ahead of the crowd:”

“You will need to start leading your organization safely in this inevitable direction, or risk being sidelined by its progress.”

Sam, who’s VP of Product Mangement and Marketing for Appistry, paraphrases the report, which requires a Gartner Subscription or $495 to read it:

CIOs are encouraged to immerse themselves (albeit only for a day) in the issues, terms and trends of cloud; test-drive different cloud (SaaS) applications; identify areas in their portfolio that are already helping to explore the cloud landscape; spin up a cloud app development project in ‘09; and start to assess the cost of internal applications of a utility (per-seat, per-month) basis. Later in the report they are encouraged to experiment with EC2-style cloud development.

And concludes:

All in all, I think this is great advice for CIOs, but I think Gartner isn’t pushing them to be aggressive enough. Cloud represents a fundamental shift in “the way of doing things,” and is about more than just SaaS. Many CIOs will benefit from a deeper look into the cloud stack, i.e. at the platform and infrastructure layers as well.

Wednesday, March 05, 2008

LINQ and Entity Framework Posts for 3/2/2008+

Note: Items for March 6, 2008 were moved to LINQ and Entity Framework Posts for 3/6/2008+ due to excessive length of this post.

Microsoft Announces SQL Server Data Services at MIX08

Ray Ozzie's brief announcement of SQL Server Data Services (SSDS) at MIX08 might have been the source for Nick Carr's Rumor: Microsoft about to unveil web-apps strategy post of March 1, 2008 and follow-on Rumor: Microsoft set for vast data-center push of the next day. Other than SSDS, I'd have to agree with Joe Wilcox that Ray Ozzie Says Nothing New, Again.

For a synopsis of the scant documentation for and other stories about Microsoft's data-centric complement to Online Exchange and Online SharePoint, see my SQL Server Data Services to Deliver Entities from the Cloud of March 5, 2008. My conclusion is that the SSDS and .NET Data Services/Entity Framework APIs have diverged.

Added: 3/5/2008 Post updated: 3/8/22008

"Indefinite Hiatus" for Dare Obasanjo's Blog

Dare announced that his Indefinite Hiatus post of March 4, 2008 would be the last to his Carnage4Life blog that started as his kuro5hin diary in 1991. I've been an avid reader of Dare's blog since my early work with and articles and book about XML Web services. I'll miss reading his blog every morning.

Dare was the XML Schema program manager on Microsoft's XML team before moving to the Windows Live group. He's now a program manager on the Contacts & Storage team in Windows Live and has been writing primarily about social networking. I've been most interested in Dare's occasional posts about LINQ, RESTful interfaces, Atom, and other topics of interest to potential users of ADO.NET Data Services.

His early (1991) comment about XML while interning at Microsoft is interesting:

I've picked up XSD, XSLT & XPath while I've been here [at Microsoft] and am stunned by how complicated using XML has been made that almost every spec that deals with it is looks like it can only be fully understood by a Ph.D and is a few hundred pages when printed. Sheesh.

Ain't it the truth, especially for WS-*. (Dare says SOAP = Snakes On A Plane).

There was no word about the future of his Windows Live Spaces blog in the swan song, but Dare mentioned in an IM that it was only echoing his Carnage4Life posts, so it will probably go dark too.

Added: 3/5/2007

Bob Beauchemin Discounts Lack of Blind or Bulk Updates in LINQ to SQL and Entity Framework

Bob outlined six potential problems with LINQ to SQL and Entity Framework as "worry points" in his initial MHO: LINQ to SQL and Entity Framework: Panacea or evil incarnate? Part 1 post of February 13, 2008. The LINQ and Entity Framework Posts for 2/25/2008+ post has pointers to analyses of the first two:

1. LINQ to SQL and EF will proliferate dynamic SQL, and will almost surely produce suboptimal dynamic SQL, causing database performance problems and plan cache pollution. And dynamic SQL is evil to start with.

2. LINQ to SQL and EF will encourage "SELECT * FROM..." style coding because you get back a nice, clean object this way instead of the less-useful anonymous type you receive by doing projection. This will also make most/all covering indexes useless.

Bob's MHO: LINQ to SQL and Entity Framework: Panacea or evil incarnate? Part 3 post of March 1, 2008 tackles the third worry point:

3. LINQ to SQL and EF will encourage "SELECT to middle-tier, then update/delete" rather than issuing direct SQL UPDATE/DELETE statements that are set-based.

I, too, was concerned that EF's lack of DML for blind or bulk updates and deletions would impede its adoption. Bob concludes:

With stored procedures as needed and the realization that most apps use "GET then UPDATE" anyway, I think I'll dismiss this worry.

I agree. Blind and bulk updates in production online transaction processing applications are very uncommon. Because of the potential for serious data corruption, bulk updates should be done with stored procedures and preferably be planned and executed by a DBA.

Added: 3/5/2007

Note: Beginning with this post, links to topics in "LINQ and Entity Framework Posts for MM/DD/YYYY+" posts will include links to intra-page HTML anchors for the related topic.

I'll also mark individual topics as WebSlices when IE 8 gains a wider audience. Jon Udell's WebSlices can help popularize feed syndication post of March 5, 2007 has a great demo of the new WebSlice feature.

Sahil Malik Predicts: Entity Framework Will Become the Standard Architecture for Data-Intensive Applications

SharePoint and ADO.NET guru Sahil Malik's I told you so!! post of March 2, 2008 contains an important prediction:

ADO.NET eF - Will receive significant criticism, but will become the de facto way we write applications going forward.

I assume Sahil means "data-intensive .NET applications."

He goes on to explain his doubts about LINQ to SQL:

Microsoft's data access story: About 2 years ago, when I first played with DLINQ (now rechristened to LINQ to SQL), I basically flat out said - This is for RAD development/prototyping - not good enough for production environments. To be very specific, I had said ...

".... where your  logical model could be sufficiently disjoint from the conceptual model. So DLINQ (now LINQ to SQL) was ideal for situations where your logical model was very close to the conceptual model. Of course, you had better chances of finding a hot bikini model who was also a C++ programmer, than to find an application where the logical and conceptual model would be the same....".

I also expressed a more comprehensive opinion not too long ago.

Sahil also predicts the demise of technical books, that SharePoint vNext "will blow your mind," and Silverlight 2 won't succeed because it doesn't support search engine optimization (SEO). His other 10 predictions are far more vague.

Danny Simmons: More on the ObjectContext Lifecycle and Need for a Separate Data Layer

Danny's More about how to fit the ObjectContext into apps post of March 2, 2008 responds to Rick Strahl's suggestion to use one ObjectContext per business object, which raises obvious issues with associated entities. Danny recommends a single ObjectContext per session (or per thread for multithreaded apps).

He also says "no" to the question of "should you explicitly write a layer that hides all data access like we used to do?" The Business Objects layer he describes contains a combination of generated code for the ObjectContext partial classes and custom partial classes to implement business logic.

Danny concludes:

Of course there's nothing that says you can't write your own data layer which encapsulates the EF code that I described as the data layer, but for many applications I tend to think that will make your life harder for relatively little benefit.  One of the main reasons we would write a completely separate data layer in the past is that we wanted to isolate the business logic from changes in database schema and the like.  The EF now does that for you with its mapping layer.

The problem with this architecture is isolating persistence operations from unit tests for Test Driven Development, as Diego Vega discusses below.

Diego Vega on Test Driven Development with the Entity Framework

Diego's Unit Testing Your Entity Framework Domain Classes post of March 2, 2008 provides the following general guidelines for performing unit tests on an Entity Data Model (EDM):

  • Encapsulate domain classes by factoring "all code that deals with IQueryable<T>, ObjectQuery<T>, and IRelatedEnd.Load()" into a "separate DAL component."
  • Expose explicit data retrieval functions instead of ObjectContext<T> or IQueryable<T> objects.
  • Eager-load associated entities for mocking (but lazy loading is OK for production).
  • Mock with a "metadata-only" ObjectContext to gain persistence ignorance.
  • Redirect SaveChanges() invocations to AcceptAllChanges() for tests.
  • Create a new ObjectContext after the preceding action.
  • Don't involve EntityKeys in business logic.

A few of Diego's recommendations appear to me to have internal or external inconsistencies.

Ian Cooper demonstrates the complexity of mocking LINQ to SQL DataContext objects with a repository model in his Architecting LINQ To SQL Applications, part 5 post of February 17, 2008. Similar problems are inherent to mocking the persistence features of an EDM. Ian provides more background on swapping from LINQ to SQL to LINQ to Objects and vice versa in his original Being Ignorant with LINQ to SQL post of June 10, 2007. See also my Ian Cooper Takes on DDD, TDD and PI with LINQ to SQL post of June 11, 2007, and the earlier (and longer) Persistence Ignorance Is Bliss, but Is It Missing from the Entity Framework? post of March 14, 2007.

Diego concludes:

It is actually premature to use the word “conclusion”. Mixing EF and TDD in the same pan is something I am only starting to think about. This is a set of scenarios that I want to see among our priorities for future versions.

In order to come to a real conclusion, I need to at least develop a sample application in which I apply and distill the approaches I am suggesting in this post. I hope I will find the time to do it soon.

I, too, hope he finds the time to do it soon.

New "Model Domain Objects with the Entity Framework" Article in Visual Studio Magazine for March 2008

Visual Studio Magazine's March 2008 cover story is my "Model Domain Objects with the Entity Framework" article. Here's the deck:

Microsoft's ADO.NET Team readies Entity Framework and Tools 1.0 for release as a VS 2008 add-in with enterprise-level features that LINQ to SQL doesn't offer—domain object modeling, flexible inheritance techniques, multiple database vendors, and do-it-yourself n-tier deployment.

The story covers new and modified EF features since my "Objectify Data with ADO.NET vNext" article in the October 2006 issue.

A sidebar describes Danny Simmons' EntityBag (Perseus) project for "do-it-yourself n-tier deployment."

Erratum: Entity SQL does have a JOIN command but it's used to join unrelated entities only. The eSQL NAVIGATE command is used with associations and navigation properties, which represent INNER JOINs at the conceptual level.

Repeated from previous week's post.