Friday, December 22, 2006

.NET Framework 3.5 for Orcas Appears Official

Rumors of .NET Framework 3.5 (a.k.a., .NET Fx 3.5) as the moniker for the Visual Studio "Orcas" LINQ and ADO.NET vNext add-on to .NET Framework 3.0 were confirmed today by a "Notes on the January CTP" post on Charlie Calvert's (C#) Community Blog. Here's the quote:

In the Solution Explorer (usually found on the right of the IDE, go to the references section and add one or more of the following: System.Core.dll, System.Xml.Linq.dll and System.Data.Linq.dll. You can find these files on your hard drive in the \Windows\Microsoft.NET\Framework\v3.5.XXXXX\ directory. They will be added for you automatically in later builds of Orcas, but in these early pre-beta builds you may have to add them yourself. [Emphasis added.]

For more on the belated Orcas December 2006 CTP, now Orcas January 2006 CTP, see these posts:

Technorati Tags: Orcas, .NET Framework 3.5, .NET Fx 3.5, .NET 3.5, Visual Studio, .NET Framework

Orcas December 2006 CTP Delayed to January

A new "Notes on the January CTP" post on Charlie Calvert's (C#) Community Blog this morning (12/22/2006) announced a delay in long-awaited Orcas December 2006 CTP. Here's Charlie's explanation:

The January CTP (formerly known as the December CTP) should be out shortly after the new year. We are sorry about the delay; it is due in part to the huge December 14 storm that knocked out the power for over a million residents here in the Seattle area.
According to Charlie's updated "Community Convergence XV" post, the January 2007 CTP will drop "the first week of January." Note: .NET Framework 3.5 now appears to be the official Orcas version. The new System.Core.dll, System.Xml.Linq.dll and System.Data.Linq.dll files will be located in a \Windows\Microsoft.NET\Framework\v3.5.nnnnn\ folder. To prepare developers for the overdue CTP, Charlie has posted (unofficial) pending updates to the May 2006 CTP for:
  • Syntax and Reference Changes
  • Project File Changes
  • Array or Collection Initializers
  • Other API Changes
The most significant changes are to replace Imports System.Query with one or more of these Imports directives: System.Linq, System.Xml.Linq, or System.Data.DLinq. Following are links to earlier OakLeaf posts on the former December 2006 CTP: Stay tuned for further developments. Technorati Tags: Orcas, ADO.NET vNext, Entity Framework, Entity Data Model, LINQ, LINQ to Entities, LINQ to DataSets, LINQ to SQL, Entity SQL, eSQL, DLinq, XLinq, C# 3.0, VB 9.0

Monday, December 18, 2006

Is Beta SQL Server Express SP2 for Vista an Issue?

The CNNMoney.com site published Business 2.0 magazine writer Owen Thomas's December 15, 2006 "Vista flaw could haunt Microsoft" article with this deck:

"Microsoft wants a bigger piece of Oracle and IBM's database business, but an oversight in its new operating system could cost the company plenty."

The upshot of the article? SQL Server 2005 Express Edition (SSX) isn't licensed to run today on Windows Vista desktops, so Microsoft loses bigtime. Here are bullet points for the article's primary assertions:

  • "A company that deftly moved from strength to strength, leveraging its dominance in one area of software to command other parts of the tech business ... is long gone, folks."
  • Microsoft "has lost its Midas Touch ... in [i]ts bid for a bigger piece of the $14 billion database business, a sector now ruled by Oracle and IBM."
  • [C]ompanies looking to install Vista, which went on sale to corporate customers Nov. 30, are going to have to get their database management software someplace else.
  • "IBM has beaten Microsoft to the punch. Last week management software, called DB2 9 Express-C, that's compatible with Vista.IBM released a desktop version of its competing database." [Emphasis added.]
  • Google "is beating Microsoft in other arenas ... [because Microsoft] has forgotten how to execute its own playbook of launching a coordinated wave of products that all work together."
  • "Microsoft will get this straightened out - eventually. By then, it just might be time to launch another version of Windows."

The foregoing egregious example of breathless journalism begs these issues:

  • SSX SP-1, the current incarnation, is fully supported on Windows Vista, according to the December 19, 2006 "Inaccuracies in recent CNNMoney.com article about SQL Express and Windows Vista" post on Microsoft's SQL Server Express blog, the SQL 2005 Server Express Edition System Requirements page, and the SQL Server 2000 (including MSDE) on Windows Vista FAQ page. (Thanks to Microsoft's Mike Wachal for bringing this to my attention in this post's Comments.)
  • It's SSX with Advanced Features (SP) that isn't supported by Windows Vista. This SKU, which includes SQL Server Management Studio Express (SSMSX) and enables full-text search plus local SQL Server Reporting Services, currently is used primarily by developers and DBAs. These first two points effectively moot the remaining issues.
  • Deployment of SSX, Microsoft Data Engine (MSDE) 1.0, and Microsoft Desktop Engine (MSDE) 2000 for local data storage on desktops and laptops remains relatively uncommon. Jet 4.0, which is included in the Windows XP and Vista operating system and used by Access, Visual Basic 6.0/200x, and other .NET and COM-based front-end apps is a much more common back end than SQL Server.
  • The most common application for the three freely distributable SQL Server versions is as a multiuser back end for workgroup or divisional database applications that need more robustness, reliability, and scalability than Jet 4.0 offers. In this case, the back-end server almost always resides on a domain or workgroup server that isn't a candidate for a Vista desktop upgrade.
  • The cost of modifying client-side applications to run another "free" database, including moving the stored data and testing the resulting client/server reconfiguration, is astronomical compared to waiting briefly for the release version of SSX SP2 and its data management/support tools.
  • The only other sources of free client/server databases that come even close to matching SSX's capabilities are IBM and Oracle. IBM hadn't even released a technical preview of DB2 9 Express-C for Vista as of December 13, 2006 (They released a technical preview on December 19, 2006 at about 12:00 p.m., see below). As of December 18, 2006, Oracle hadn't made an announcement about the compatibility of Oracle Database 10g XE with Windows Vista (see below).
  • SSX with Advanced Services offers SSRS and FTS features; neither IBM DB2 9 Express-C or Oracle Database 10g XE include fully customized reporting or high-performance, indexed full-text search features.
  • I haven't seen reports of any significant problems incurred by upgrading MSDE 1.0 or 2000 databases to SSX running under Windows Vista. I've moved multi-GB database (.mdf/.ldf)files from MSDE 2000 to SSX under Vista without difficulty.
  • Windows Vista's official release date is January 30, 2007. Until then, judgements about Microsoft's loss of revenue from not releasing the RTM version of SSX SP2 are premature.

Full Disclosure: As mentioned in my profile to the right, I make a significant part of my living writing about Microsoft productivity applications, operating systems, database platforms, and new data-related technologies.

A Forthcoming "Technical Preview" of DB2 9 Express-C for Windows Vista: When?

IBM issued a December 7, 2006 press release that claimed DB2 9 Express-C was ready to run on Windows Vista. However, in a subsequent December 13, 2006 "DB2 Express-C on Vista!" post, the DB2 Express Community team's Ryan Chase said "[W]e will be providing a tech preview of DB2 Express-C on Vista before year end." [Emphasis added.] On December 19, 2002, the link to this page was the top item of the News section of IBM's main page for DB2 Express-C under the following graphic:

The full text of the "DB2 Express-C on Vista!" post is here, in case it disappears from the IBM site:

Hello,

Some of you may have seen the press already, for those that haven't, IBM has announced that DB2 Express-C on Vista will be available soon! We are ironing out the final bugs and doing some final testing as we speak, and we will be providing a tech preview of DB2 Express-C on Vista before year end. (I'm hoping it's much sooner, but I don't want to make promises I can't keep.)

This is a tech preview of the official Vista support in DB2 9, which will be coming very soon! (Stay tuned for official announcement info.)

Ryan Chase DB2 Express Community team

Ian Hakes, IBM DB2 UDB Express Community Facilitator, posted on December 19, 2006 at 12:32 p.m. a "See the view from the Vista" message on the IBM DB2 Express forum, announcing that the Vista-enabled version was now ready for download by registered IBM Website users. Here's the download description:

DB2 9 Express-C for Windows Vista on 32-bit AMD and Intel systems (x86) (Technology Preview) db2exc_91_WIN_Vista_x86.zip (350MB) [emphasis added]

According to an e-mail to me from Owen Thomas, as well as a comment to his December 15, 2006 "Vista's Database Failure" blog post on the subject, IBM said they had withdrawn the download for a bug fix and reinstated the download today (after the first set of today's updates were posted). However, he didn't mention in his article, comments, or the e-mail that the Vista-enabled version was a technology preview, not a fully released version.

It's doubtful that any rational IT executive would abandon SSX on a Vista upgrade for a promise that IBM might sometime deliver a DB2 9 Express-C Vista release—let alone a technology preview.

Most technology reporters I know look beyond press releases to verify a new or upgraded product's status.

Note: DB2 9 Express-C has the fewest operating restrictions of the three Express products: "DB2 Express-C can be run on up to 2 dual-core CPU servers, with up to 4 GB of memory, any storage system setup and with no restrictions on database size or any other artificial restrictions." The license agreement confirms these two restrictions.

Subsequent DB2 9.1 Express-C installation: On December 19, 2006, I installed DB2 9 Express-C for Windows Vista on a Gateway S-5200D system with a 2.8-GHz Intel Pentium D(ual Core) processor, 2 GB RAM, and an nVidia GeForce 6600 GPU with 256 MB RAM. The installation process threw an 'ADM10500E Health indicator "Monitor Heap Utilization" ("db2.mon_heap_util") breached the "upper" alarm threshold of "95 %" with value "100 %" on "instance" "DB2"' error, several 'Faulting application db2InstallEventLog.exe, version 9.1.100.164, time stamp 0x457d788d' errors, and many warnings but ran to completion. During operation, the Java Launcher throws "The color scheme has changed" notices on startup. It appears to me that the Technical Preview needs a few warts removed.

IBM DB2 Add-In for Visual Studio 2005 installation: I also installed and confirmed compatibility of the IBM DB2 Add-In for Visual Studio 2005 with the Visual Studio 2005 Service Pack 1 Update for Windows Vista Beta. I connected to my DB2 instance with my Domain Admins account with the native IBM DB2 Data Provider for .NET Framework 2.0, created a Data Source from the SAMPLE database's PRODUCT and INVENTORY tables, and tested DataGridView and details data entry forms.

Note: Microsoft released VS 2005 SP1 for other platforms on December 14, 2006.

No Oracle Database 10g XE Support for Windows Vista

Oracle Database XE System Requirements state that Oracle XE supports "[o]ne of the following 32-bit Windows operating systems:

  • Windows 2000 Service Pack 4 or later
  • Windows Server 2003
  • Windows XP Professional Service Pack 1 or later"

The only reference to Oracle support for Windows Vista I've been able to find is his vague statement from Tom Haunert in the special 2006 Windows edition of Oracle Magazine: "Oracle is working with Windows Vista and other Microsoft technologies today in order to provide Oracle customers with new solutions for Windows tomorrow."

Note: Oracle XE's minimum server component diskspace requirement is 1.6GB, making the product impractical for use as a client-side data store. Clients also require installing the 75-MB client component.

My Experiences with the SSX SP2 November 2006 CTP for Windows Vista

I installed the Windows Vista Ultimate Edition RTM (Gold Code) from the MSDN site on a Gateway S-5200D with a 28-GHz Pentium D, 2 GB RAM, and 180-GB SATA drive. I then installed SQL Server 2005 Express Edition with Advanced Services SP2 - November 2006 CTP from the download site. I included SQL Server Reporting Services (SSRS) and Full-Text Search (FTS) features and accepted the default options when running the installer. I then specified TCP/IP and Named Pipes connectivity and enabled CLR Integration with the SQL Server Surface Area Configuration Tool.

I then began creating, updating, and upgrading databases up to 1.2GB in size from SSX and MSDE 2000 running under Windows XP and Windows Server 2003. The only issue I encountered was failure of the Surface Area Contriguration Tool to open a port for SQLServer.exe in Windows in Windows Firewall. (The tool opened UPP Port 1434 for the SQL Browser service but not for the randomly-assigned TCP/IP port for the non-default OAKLEAF-WV20\SQLSERVER named instance.) I haven't tested SSRS or FTS extensively so far, because none of SSX's no-charge competitors offer these high-end features.

After serveral days of testing, the Application event log showed a single "The configuration of the AdminConnection\TCP protocol in the SQL instance SQLEXPRESS is not valid" error message, which I attribute to SSX's lack of a dedicated administrative connection.

Possible Microsoft Missteps

Here's where I think Microsoft went wrong:

  • In my opinion, the decision to embargo MSDE 1.0 and 2000 from Windows Vista systems, which I reported in a July 11, 2006 "Windows Vista Won't Support MSDE 1.0 and 2000" Post, was a serious public relations error.
  • The October [sic] CTP end-user license agreement (License_EXPRCOMP_ENU.txt) in the \Program Files\Microsoft SQL Server\90\EULA folder requires "another agreement" from Microsoft to "test the software in a live operating environment" but doesn't tell you how to obtain such an agrement.
  • The same EULA (and License_EXPR_ENU.txt for SSX SP1) states that "Microsoft provides Internet-based services with the software. It may change or cancel them at any time." The EULA doesn't define "Internet-based services." However, loss of use with or support by Internet Information Services (IIS) 7.0 would be a disaster for many small organizations who depend on SSX as a Web site datasource.

However, I don't believe any of the preceding issues will affect Microsoft's future revenue stream from Windows Vista or SQL Server significantly.

Updated: 12/19/2006: Minor additions. 12/19/2006, 2:30 p.m. PST: Major additions and changes. 12/20/2006: Minor additions.

Missing LINQs in Orcas December 2006 CTP

It appears that the impending Orcas December 2006 CTP won't incorporate several important elements of the LINQ May 2006 CTP. According to the "The December Orcas CTP and SP1" topic of Charlie Calvert's December 18, 2006 post, Community Convergence XV, the December 2006 CTP will include "many of the features from the May LINQ CTP," specifically "most of the LINQ to Objects feature set." Update 12/29/2006: The Orcas December 2006 CTP has moved to January 2007. See Orcas December 2006 CTP Delayed to January. Charlie goes on to say:

In the February CTP, the team aims to complete the process by adding support for LINQ to SQL, LINQ to Entities and the LINQ Designer. ... The May LINQ CTP still contains some features, notably LINQ to SQL, which are not likely to be part of the December Orcas CTP. [Emphasis added.]
The probable absence of LINQ to SQL from the Orcas December 2006 CTP indicates to me that the ADO.NET team's entire Entity Framework, which includes LINQ to SQL, LINQ to Entities, Entity SQL (eSQL), and the Entity Data Model Designer, might be missing from this CTP. I quoted Pablo Castro in my Orcas December 2006 CTP Coming with New LINQ/EDM Bits post:

As we make progress on the Orcas release of Visual Studio, the various teams—including ourselves—are working hard at integrating everything in a single product, Visual Studio Orcas. For the ADO.NET Entity framework this means that you won’t see component-specific CTPs any more for Orcas, and instead you’ll see Orcas CTPs that have all these technologies incorporated. We may still do separate CTPs of related technologies if we see that it would help at some point in time.

Also, since the ADO.NET Entity Framework is in the Orcas builds, we don’t need the generic “vNext” token for it; from now on we’ll refer to it simply as ADO.NET Orcas, which will include the ADO.NET Entity Framework and LINQ to ADO.NET in its various flavors (LINQ to DataSet, LINQ to SQL and LINQ to Entities).

The handwriting on the wall says we might need to wait for the February CTP to see an update to the ADO.NET vNext August 2006 CTP.
If you want to continue to work with LINQ to SQL, you'll need to run the LINQ May 2006 under VS2005. It appears that newly-released VS 2005 SP1 and the LINQ May 2006 CTP have created their own version of DLL Hell. You should install the LINQ May 2006 CTP bits after installing VS 2005 SP1. In his Installing Visual Studio 2005 Service Pack 1 and the May LINQ CTP post, Charlie suggests that you:
  1. Remove the LINQ May 2006 CTP bits
  2. Remove pre-RTM VS 2005 SP1 if you've installed a beta or CTP
  3. Install VS 2005 SP1 RTM version
  4. Install LINQ May 2006 CTP
If you're running under Windows Vista, the VS 2005 SP1 download page says:
For developers using Visual Studio 2005 on Windows Vista, Microsoft is in current development on an update to Service Pack 1 called the 'Visual Studio 2005 SP1 Vista Refresh Beta’. This update builds on the improvements made in SP1 and delivers a first class experience for developers wanting to take advantages of the new features in Windows Vista. The Visual Studio 2005 SP1 Update for Windows Vista is expected to ship after the consumer availability of Windows Vista in Q1 of 2007 and is now available in beta.
As of December 18, 2006, Visual Studio 2005 SP1 Update for Windows Vista Beta is "not available" from the download site. The Visual Studio 2005 SP1 Update for Windows Vista Beta reappeared on December 20, 2006. Technorati Tags: Orcas, ADO.NET vNext, Entity Framework, Entity Data Model, LINQ, LINQ to Entities, LINQ to DataSets, LINQ to SQL, Entity SQL, eSQL, DLinq, XLinq, C# 3.0, VB 9.0

Thursday, December 14, 2006

Visual Basic for MS-DOS is a Killer App of All Time?

Peter Coffee's "25 Killer Apps of All Times" December 14, 2006 slideshow for eWeek carries this deck:

Microsoft's Vista has widely inspired the "Why do I need that?" question, which past "killer applications" have answered in different ways for different platforms during three decades of personal computing.
Here's Peter's "Visual Basic 1991" slide that caused a double-take:

The screen capture is Visual Basic for MS-DOS (codenamed "Escher"), not Visual Basic for Windows 1.0 (or Visual Basic for OS/2, either). The ACM has a Microsoft Guide to Visual Basic for MS-DOS (ISBN 1-55615-478-X, 1993) in its archive, and the PhatCode site has more screen captures and the original executable. SAMS Publishing offered a Visual Basic for DOS Developer's Guide, which I believe was a non-starter.

Note: The original VB for Windows 1.0 manual, as I recall, had "Version 1.0 for Windows and OS/2" on the cover. As the slide states, Microsoft didn't release the OS/2 version. Peter's blog item for the presentation is here. His comment on this item is here.

I was an Escher beta tester and recall being underwhelmed by the final product, which Microsoft released in September 1992. At the time, I was working with the "Rawhide" Professional Extensions for VB 1.0, and writing my first book, Using Visual Basic, for Que Publishing. The full story is in "An (Almost) Lifetime of BASIC."

Anders Hejlsberg's Recent LINQ/C# 3.0 Presentations

Anders Hejlsberg, Microsoft Technical Fellow and chief architect of the C# language, gave two LINQ-related presentations at Tech•Ed Developers 2006 (a.k.a. Tech•Ed Europe 2006) held in Barcelona on November 7 to 10. Microsoft EMEA recently posted videos and slides of the two sessions on their "ShOtime" site. There isn't much new in the presentation contents but—if you're new to LINQ and C# 3.0—you should find the topics interesting. Visual Studio: The .NET Language Integrated Query (LINQ) Framework Overview

Modern applications operate on data in several different forms: Relational tables, XML documents, and in-memory objects. Each of these domains can have profound differences in semantics, data types, and capabilities, and much of the complexity in today's applications is the result of these mis-matches. Anders Hejlsberg, Technical Fellow and chief architect of the C# language will explain how the Orcas release of Visual Studio aims to unify the programming models through LINQ capabilities in C# and Visual Basic, a strongly typed data access framework, and an innovative Application Programming Interface (API) for manipulating and querying XML.
Length: 1:05. Download slides here. Main session topics:
  • The LINQ Project
  • Demo: LINQ to Objects
  • C# 3.0 Language Innovations
  • LINQ to SQL and XML
  • Demo: LINQ to SQL and LINQ to XML
  • LINQ Architecture & Components
C# 3.0: Future Directions in Language Innovation

Join Anders Hejlsberg for an in-depth walkthrough of the new language features in C# 3.0. Understand how features like extension methods, lambda expressions, type inference, and anonymous types make it possible to create powerful Application Programme Interfaces (APIs) for expressing queries and interacting with objects, XML, and databases in a strongly typed, natural way.

Length: 1:06. Download slides here. Main session topics:

  • The Evolution of C#
  • Extension Methods and Lambda Expressions
  • Demo: Lambda Expressions and Extension Methods
  • Initializers and Query Expressions
  • Anonymous Types and Expression Trees
  • Demo: Expression Trees
  • Automatic Properties and LINQ Technical Preview

Technorati Tags: Orcas, LINQ, C# 3.0

Tuesday, December 12, 2006

Microsoft's Data Access APIs: ODBC to LINQ

Mike Pizzo, an Architect on the Data Programmability team at Microsoft, has started a four part series that captures the history of Microsoft's alphabet soup of data access APIs and the layout of acronyms to come. Here are the topics, with a link to the first two:

I'll update this post as new episodes hit the blog.

Commentary

It's back to the "early years" for Access 2007. The Access team now recommends abandoning Access Data Projects (ADPs) with SQL Server tables connected by OLE DB to DocObject front ends and ADODB in favor of old-timey ODBC-linked tables and DAO.

Here's Mike's take on ODBC and DAO in Access:

And then something happened. Visual Basic became popular as a scriptable "automation language". ODBC, being a C-style interface, was not directly consumable from VB. However, some of you clever folks figured out that Microsoft Access supported executing queries against ODBC Datasources, and that Access did support scriptable automation through its Data Access Object (DAO) API. Voila! Now you could write applications against ODBC sources using VB.

However, DAO went through Access's internal "Jet" (Joint Engine Technology) database engine, which defaulted to building local keysets for each result in order to do advanced query processing and cursoring against the remote data. This was fine if you needed that functionality, but significant performance overhead and additional round trips when you didn't.

Déjà vu all over again! DAO is the only API that supports the new Access Attachment data type, multi-select lookup fields, and "rich-text" and append-only memo fields of SharePoint lists.

So the Access team now suggests that developers abandon SQL Server 2005 Express back ends in favor of links to non-relational Windows SharePoint Services (WSS) 3.0 or Microsoft Office SharePoint Services (MOSS) 2007 lists.

Updated: 12/14/2006 for Part II; 12/24/2006 for Part III; 1/24/2007 for Part IV

Saturday, December 09, 2006

Jon Udell Moves from InfoWorld to Microsoft

Veteran technology writer, analyst and eclectic Web developer Jon Udell will cease writing his "Strategic Developer" column and "Jon's Radio" blog for IDG's InfoWorld magazine on December 15, 2006. After a month's hiatus, he'll start his new job as a Microsoft "evangelist for the Net." Jon will report to Jeff Sandquist who runs Microsoft's Channel9 and On10 sites. Jeff Sandquist is Robert Scobel's former boss. Note: Robert worked for Fawcette Technical Publications when I wrote my first article for Visual Basic Programmer's Journal, now Visual Studio Magazine. Jon described his future activities at Microsoft on December 8, 2006 in A conversation with Jon Udell about his new job with Microsoft:

That means blogging, podcasting, and screencasting on topics that I think are interesting and important; it means doing the kinds of lightweight and agile R&D that I've always done; and it means brokering connections among people, software, information, and ideas—again, as I've always done.
He went on to clarify his role and expectations in a new JonUdell WordPress blog. He'll continue working from his office in Keene, NH and spend about one week per month in Redmond. Jon as an XML Evangelist I worked with XML Web services in the early .NET 2002 days, wrote a book on the topic and ended up one of the winners of a Microsoft .NET Web Services contest. But it was Jon's early promotion of semi-structured XML for data interchange that got me interested in XML as a data-interchange format with Jean Paoli's InfoPath and resulted in my writing Introducing Microsoft Office InfoPath 2003 for Microsoft Press. Over the almost five-year period from 1/3/2002 to 11/15/2006, Jon wrote 148 columns, blog posts, analyses, and reviews that contained the term XML. Note: I ran this InfoWorld power search to return a table with rows for each article, imported the table into Excel and then into Access to improve searching and sorting. Jon's articles and posts on XQuery encouraged me to abandon Transact-SQL for a few days and try Microsoft's original XQuery implementation for .NET 1.0—an interactive preview of and downloadable code for the Microsoft.Xml.XQuery classes, which was at http://131.107.228.20 in mid-2002. The interactive demo—shown in the screen capture below—and its use cases worked well enough that I wrote a "Get Ready for XQuery" article and a downloadable .NET Web form app for Fawcette's XML & Web Services Magazine (free registration required for page 2 and beyond).

(Click screenshot above for full-size image.)

Jon's November 15, 2006 "Strategic Developer" column, XQuery and the power of learning by example, stresses the importance of use cases as XQuery tutorials and laments the lack of use cases in Extensible Business Reporting Language (XBRL). Notice the start of a list of W3C Use Cases in the left frame of the preceding Web page.

Microsoft's removal of XQuery support from .NET 2.0 was a major disappointment for me, but the SQL Server 2005 xml data type's XQuery support compensates—at least in part—for its 11th-hour excision from the .NET Framework. Jon's April 26, 2005 A conversation with Michael Rys about SQL Server 'Yukon' blog post provides a succinct overview of SQL Server 2005's XML and XQuery support and is a great companion piece to my slightly earlier "Exploit Yukon's XML Data Type" article. Jon's other XQuery articles greatly influenced Chapter 12, "Exploring the XML Data Type," of Expert One-on-One Visual Basic 2005 Database Programming.

Note: Now that XQuery 1.0 is a W3C Proposed Recommendation, hopefully Microsoft will implement the missing Let keyword and incorporate the XQuery classes as an Orcas add-on to the .NET Framework. Although LINQ to XML (formerly XLinq) and LINQ to XSD (a.k.a. LINQ to XML Objects) has a more elegant, SQL-like query syntax, XQuery is finally closing in on Recommendation status. Jon on Language Integrated Query (LINQ) Jon was one of the early proponents of Microsoft's LINQ technologies. He first wrote about LINQ in his September 13, 2005 An interview with Bill Gates from PDC 2005 blog/podcast, which includes a transcription. His initial take on LINQ:

The biggest round of applause, I think, went to Anders Hjelsberg, whose LINQ technoloogy was shown issuing SQL-like queries, as native C# syntax, to query in-memory CLR objects, to query SQL tables, and to perform joins between both. On the XML side, LINQ was used to construct XML, though not to query it—I'll want to ask Anders about that when we meet later this week.

He followed up with a September 21, 2005 Microsoft driving toward .Net unity "Strategic Developer" column based on PDC 2005 presentations:

LINQ is an extraordinary innovation that turns traditional query inside out. But the bigger story from PDC 2005 is that the .Net vision of unifying many balkanized disciplines within the Microsoft ecosystem is finally becoming a reality.

His LINQ 101 blog post a week later demonstrated the code for a three-way join across an XML data source and two CLR objects. His conclusion:

Could you the same thing in XQuery? Sure, given three sources of equivalent XML data. And in fact the preview includes implementations of the XQuery use cases. LINQ's home base, though, is the domain of CLR objects. From there it extends its generalized query operators into the realms of objects, XML, and relational data. All of the capabilities of the .NET Framework are available within -- and across -- these contexts. What's more, you can invent new query operators using C# and the Framework.

When I said that LINQ turns query inside out, I wasn't kidding. There is a lot here to think about and explore.

Jon got his chance to interview Anders Hjelsberg for his May 12, 2006 A conversation with Anders Hejlsberg about the May 06 preview of LINQ podcast (with transcript). Here's Jon's conclusion:

I'm not certain myself how much of LINQ is genuinely new, and how much is a creative synthesis of pre-existing ideas, but I do know that I'm fascinated by what it can do and where it might go. Its reach will ultimately be determined by the extent to which non-Microsoft databases of all flavors—relational, object, XML—are willing and able to plug into the LINQ framework. To that end, one of the most significant points in today's interiew is the announcement of IQueryable, an interface that formalizes how providers plug into LINQ. Watching the uptake of this mechanism by third parties over the next year or so will tell us a lot about whether LINQ will be a Microsoft-only phenomenon or something that more broadly influences the industry.

Well said. I'd like to hear Jon's thoughts on LINQ for XSD, despite it's Alpha 0.1 preview status, and PLINQ, which doesn't yet have a publicly available implementation.

So here's hoping that Jon won't expend all his Channel9 and On10 efforts on the Web, social networking, public libraries, and the like, but will continue evangelizing XML, XSD, XSLT, XQuery, and LINQ and analyzing trends in these technologies in his new role at Microsoft.

And here's wishing Jon best of luck at Microsoft. As I said in my comment to Jon's blockbuster post: "It’s by luring folks of your stature that Microsoft succeeds."

Technorati Tags: Jon Udell, XML, XSD, XML Schema, XQuery, LINQ to XSD, LINQ to XML Objects, LINQ to XML, XLinq, LINQ to SQL, DLinq, C# 3.0, VB 9.0, Orcas

Note: I've added a Jon Udell tag to all OakLeaf blog posts the mention Jon.

Orcas RTM to Slip from 2007 to 2008?

Will the proliferation of LINQ to Whatevers, Entity Framework/Data Model accoutrements, ASP.NET Ajax extensions, and other "hot new features" push Orcas's RTM date into 2008? Will Orcas become another Windows Vista? My May 15, 2006 Scott Guthrie on Orcas RTM Dates and LINQ with ASP.NET post quoted a May 14 ScottGu post:

We are looking to ship [Orcas] the second half of next year. We will start having full Orcas CTP drops (of all technologies) starting later this summer, and will also have a go-live license of Orcas before the final RTM date. So not too far off now when you can use the above [LINQ]techniques in production.

Scott gave Orcas another go for 2007 in his September 11, 2006 "Atlas" 1.0 Naming and Roadmap item:

Things will get even better next year with Visual Studio “Orcas” where we are adding rich JavaScript [I]ntellisense, debugging and WYSIWYG designer support for the ASP.NET AJAX Extensions within Visual Studio and many other great features to take advantage of.

But Mary Jo Foley contends in her recent "Foley on Microsoft" column for Redmond Magazine, "Microsoft Prognostications: What's Up in 2007?"...
Visual Studio "Orcas" will slip into 2008. While most developers and partners with whom I've spoken consider Visual Studio "Orcas" to be a 2007 deliverable, few Microsoft developer division officials have called the product "Visual Studio 2007." I'm hearing rumblings of an early 2008 product.

She calls the prognostication "On the 'relatively reasonable'" side in the Let the 2007 Microsoft prediction season officially begin post for her "All About Microsoft" ZDNet blog.

Following up in a December 7, 2006 in The Microsoft dating game post, Mary Jo wrote:

I Googled. I Live-Searched. I Asked.com. I couldn't find any proof that any Microsoft official actually said the words "Orcas will ship in 2007" — at least in an on-the-record form. (If anyone else can find such a statement, please do share!)

As I and other Microsoft watchers know quite well, Microsoft has been setting expectations since 2005 that it plans to ship the next version of Visual Studio in 2007. No one at Microsoft has sent me a nasty note when I've noted in countless articles and blog posts that Orcas is expected to be a 2007 deliverable. And if past behavior counts for anything, the Visual Studio team has been good about churning out new tool-suite releases every two years.

I'm not certain that ScottGu qualifies as a Microsoft official; he's not in the Microsoft Executives list. But he said at least twice that Orcas was scheduled for a 2007 RTM, and he certainly convinced me. On the other hand, Mary Jo has a great batting average for reportorial accuracy in my book. Type Foley in the text box and then click SEARCH BLOG to find my prior references to her articles.
Stay tuned.
Subsequent events (12/12/2006) It appears that the party line is the second half of 2007. Here's an outtake from a 12/12/2006 LINQ to SQL chat from Microsoft's Amanda Silver:

AmandaS [MSFT] (Expert): Q: [19] any estimated release date [for Orcas]? ... [I] am waiting for any offcial date...

A: We're aiming to ship in the second half of next year. We've already started having fully integrated CTPs (with features in all areas of the product.)

Amanda is Lead Product Manager for Visual Basic. Her statement and the earlier quote from Scott Guthrie are too similar to be coincidental. (The transcript for the C# LINQ to SQL chat is here.)

Technorati Tags: Orcas, LINQ, C# 3.0, VB 9.0, Atlas, Ajax

OakLeaf Blog Gets Categories and Atom 1.0

I've just switched the OakLeaf blog to the new Blogger Beta version that supports categories, Atom 1.0 (finally), and RSS 2.0. All posts on and after June 13, 2006 have detailed categories (Blogger calls them Labels) collections at the end of the post, most of which duplicate the Technorati links. Earlier items have major category labels, such as LINQ or SQL Server. Categories let some RSS/Atom feed readers, such as Internet Explorer 7.0, filter items by category. The following screen capture shows IE 7 Feeds view's scrolling listbox with the LINQ to XSD label selected.

Note: One of the things I like about IE 7's Feeds view is that its chronology is based on Last Updated date/time, not the original post's date/time. This means that updated posts percolate to the top of the list; many of my posts are updated two or three times.

Here's Dare Obasanjo's three-pane, open-source RSS Bandit aggregator (Jubilee Edition Beta 1) displaying the preceding post:

Windows Live Writer (WLW) beta 1.0.1(6) works with Blogger Beta, as shown by the WYSIWYG screen capture below: Note: You must upgrade WLS to version 1.0.1(6) or later to work with Blogger Beta after early November 2006. However, WLW 1.0.1(6) doesn't support adding Blogger Beta Labels as tags. For the moment you'll need to do a final edit in the Web-based Blogger editor, which hasn't changed significantly in the Beta version. Technorati Tags: , , ,

Friday, December 08, 2006

PLINQ Gathers Momentum

Parallel Language Integrated Query or Parallel LINQ (PLINQ) finally emerged from the shadows with Microsoft Program Manager Joe Duffy's December 1, 2006 "A new role for me at Microsoft" post:

I recently left the CLR team to join a new team focusing on parallelism on Microsoft's platform in the 3-10 year timeframe. I am leading design and development of the Parallel LINQ (PLINQ) project that I alluded to here.

We're looking for supersmart technical people to join the team and help change the face of programming for anybody writing code on the CLR or VC++. PLINQ isn't the only project. Solid CS skills are a must, but you don't necessarily have to be a concurrency guru (right away).

These [22] job postings have some detail. If something catches your eye, respond on the jobs site or send me your resume directly at joedu AT you-know-where DOT com (i.e. microsoft DOT com).

I'll of course still be blogging about everything concurrency related, so you won't notice much of a difference content-wise. And I'm still happy to answer any CLR related questions and help you find the right folks inside the team to listen to your feedback.
Joe is the author of an MSDN Magazine January 2006 "{END BRACKET}" column, "Transactions for Memory," and September 2006 "CLR Inside Out" column, "Using Concurrency for Scalability." There's no mention of LINQ in either article, but the handwriting was on the wall.

The first concrete information about PLINQ came from an August 28, 2006 eWeek article, "Microsoft's PLinq to Speed Program Execution," by Darryl K. Taft, who quotes Anders Heljsberg:

"With PLinq, effectively you write the code the same way, but we arrange for it to run on multiple CPUs," Hejlsberg said in an interview at Microsoft in early August. "So the queries get split up and run on multiple CPUs, and then you just wait for all the results to arrive. And lo and behold, without any changes your program just ran six times faster. It's instant gratification. ...

"It doesn't necessarily mean that every program is going to run six times faster, but there are classes of programs that we can make run faster without the user having to get into the nitty-gritty business of writing concurrent constructs."

Danny Thorpe, formerly Borland's Chief Scientist and now Microsoft Sr. Product Manager/Architect, noted in a September 2005 blog post announcing Borland's Delphi would support LINQ, that LINQ had parallel computing potential. Taft's September 27, 2005 eWeek article, "Borland Plans to Support MS LINQ in Delphi Platform" quotes Danny:

"LINQ presents an enormous opportunity to put parallel computing in a package that everyday coders can use safely and easily. Exploit those multicore processors! Even qrid computing is within reason."

I don't usually write about projects that don't have at least at least a public preview or alpha version available for testing. However, it appears that Microsoft is staffing to deliver PLINQ in the Orcas timeframe. So following the PLINQ story looks worthwhile.

Don Domsak's recent Parallel Language Integrated Query (PLINQ) post adds fuel to the PLINQ fire with this conclusion:

Overall, this stuff looks very cool. And it seems that LINQ is going to be a big part of how they plan to implement it, giving me even more of a reason to get going on LINQ before all the cool kids realize that WPF, WCF and WF are yesterday's news, and LINQ is where it is at ;).

Note: Don Domsak, better known as DonXML is a Microsoft MVP for XML and a VB .NET fan. Don recently gave presentations on LINQ and the Entity Framework at the Heartland Developer Conference (HDC) 2006.

Question of the day: Will the PLINQ moniker morph to initial-letter-capped Plinq (a la Blinq), PLinq (per the original DLinq and XLinq API names), or adopt the LINQ to Whatever style as LINQ to Cores?

Update: 7/30/2007: Mary Jo Foley posted What will next-generation multicore apps look like? today, which quotes the presentation that Craig Mundie, Microsoft's Chief Research and Strategy Officer, gave to last week's Financial Analysts Meeting. There's no mention of PLINQ in the transcript that Mary Jo cites or the PowerPoint slides. It's surprising that PLINQ wasn't part of the presentation because it's probably Microsoft's first concrete implementation of declarative languages for multi-core processing.

Update 1/23/2007: Joe Duffy updated his post about PLINQ talk at the Declarative Aspects of Multicore Programming (DAMP) workshop he gave at POPL 2007 earlier in January by adding a link to his slides.

Update 12/12/2006: Anders Hejlsberg discusses PLINQ, concurrent programming, and LINQ for Orcas in an 8:29 interview from Tech•Ed: Developers 2006 Barcelona. The page also includes links to Eric Rudder's 1:15:00 Windows Vista, 2007 Office System and AJAX keynote, and brief interviews with Scott Guthrie, Paul Andrew, and Keith Smith.

Technorati Tags: Orcas, PLINQ, LINQ, C# 3.0, VB 9.0

Thursday, December 07, 2006

Reduce Object/XML Impedance Mismatch with LINQ to XSD

LINQ to XSD from Microsoft's XML Team promises a similar reduction of the impedance mismatch between .NET objects and XML documents as LINQ to Entities and ADO.NET 3.0's Entiry Framework and Entity Data Model deliver for objects and relational data.

LINQ to XSD, which entered the public preview state on November 27, 2006 with the release of the Alpha 0.1 version, builds on LINQ to XML's generic XML trees to operate on typed XML trees, which are "instances of .NET types that model the XML types of a specific XML schema (XSD)." Thus LINQ to XSD carries the subtitle "LINQ to XML Objects."

Note: If you don't want to download the preview bits, which require the Microsoft .NET LINQ CTP (May 2006), read the "LINQ to XSD Overview: An Incubation Project on Typed XML Programming" white paper.

Updated: February 7, 2008

A First Look at LINQ to XSD Syntax

The XML Team's blog post and documentation for the LINQ to XML preview cites this prototypical LINQ for XML query that returns the total value of Item elements in in a purchaseOrder document:

(from item in purchaseOrder.Elements("Item") select (double)item.Element("Price") * (int)item.Element("Quantity")).Sum();

Here's the strongly typed LINQ to XSD version of the preceding query:

(from item in purchaseOrder.Item select item.Price * item.Quantity ).Sum();

Obviously, the type-safe version of the query's syntax is clearer. It also provides Intellisense for elements and corresponds more closely to a LINQ to SQL query against a purchaseOrder table with a related Item table.

Aside from the obvious syntatical benefits and compile-time vs. run-time syntax checking, LINQ to XSD supports contract-first rather than code-first development. Many Web services developers are contract-first devotees, but Dare Obasanjo—one of Microsoft's foremost XML/XSD gurus—recommends the code-first approach in his April 22, 2005 "Contract-First XML Web Service Design is No Panacea" post.

Note: Click here for a list of Dare's technical papers, articles, and other writings as of May 2005.

LINQ to XSD can handle code-first (or, more properly, document-first) design by inferring and refining XML schemas from existing XML documents with the Microsoft XSD Inference 1.0 tool. My "Generate XSD Schemas by Inference" article for the November 2002 issue of XML Magazine explains how to get the most out the tool. (Free registration is required to read page 2 through 4).

O/X Impedance Mismatch Background

My September 25, 2005 post, "More on Object-XML and Object-Relational Impedance Mismatch," cited Dare's "The Impedence Mismatch between W3C XML Schema and the CLR" post, which discusses XML serialization of object state and conversion of XML to objects. Dare suggests his earlier "XML Schema Design Patterns: Is Complex Type Derivation Unnecessary?" post and the "Programming with Circles, Triangles and Rectangles" paper by Gavin Bierman, Wolfram Schulte and Erik Meijer for more details on X/O impedance mismatch issues. This paper extends an earlier presentation to the Workshop on Declarative Programming in the Context of OO Languages (DP-COOL) 2003—Unifying Tables, Objects and Documents by Eric Meijer and Wolfram Schulte.

Note: The BSM trio also presented "LINQ: Reconciling Objects, Relations and XML in the .NET Framework" to SIGMOD 2006. Unfortunately, only the first page is available for download.

Apparently, Erik and his colleagues are sanguine that the longstanding issues with X/OM (XML-to-Object mapping) can be resolved. He and Data Progammability Team program manager Ralf Lämmel authored "Revealing the X/O Impedance Mismatch" (July 19, 2006 draft) for submission to and possible publication in the post-proceedings for Datatype Generic Processing (DPG '06), Lecture Notes in Computer Science (LNCS, Springer US). The paper begins with an excerpt from Dave Thomas's "The Impedance Imperative: Tuples + Objects + Infosets = Too Much Stuff!" article for the September-October 2003 issue of the Journal of Object Technology.

Another paper, "Mappings make data processing go ’round: An inter-paradigmatic mapping tutorial," by Erik and Ralf (2005) starts with the same Dave Thomas quotation. The abstract describes the tutorial's objective:

Each data-processing application depends on a horde of interrelated data models and artifacts that are derived from data models (such as data-access layers). Such conglomerations of data models are challenging due to paradigmatic impedance mismatches, performance requirements, loose-coupling requirements, and others.

This ubiquitous problem calls for a good understanding of techniques for mappings between data models, actual data, and operations on data. This tutorial lists and discusses mapping scenarios, mapping techniques, impedance mismatches and research challenges regarding mappings. [Emphasis added].

Note: Dave Thomas and Erik Meijer are speakers for the QCon Conference to be held March 12 - 16, 2007 in London. Erik and Martin Fowler are among the conference's keynoters.

Ralf presented two papers at XML 2006 on December 5, 2006: "Typed XML programming without abandoning XML" (a.k.a. "Functional OO Programming with Triangular Circles" with Dave Remy as co-author) and "XML streaming, XML trees and XML queries—Can they co-exist in harmony?" (by Michael Champion). Mike chaired the Enterprise XML Computing sessions and provides a blow-by-blow description of the December 5 and part of the December 6 sessions in his XML 2006 Observations post.

Note: Dave Remy said on June 16, 2006: "I am now working hands on a very cool XML developer tool (can't say specifically what quite yet) that uses WPF (also known as Avalon) and XLinq extensively. I look forward to doing some future blogs in these areas." (To my knowledge, no future blogs on the topic appeared as of early 2008.)

Charting the Course of LINQ to XSD in Orcas

The more general tutorial, "Mappings make data processing go 'round—An inter-paradigmatic mapping tutorial," "... lists and discusses mapping scenarios, mapping techniques, impedance mismatches and research challenges regarding mappings" with the emphasis on O/RM and X/OM. This paper is included in the Summer School Proceedings of the Generative and Transformational Techniques in Software Engineering (GTTSE) 2005, of which Ralf was an organizer.

Ralf offers the "XML Typed Programmer" quartet with the following posts, some of which are quite detailed (i.e., lengthy):

Note: The current LINQ to XSD implementation is C# 3.0 only, which is surprising when you consider Erik's penchant for Visual Basic and his recent VB IsNot C# seminar at Expo-C 2006.

Tech support for LINQ to XSD is from the XML and the .NET Framework newsgroup, not the expected LINQ Project General newsgroup.

LINQ to XSD is an "incubator" project and the preview comes with a "While the underlying LINQ to XML technology is expected for Orcas, no such commitment exists for LINQ to XSD" caveat. But it seems to me that LINQ to XSD is a necessary addition to mainstream LINQ to SQL (formerly DLinq) and LINQ to XML (formerly XLinq) APIs, and developing LINQ to Entities and LINQ to DataSets technologies. Without LINQ to XSD, the final Orcas LINQ implementation will be incomplete.

Updated: 12/8/2006 and 12/11/2006 Minor additions and corrections. Reformatted: 2/7/2008.

Technorati Tags: LINQ to XSD, LINQ to XML Objects, LINQ to XML, XLinq, C# 3.0, VB 9.0, XML, XSD, XML Schema, Orcas, Domain-Specific Languages, DSL, DSL Tools