Documente Academic
Documente Profesional
Documente Cultură
com
Headwinds
PLUS
Project4
4/17/09
1:23 PM
Page 1
VTCVirtual Training
Center for SharePoint
SharePoint is a trademark or a registered trademark of Microsoft Corporation. DataParts is a registered trademark of Software FX, Inc. Other names are trademarks or registered trademarks of their respective owners.
Project4
4/17/09
1:24 PM
Page 2
Visit SoftwareFX.com for interactive demos, free trial versions and more
information about our latest products.
Project3
3/30/09
12:50 PM
Page 1
LEADTOOLS Document
Imaging v 16:
by LEAD Technologies
LEADTOOLS Document Imaging has every
component you need to develop powerful
image-enabled business applications including
specialized bi-tonal image display and
processing, document clean up, high-speed
scanning, advanced compression (CCITT
G3/G4, JBIG2, MRC, ABC) and more.
Multi-threaded OCR/ICR/OMR/
MICR/Barcodes (1D/2D)
Forms recognition/processing
PDF and PDF/A
Paradise #
L05 03201A01 Annotation (Image Mark-up)
C/C++, .NET, WPF - Win32/64
$
99
programmers.com/lead
2,007.
Single Server
Paradise #
D29 02101A07
949.
91.99
FarPoint Spread
for Windows Forms
The Best Grid is a Spreadsheet. Give your users
the look, feel, and power of Microsoft Excel,
without needing Excel installed on their machines.
Join the professional developers around the
world who consistently turn to FarPoint Spread
to add powerful, extendable spreadsheet solutions to their COM, ASP.NET, .NET, BizTalk Server
and SharePoint Server applications.
Worlds #1 selling development spreadsheet
Read/Write native Microsoft Excel Files
Cross-sheet formula referencing
Paradise #
F02 01101A01 Fully extensible models
Royalty-free, run-time free
936.99
by Datacore
DataCore SANmelody overcomes the high
cost barrier and complexity of traditional
SAN storage. SANmelody converts standard
Intel/AMD servers, blades or virtual machines
(VMs) into fully capable storage servers that
virtualize disks and serve them over existing
networks to application servers. They are simple
to operate, take only minutes to install, and
let you cost-effectively optimize, manage and
protect data storage and disk space.
Paradise #
DCA 01101A06
CALL
programmers.com/datacore
800-445-7899
Prices subject to change. Not responsible for typographical errors.
CALLI
VDI Included
programmers.com/vmware
TX Text Control 15
NEW
Word Processing Components
RELEASE!
TX Text Control is royalty-free,
robust and powerful word processing
software in reusable component form.
Paradise #
F01 0131
711.
99
848.
programmers.com/theimagingsource
by SAP BusinessObjects
Crystal Reports 2008 is a powerful,
dynamic, actionable reporting solution
that helps you design, explore, visualize,
and deliver reports via the web or
embedded in enterprise applications.
It enables end users to consume reports
with stunning visualizations, conduct
on report business modeling, and
execute decisions instantly from the
report itselfreducing dependency
on IT and developers.
455.
programmers.com/farpoint
View Premier
Paradise #
V55 66101A01
by FairCom
New
Release!
c-treeACE Professional
by Pragma Systems
Paradise #
P35 043X
182.
Orion Network
Performance Monitor
by Solarwinds
Orion Network Performance Monitor is a
comprehensive fault and network performance
management platform that scales with the
rapid growth of your network and expands
with your network management needs.
It offers out-of-the-box network-centric views
that are designed to deliver the critical
information network engineers need.
Orion NPM is the easiest product of its
kind to use and maintain, meaning you
will spend more time actually managing
networks, not supporting Orion NPM.
by Virtual Iron
Virtual Iron Extended Enterprise Edition
provides the most advanced server
virtualization and virtual infrastructure
management capabilities available at
a fraction of the cost.
Paradise #
S4A 08201E02
4,606.99
programmers.com/solarwinds
Paradise #
V87L01101A01
$
799.99
programmers.com/virtualiron
programmersparadise.com
0509vsm_TOC_3-4.v5
4/17/09
11:16 AM
Page 3
Contents
{ FRAMEWORKS }
Depressing
Developments
14
FEATURES
14 Headwinds
Despite a troubled economy and falling IT budgets, Microsoft and its partners are
busy rolling out new tools and platforms. We preview some of the goings on at
Microsoft TechEd North America 2009, and talk to developers and ISVs about how
theyre managing in a sluggish software market. BY MICHAEL DESMOND
DEPARTMENTS
DevDisasters
Gatekeepers of Bad Software BY ALEX PAPADIMOULIS (TheDailyWTF.com)
10 DevInsights DEVELOPER
36 LANGUAGE LAB
C# Corner PAGE 36
Covariance and contravariance are precise terms that describe which conversions are
safe on parameters and return types. Learn about new constructs to be supported
in C# 4.0, and how to live with the current limitations until Visual Studio 2010 is
adopted by your organization. BY BILL WAGNER
Ask Kathleen PAGE 42
Learn how to create and debug templates using Microsofts Text Transformation
Templating Toolkit (T4) language, which is included with Visual Studio 2008.
BY KATHLEEN DOLLARD
COLUMNS
48 Redmond Review
BY ANDREW BRUST
47 Index of Advertisers
0509vsm_TOC_3-4.v5
4/17/09
11:16 AM
Page 4
Online Contents
Get the complete picture
the latest dev news, analysis
and how-to contentat
VisualStudioMagazine.com
and our partner sites in
the Redmond Developer
Network.
VISUALSTUDIOMAGAZINE.COM
REDDEVNEWS.COM
ADTMAG.COM
Online Tutorials
Wahlin on .NET
Using Silverlights WebClient Class: The
WebClient class gives you a straightforward way to access distributed service
data without having to worry about a lot
of asynchronous complexities.
BY DAN WAHLIN
BY KATHLEEN RICHARDS
LOCATOR+ CODE: VS0905RD1
BY JEFFREY SCHWARTZ
LOCATOR+ CODE: VS0905AD1
Classic VB Corner
Prisoner of Geography: When it comes to
our understanding of Unicode issues, the
Born in the USA! chant (no matter how
you feel about The Boss) can almost
amount to a proclamation of cultural
ignorance.
BY KURT MACKIE
BY JEFFREY SCHWARTZ
BY KARL E. PETERSON
LOCATOR+ CODE: VS0905KP1
Inside VSTS
Adding Events to User Controls: To fully
exploit User Controls, you need to treat
them as objects, which includes having
them fire events. This is a step-by-step
guide.
BY PETER VOGEL
VisualStudioMagazine.com
RedDevNews.com
ADTmag.com
ISTOCKPHOTO.COM
Project1
4/9/09
11:08 AM
Page 1
r
5 4 ou
#5 y
o
at
s o t h int .
s
tu o s
s i b ap t i o n
vi d
e hE m c a
m c dd pli
e
Co f t T o a a p
t
so w ht
ro o g
ic h rli
M arn lve
i
le S
to
geographic information system (GIS) software suite for developing and testing applications on
every platform. Whether youre a desktop, mobile, server, or Web developer, EDN provides the
tools you need to quickly and cost-effectively integrate mapping and GIS into your applications.
Copyright 2009 ESRI. All rights reserved. The ESRI globe logo, ESRI, EDN, and www.esri.com are trademarks, registered trademarks, or service marks of ESRI in the United States, the European Community, or certain
other jurisdictions. Other companies and products mentioned herein may be trademarks or registered trademarks of their respective trademark owners.
0509vsm_Letters_6.v4
4/17/09
11:48 AM
Page 6
Letters
VisualStudioMagazine.com
May 2009 Volume 19 No. 5
Editorial Staff
Vice President, Doug Barney
Editorial Director
Editor in Chief
Michael Desmond
Executive Editor
Kathleen Richards
News Editor
Whats Old Is
New Again
Each month, Andrew Brust writes the Redmond Review column for the back
page of Visual Studio Magazine. His first column since arriving from the pages of
Redmond Developer News focused on the late change of heart Microsoft had
regarding its SQL Data Services cloud-based data storage scheme. Longtime
VSM contributor Roger Jennings responds to Brusts column in a blog posting.
Wendy Gonchar
Katrina Carrasco
Contributing Editors
Andrew J. Brust, Kathleen Dollard, Ken Cox, John Cronan,
Dan Fergus, John Gavilan, Roger Jennings,
Don Kiely, Martin Kulov, Jeff Levinson, Bill McCarthy,
John Charles Olamendy Turruellas,
Keith Pleas, Bill Wagner
Art Staff
Creative Director
Scott Shultz
Graphic Designer
Erin Horlacher
Online/Digital Media
Editor, VisualStudio Becky Nagel
Magazine.com
Executive Editor, New Media
Online News Editor
Associate Editor, Web
Andrew Brusts Whats Old Is New Again column for Visual Studio
Magazines April 2009 issue recounts the history of Visual Basic 3.0s adoption
of the Jet (Access) 1.1 relational database and the parallel with the SDS teams
course reversal from the Entity-Attribute-Value data model to a full-featured
relational database. Andrew concludes:
So Redmond listened to its customers, and the bizarre obsession with
copying Amazons SimpleDB Web service is over. Microsoft has given us a truly
simple offering: the SQL Server technology that most Microsoft developers have
been using for a decade and some have been using since even before my first
column was published.
I couldnt agree more.
P.S. Andrew and I started writing for Visual Studio Magazines predecessor
about 15 years ago when it had just been re-named from BASIC Pro to Visual
Basic Programmers Journal.
Roger Jennings
Principal, OakLeaf Systems
Oakland, Calif.
On the New Redesign
VSM redesigned its cover and pages with the April 2009 issue. A reader shares
his thoughts.
I want you to know that I'm totally offended by Aprils front cover.
Having both the female sexual computer model and the evolution icon is
the last straw. Your magazine has bleak content anyway. I threw it in the trash.
Evolution is nothing but a false faith in garbage science. I want to terminate my
subscription immediately.
Dennis Parks
Beaverton, Ore.
Visual Studio Magazine wants to hear from you! Send us your thoughts
about recent stories, technology updates or whatevers on your mind.
E-mail us at editor@visualstudiomagazine.com and be sure to include
your first and last name, city and state. Please note that letters may be
edited for form, fit and style. They express the views of the individual
authors, and do not necessarily reflect the views of the VSM editors or
1105 Media Inc.
Jeffrey Schwartz
Managing Editor
Web Producer
Michael Domingo
Kurt Mackie
Gladys Rama
Shane Lee
Rita Zurcher
President
Henry Allain
President &
Chief Executive Officer
Senior Vice President
& Chief Financial Officer
Executive Vice President
Matt N. Morollo
Michele Imgrund
Tracy S. Cook
Neal Vitale
Richard Vitale
Michael J. Valenti
Christopher M. Coates
Abraham M. Langer
Erik A. Lindgren
Doug Mashkuri
Vice President,
Attendee Marketing
Chairman of the Board
Carmel McDonagh
Jeffrey S. Klein
Project3
3/18/09
9:10 AM
Page 1
0509vsm_DevDisasters_8.v5
4/17/09
11:51 AM
Page 8
S E RVE D U P BY A L E X PA PA D I M O U L I S
</DevDisasters>
{ SOFTWARE DEVELOPMENT GONE WRONG }
A Code Tour
Before Steve was permitted to even talk to a
developer at GlobalComp, they had him sign a
an NDA. As an added security measure, Steve
could only review the code while the immaculately dressed Dave, GlobalComps lead developer, watched him. Youd be surprised, Dave
said in a serious tone, there are a lot of people who would steal our software ideas.
Steves first port of call was login.asp.
But it wasnt the security snafus or the
FrontPage meta-tags that caught his eye.
Not only were they using Access, but they
had come up with a rather interesting way of
caching huge amounts (400K+) of user-specific info. They used the ASP Session object:
<%
set cn = Server.CreateObject(_
"ADODB.Connection")
session("HTML_BLOCK_1") = rs("html1")
180 columns later
session("YET_ANOTHER_FIELD") = _
Rs("yet_another_field")
Rs.MoveNext
loop
rs.close
cn.close
%>
cn.Provider = _
"Microsoft.Jet.OLEDB.4.0"
cn.Open "C:\inetpub\wwwroot\db.mdb"
set rs = Server.CreateObject(_
"ADODB.recordset")
rs.Open "SELECT * FROM Users " & _
" WHERE Username = '" & _
Username & _
"' AND Password = '" & _
Password & "'", cn
do until rs.EOF
session("USERNAME") = rs("username")
session("COMPANY") = rs("company")
session("LOCATION") = rs("location")
session("ADDRESS1") = rs("address1")
session("ADDRESS2") = rs("address2")
session("ADDRESS3") = rs("address3")
session("ADDRESS4") = rs("address4")
Project3
4/15/09
12:46 PM
Page 1
Barcode
Mark-up
DICOM Medical
Multimedia
Develop your application with the same robust imaging technologies used by Microsoft, HP, Sony,
Canon, Kodak, GE, Siemens, the US Air Force and Veterans Affairs Hospitals.
LEADTOOLS provides developers easy access to decades of expertise in color, grayscale, document,
medical, vector and multimedia imaging development. Install LEADTOOLS to eliminate months of
research and programming time while maintaining high levels of quality, performance and functionality.
LEADTOOLS v.16 .NET, WPF, WCF, WF, C API, C++ Class Lib, COM & more!
Image Formats: All industry standards including TIFF, EXIF,
PDF, JPEG/JPEG2000, DICOM, PCL, DWG and hundreds more.
Image Compression: From standard JBIG, JBIG2, ABIC,
JPEG and CCITT G3/G4 to LEADs specialized ABC, CMP and
CMW compression.
Display Controls: Scroll, zoom, pan, magnify glass,
brightness/contrast/gamma, window level.
Image Processing: 200+ filters, transforms and color
conversion functions with extended grayscale (10 to 16-bit)
support.
OCR/ICR/OMR: Full page or zonal multi-threaded
recognition with formatted output including PDF, DOC and
TXT for Win32 and x64.
Barcode: Read/write all industry standard 1D and 2D barcodes (DataMatrix, PDF417, MicroPDF417, QR Code and more).
Forms Recognition and Processing: Automatically
identify forms and extract user filled data.
Document Cleanup/Preprocessing: Deskew, despeckle,
line and border removal, registration marks and more.
PDF and PDF/A: Read/write raster and text searchable
PDF files.
Annotations: Interactive UI for document mark-up,
redaction and image measurement (including support for
DICOM annotations).
Grayscale Imaging: Display and process signed/
unsigned 10-16 bit, 32 bit data.
0509vsm_DevInsight_10-12.v5
4/17/09
12:12 PM
Page 10
</DevInsight>
DEVELOPER NEWS
Tech-Ed
10
Despite the anticipated releases, TechEd is facing the same hurdles that conferences in every industry have encountered during
the recession: attendance issues. The conference will take place
at the Los Angeles Convention Center, the same venue as last
years PDC. After a two week TechEd in Orlando, Fla., in June
2008 that separated the developer and IT tracks, Microsoft is
back to a combined, one-week model. Last years event, which
marked chairman Bill Gates last official keynote, attracted
around 5,000 developers and 10,000 IT professionals, according
to Microsoft.
The current climate has meant some unwelcome
changes: In April, registrants were notified of the cancellation
of on-site exams for Microsoft certifications, the traditional
Thursday night attendee party and the popular Jam
Sessions that occurred nightly at past TechEd events.
The Server and Tools News Bytes blog on Microsoft
TechNet recommended the press attend the show virtually
this year, noting that there would be limited access to
Microsoft executives and on-site facilities.
The cutbacks are not a reflection on Microsoft or
TechEds robust technical content. Generally, Im hearing
conferences are just not being as well attended for obvious
reasons this year, says Rob Sanfilippo, research vice president
of developer platforms at Directions on Microsoft. Looking
across at MIX, TechEd and PDC, I definitely would rank PDC as
the first conference to attend from a developer standpoint for
someone thats interested in planning technology that will be
used two or three years out for their organization.
PDC2009, which is expected to focus on the release of
Microsofts cloud-computing platform, Windows Azure, is
scheduled for Nov. 17-20 in Los Angeles.
LOTS TO LEARN
ISTOCKPHOTO.COM
TechEd Preview
REALITY BYTES
0509vsm_DevInsight_10-12.v5
4/17/09
12:12 PM
Page 11
REVIEW
Sybase PowerDesigner
Data Modeling
Eliminate data model archeology by analyzing your enterprises
systems to find out where data is actually being used.
BY PETER VOGEL
Sybase Inc.s goals for
PowerDesigner are nothing if not
ambitious: a single modeling tool for
base shortly after installing the product (you can also create standalone
PowerDesiger modeling projects in
Visual Studio). PowerDesigner isnt
limited to generating just database
schemas: You can also generate BPEL
process files and nHibernate code,
among other options.
The other purpose of data modeling is documenting data stores,
which is only valuable if you can use
your models to support developers,
make business and design decisions
and to analyze business problems.
PowerDesigner supports creating
reports from your models in HTML,
RTF, and in a proprietary format
for local printing. You can also
print reference documents in card
format, which produces individual,
two-column tables suitable for
reference purposes. More critically,
PowerDesigner lets you pick an object
and follow its links to see where the
data item is useda powerful tool
when someone asks you,What would
it cost to change this?
Of course, the ability to follow
those links is only useful if all of
your data stores are documented
in PowerDesigner. I found
PowerDesigners reverse engineering
facilities to be robust and complete for
the various data stores that I tested
against. While I tested against the
Data Modeling
0509vsm_DevInsight_10-12.v5
4/17/09
12:12 PM
Page 12
</DevInsight>
Database Tools
SYBASE POWERDESIGNER 15
Sybase Inc.
www.sybase.com
800-792-2735
PRODUCTS
Two months after releasing an application performance management (APM) suite that ranges in price from $30,000 to $60,000,
Linz, Austria-based dynaTrace Software is now offering a scaleddown version. dynaTrace Test Center Standard Edition has a
good portion of the application testing features found in the
core dynaTrace 3 suite, the company says. But it costs about
20 percent of the suites price.
That full-scale suite is designed to let developers trace
transactions across geographically distributed systems with large,
scalable virtualized server clusters for business-critical applications that require 24x7 uptime (for more on that release, see
http://tinyurl.com/csvyn2).
Like the larger version, the Standard Edition comes with Visual
Studio, Visual Studio Team System Test Edition and Eclipse plug-ins.
It diagnoses and isolates typical Web application issues, notably
database performance problems and chattiness. The software also
documents issues for developers including SQL statements and bind
values, and various other transaction characteristics. The software
takes every transaction and displays the slowest running ones or
those that are broken. When the developer clicks on a transaction,
he can view the whole path with all the context. If a developer
sees hundreds of extra calls to a database, he can click on it and
automatically open up the source code in Visual Studio.
Although not as well known as some of its rivals, dynaTrace
says it has made inroads in the U.S. market over the past year with
customers such as Bank of America, Fidelity Investments, LinkedIn
and Macys. It has 100 customers but has seen rapid growth in recent
quarters, the company says. But dynaTrace, which is backed by Bain
Capital and Bay Partners, is a much smaller player than market leader
CA, whose Wily Technology is used by more than 1,000 customers.
Test Center Standard Edition
dynaTrace Software
Price: $6,000 per developer license
www.dynaTrace.com
781-674-4000
12
Project2
4/1/09
11:55 AM
Page 1
4/17/09
12:21 PM
Page 14
0509vsm_F1_14-22.v6
14
0509vsm_F1_14-22.v6
4/17/09
12:21 PM
Page 15
TECH-ED 2009
FEATURE
HEADWINDS
Despite tough times, developers, ISVs
and Microsoft are keeping plenty busy.
BY MICHAEL DESMOND
When the going gets tough, the tough get going. At least,
thats the hope of most conference organizers in the software
development sector. With IT and dev budgets slashed and
most organizations hunkering down for a long downturn, its
no surprise that attendance at many industry events
is off sharply from two or three years ago. Still, Microsoft is
hoping to draw a crowd to TechEd North America 2009 in Los
Angeles this month.
Project6
4/7/09
4:11 PM
Page 1
Project6
4/7/09
4:12 PM
Page 2
0509vsm_F1_14-22.v6
FEATURE
4/17/09
12:21 PM
Page 18
TECH-ED 2009
39%
29%
23%
4%
4%
32%
31%
13%
9%
8%
7%
45%
26%
24%
5%
60%
23%
14%
3%
According to the March 31 report, worldwide spending on information technology was expected to fall 3.8 percent in 2009, to
$3.2 trillion from $3.4 trillion. That decline, Gartner Research
Vice President Richard Gordon notes, would be worse than the
2.1 percent reduction the industry weathered in 2001 during the
dot-com bubble burst.
Ask Julian Bucknall how his company, .NET component
maker Developer Express Inc. plans to get through the dour
economy, and he is refreshingly candid.
The economy being what it is, weve concentrated a lot on
making our current customers happy, says Bucknall, the companys chief technology officer, who notes the importance of
Developer Express subscription model. The only way we could
encourage people to stick with us is to concentrate an awful lot
on stability, reliability, discoverabilitymaking things easier and
more stable to use, and then adding more functionality when we
feel its necessary.
Like many rank-and-file dev shops, Bucknall says
Developer Express has decided to pick its spots carefully, investing in select areas and emphasizing maintenance and refinement
over lavish new initiatives or product launches. Its an approach
being repeated all over the development sector.
2009 is seriously quite a tough year, but I suspect for most
people it will be just carrying on doing what theyre doing, says
Bola Rotibi, principal analyst at research firm Macehiter
Ward-Dutton (MWD). Outside of the core areas of keeping the
business going, I think [new initiatives] are going to be few and
far between.
Our survey of more than 350 .NET developers ahead of
TechEd bears out the cautious, go-slow approach. Asked about the
biggest challenge facing their organizations, the largest percentage
of respondents singled out the economy (32 percent). The
second most-cited response was the challenge of managing all the
developer technologies coming from Microsoft (23 percent). No
other response drew more than 8 percent of the vote.
Many dev shops report falling back into maintenance
mode. Im in pharmaceuticals, writes one senior analyst.
There are mergers, but with each merger come wholesale
layoffs. My IT department is down to doing maintenance only,
with a budget freeze in place.
An application solutions architect with a major insurance
carrier says his group is trying to do more with less. In the
health-care insurance sector, were still actively trying to handle
new projects from the business, but with smaller dev staff, or at
least fewer subject-matter experts.
While 32 percent of survey respondents report limiting work
to maintenance, a surprising percentage (31 percent) say they
continue to move forward with new platforms and technologies.
My opinion is that we should be focusing on migrating our large
number of VB 6.0 and legacy ASP applications to help ramp some
of the newer or more junior staff up with the latest Microsoft dev
technologies, the solutions architect says.
A lot of developers are concerned about their ability to
adopt and master all the new technologies Microsoft has been
rolling out. Survey respondents indicate excitement about
inbound tooling like Visual Studio, .NET Framework 4.0 and
Windows 7, yet nearly seven in 10 respondents expressed
fatigue with the pace of Microsoft technology rollouts over
the past year. Nearly one-quarter of all respondents (24 percent)
categorized the fatigue as significant.
0509vsm_F1_14-22.v6
4/17/09
12:21 PM
Page 19
TECH-ED 2009
FEATURE
The staff is concerned about the ability to learn and apply were going to be concentrating on with regard to Silverlight. What
new technology in products that have a solid base of code, says the you call the business control.
A lot of firms are also looking at how they license and sell
vice president of engineering for a telecommunications consulting
firm. Our market problem is we need to maintain compliance software. Microsoft at the MIX09 conference in March demoed
with .NET 2.0, .NET 3.5, multiple versions of SQL Server and mul- the Web Platform Installer, which bundles together a complete
stack of Microsoft-based Web server products and technologies
tiple operating systems.
A Web application developer for a large construction and and provides an easy-to-use installer interface.
MWDs Rotibi calls the Microsoft utility a neat little soluengineering firm says his shop is busy, but risks falling behind in
the adoption of new technologies.Our biggest challenge is not the tion that portends things to come. She points to the All-Access
economy, but rather maintaining our
suite of Web applications (hundreds!) and
at the same time keep up with the pace of
technology, he says. We essentially fall
further and further behind every year.
Our most heavily used apps are classic
ASP, we have many .NET 1.1 apps, and a
sprinkling of .NET 2.0 apps. Our databases have been recently upgraded to SQL
Server 2005, he says.
One major .NET component maker
isnt surprised at these struggles:
Microsoft has been really aggressive
with new products and releases over the
past one to two years, and some of [our]
customers are finding it difficult to keep
pace with all the new technologies and
are sometimes confused [about] whats
best to use for their projects.
Anthony Lombardo, lead evangelist for component maker Infragistics
and a Microsoft MVP, says developers
need to be smart to avoid getting overwhelmed. Just keeping track of all of
the different code names can be a chore.
The main thing for developers to do is
focus on the technologies that are
Powerful Imaging for .NET
important to them.
Slowdown Strategies
Corporate dev shops arent the only ones
struggling to keep pace. Developer
Express Bucknall says his company has
made the decision to focus tightly on
Silverlight for its next component launch,
rather than aggressively update its suite
of ASP.NET, Windows Presentation
Foundation (WPF) and new SharePoint
controls. Case in point, Developer Express
is updating its Express App Framework
(XAF) for Silverlight.
What XAF does is very quickly allow
you to write business applications just by
defining a data model, says Bucknall, noting that Developer Express has added grid,
navigation, reporting and menu controls
to its Silverlight suite. XAF requires a certain number of controls before you can
generate an application. So now well be
able to write a business app for Silverlight
and WPF. Those are the kind of things
www.atalasoft.com
0509vsm_F1_14-22.v6
FEATURE
4/17/09
12:21 PM
Page 20
TECH-ED 2009
controls designed to help developers craft line-of-business applications using Microsofts RIA platform. Included in the package
are data grid, Web tree, dialog window and other controls.
www.infragistics.com
Altova MissionKit 2009
Few companies know XML the way Altova does. As if to make the
point, Altova in February began bundling its broad suite of XML
and data manipulation tools under the MissionKit banner, creating
a one-stop shop for .NET developers. At Tech-Ed, Altova plans to
demo MissionKit Tool Suite version 2009, which now supports
Extensible Business Reporting Language (XBRL) data in XMLSpy,
MapForce, and StyleVision. Version 2009 also lets developers work
with Health Level 7 messages in the MapForce module.
www.altova.com
Resco MobileForms Toolkit 2009
0509vsm_F1_14-22.v6
4/17/09
12:21 PM
Page 21
TECH-ED 2009
FEATURE
. N E T co m p o n e n t m a ke r Ne v ro n
Software boasts a large collection of
chart, diagram and UI controls for
Windows Forms and ASP.NET (including AJAX) application development. All
three component families are currently
available as part of the companys all-inone Nevron .NET Vision Q3 2008 component suite, which may see a major
upgrade by the time this issue reaches
your hands. The new package, reportedly
due out at the end of April, is set to introduce new charts, gauge, diagram and
mapping features. .NET Vision comes in
two editions, Pro and Enterprise.
www.nevron.com
Telerik WebUI Studio
0509vsm_F1_14-22.v6
FEATURE
4/17/09
12:21 PM
Page 22
TECH-ED 2009
According to the old saw, there are lies, damned lies and statistics.
Visual Numerics Inc. aims to help developers remove statistics
from that troubling equation, by providing a numerical analysis
application development environment that developers can use to
leverage mathematics and statistics to prototype models in their
production applications. Released in April, PyIMSL Studio closes
the prototype to production gap by providing modelers and
implementation teams with a common set of tested and supported high-quality development tools, as well as the same underlying
numerical algorithms, the company said in a statement. PyIMSL
Studio helps developers turn prototypes into production applications quickly, while reducing risk, cost and complexity.
www.vni.com
ComponentOne XapOptimizer
Microsoft has been banging the Silverlight drum for what seems
like years now, and we can expect to hear plenty about the line-ofbusiness savvy Silverlight 3 at TechEd. ComponentOne is helping
with the drum beating with a show promotion around the community technology preview release last month of ComponentOne
XapOptimizer. A standalone utility that processes Silverlight application .XAP files, XapOptimizer generates optimized Silverlight
application files that are 30 percent to 70 percent smaller in size
than the original .XAP files. XapOptimizer integrates into the build
process in Visual Studio and includes the ability to obfuscate
Silverlight code.
www.componentone.com
establish rich interaction among applications, data and components. A component maker specializing in WCF controls,
Noemax Technologies in April released WCF-Xtensions version
4, a major update that, in the words of the company,expands the
reach of WCF-Xtensions from .NET and .NET Compact
Framework to Silverlight and Azure. WCF-Xtensions promise to
speed communication and reduce bandwidth consumption of
WCF services and clients. The components can bind quickly to
code and can be applied to a variety of projects based on SOAP,
REST Web services or Java.
www.noemax.com
JNBridge WPF Updates
The Dotfuscator product has for years helped dev shops protect
their distributed .NET code from prying eyesthe community
edition of Dotfuscator baked into Visual Studio is currently on
more than 6 million desktops. More recently, PreEmptive has
gotten into the business of helping developers inject analytics and
lifecycle management tracking capabilities into their apps, allowing
them to track the status and usage of .NET apps among customers.
So whats on tap for TechEd? A new version of Dotfuscator for
mobile developers called Dotfuscator Micro Developer Edition
(MDE), which will ship at the show. The new software will integrate
with Visual Studio and provide injected tamper detection/defense,
application expiry and feature-tracking support.
www.preemptive.com
NCover 3.0
Project2
2/11/09
11:06 AM
Page 1
Select a region on the timeline and get the performance data just for that region.
3. Optimize efciently
Now that you know exactly where
to focus your performance-boosting
work, you can start optimizing your
code effectively. Optimize your code
only where it needs to be improved,
and don't try to make unnecessary
changes that will not solve your
performance problem.
ANTS Proler shows you line-level timings, so you can drill down to the specic lines of code responsible
for performance inefciencies.
Project3
3/19/09
9:08 AM
Page 1
Project3
3/19/09
9:09 AM
Page 2
0509vsm_HowTo22-29.v9
HOW-TO
4/17/09
12:30 PM
Page 26
SILVERLIGHT
Silverlight 3 Enables
26
0509vsm_HowTo22-29.v9
4/17/09
12:30 PM
Page 27
SILVERLIGHT
HOW-TO
ISTOCKPHOTO.COM
FIGURE 1. The Web site in a Silverlight solution has an HTML page and an
.ASPX page, both of which host the Silverlight application thats part of the
same solution.
0509vsm_HowTo22-29.v9
HOW-TO
4/17/09
12:30 PM
Page 28
SILVERLIGHT
NorthwindData.NorthwindDataSoapClient
Dim bind As New System.ServiceModel.BasicHttpBinding
Dim ep As New System.ServiceModel.EndpointAddress( _
URL for Web Service)
Private Sub ButtonGet_Click( _
ByVal sender As System.Object, _
ByVal e As System.Windows.RoutedEventArgs)
nwd = New NorthwindData.NorthwindDataSoapClient( _
bind, ep)
nwd.GetCustomersAsync()
End Sub
28
Easing Development
With Silverlight 3, Microsoft seems determined to win
over those business developers for good.
As part of the current Silverlight 3 beta, Microsoft
has released .NET RIA Services, a framework that pulls
together elements of ASP.NET and Silverlight to ease
development of data-centric RIA applications. The RIA
Services pattern lets developers write application logic
to run on the mid-tier that, in a Microsoft statement,
controls access to data for queries, changes and custom operations.
Bob Baker, a Microsoft MVP and president of
MicroApplications Inc., has been working in the
Silverlight 3 early adopter program. He says .NET RIA
Services will change the face of Silverlight development.
This release will approach application development ease for quick line-of-business apps that rivals
what we used to be able to do with Microsoft Access
before macro security and digital signatures got in
the way, he writes in an e-mail exchange. He adds
that .NET RIA Services promises to eliminate what he
calls that dual, object class library thing weve been
doing for a year or so.
0509vsm_HowTo22-29.v9
4/17/09
12:30 PM
Page 29
SILVERLIGHT
MyDataForm.CurrentItem = custs(0)
End Sub
To make the whole collection available to the DataForm, I first create a property in MainPage that returns the ObservableCollection
of LocalCustomers. Then in MainPages Loaded event, I set the
DataContext to the XAMLs class:
Public ReadOnly Property Customers() As _
System.Collections.ObjectModel. _
ObservableCollection(Of LocalCustomer)
Get
If custs IsNot Nothing Then
Return custs
Else
Return Nothing
End If
End Get
End Property
Private Sub MainPage_Loaded(ByVal sender As Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handles Me.Loaded
nwd = New NorthwindData.NorthwindDataSoapClient( _
bind, ep)
nwd.GetCustomersAsync()
Me.DataContext = Me
End Sub
HOW-TO
With those changes in place, in the .XAML file, I can bind the
DataForm to the collection returned by my new property using
the DataForms ItemsSource attribute:
<dataControls:DataForm ItemsSource="{Binding Customers}"
Name="MyDataForm">
The solution is very basic at this stage and doesnt, for instance,
support validating the data or calling the method on the service that handles updates. Silverlight 3 provides two ways to
extend this basic solution to include those activities: extending
the DataForm and extending the local object.
Extending the DataForm
You can alter the DataForms behavior either by setting properties
from code or, as Ill do here, by declaratively adding attributes to the
DataForms element. For instance, by default, the DataForm initially shows each Customer in display mode. If you set the DataForms
AutoEdit property to True, the form will automatically display each
entity in edit mode when the user moves to it. AutoCommit, on the
other hand, is True by default, allowing the user to save changes just
by viewing the next entity in the collection. If you would prefer the
user to explicitly click the auto-generated Save button to commit
changes, you just need to set the AutoCommit attribute to false.
You can also control what activities the user can perform with
the DataForm. The CanUserDeleteItems and CanUserAddItems
attributes allow you off turn off some of the CRUD activities sup-
0509vsm_HowTo22-29.v9
HOW-TO
4/17/09
12:30 PM
Page 30
SILVERLIGHT
0509vsm_HowTo22-29.v9
4/17/09
12:30 PM
Page 31
SILVERLIGHT
HOW-TO
End Function
End Class
FIGURE 3. In this master-detail page, as the user selects a new item in the
grid at the top of the page, the item is displayed in the DataForm.
The resulting error is automatically displayed in the user interface regardless of which control is bound to the object (see Figure
2, opposite page).
You can also consolidate your validation code into a
separate class and associate it either with the local object or
with individual properties on the local object. This example
attaches the ValidateCompanyName method on a class
called CompanyValidator to the CompanyName property on my
local object:
<System.ComponentModel.DataAnnotations.CustomValidation( _
GetType(CompanyValidator), "ValidateCompanyName", _
ErrorMessage:="Invalid company name")> _
Public Property CompanyName() As String
Project2
4/9/09
11:19 AM
Page 1
Take
advantage
of our $99
hotel room
rate
0905_VSL_LV_vsm_Adr3.indd Sec1:2
4/8/09 4:53:14 PM
0905_VSL
Project2
4/9/09
11:20 AM
Page 2
no
11
Plus, weve just added Problem Solving With The Pros, to provide you dedicated time
with your favorite speakers to get essential technical advice that will save you cycles
and improve your job performance.
And stick around for the Post-Conference Workshops on Thursday, June 11th where
you can soak up A Day of Windows Azure, SQL Server 2008 for Developers, or Build
Distributed Apps in .Net 3.5 SP1.
4:53:14 PM
0905_VSL_LV_vsm_Adr3.indd Sec1:3
4/8/09 4:53:16 PM
0905_VSL
Project2
4/9/09
11:32 AM
Page 3
WPF
WCF
Lunch
Welcome Reception
LINQ
Agile/Design
Birds-of-a-Feather Lunch
VT7 Practical Parallelism - Rockford Lhotka
Azure
TFS
Should a speaker be unable to attend; all efforts will be made to replace the speaker/session with one of comparable value.
0905_VSL_LV_vsm_Adr3.indd Sec1:4
4/8/09 4:53:18 PM
0905_VSL
Project2
4/9/09
11:31 AM
Page 4
no
11
Register today at vslive.com/v9m Use priority code NQ9V04
Make the most of your time with us and add these to your schedule!
VSLive! Welcome Reception Monday, June 8, 5:45 p.m.
Open to all conference attendees and is your chance to connect with peers, presenters, and the
VSLive! team in a relaxed, informal setting. Come meet your old friends and make some new ones.
4:53:18 PM
0905_VSL_LV_vsm_Adr3.indd Sec1:5
4/8/09 4:56:47 PM
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 36
</Language Lab>
YO U R CO D E S OU RC E
IN THIS SECTION:
Covariance/
Contravariance
{ C#CORNER }
BY BILL WAGNER
In this month's installment of C# Corner, we look at one of the
36
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 37
C# Corner
{
1,2,3,4,5,6,7, 8, 9, 10,
11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30
};
UnsafeUse(collection);
// create the sum:
sum = 0;
try
{
foreach (int num in collection)
sum += num;
Console.WriteLine(sum);
}
catch (InvalidCastException)
{
Console.WriteLine(
"Not safely covariant");
}
foreach(object o in bunchOfItems)
Console.WriteLine(o);
}
Covariance/
Contravariance
SafeCovariance(collection);
// create the sum:
int sum = 0;
foreach (int num in collection)
sum += num;
Console.WriteLine(sum);
This example shows that while classic collections are invariant, you could, for all practical purposes, treat them as though
they were covariant (or contravariant). But these collections
are not safely covariant. The compiler does nothing to keep
you from making mistakes in how you treat the objects in a
classic collection.
Arrays
When used as a parameter, arrays are sometimes invariant, and
sometimes covariant. Once again, just like the classic collections, arrays are not safely covariant.
First and foremost, only arrays containing reference types
can be treated as either covariant or contravariant. Arrays of
value types are always invariant. Thats true even when trying to
call a method that expects an object array. This method can be
called with any array of reference types, but you cannot pass it
an array of integers or any other value type:
private void PrintCollection(object[] collection)
{
foreach (object o in collection)
Console.WriteLine(o);
}
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 38
</Language Lab>
C# Corner
Covariance/
Contravariance
suffer from being invariant. That means you cannot ever substitute a
collection containing a more derived object type where a collection
containing a less derived type is expected. Thats a lengthy way to say that
a lot of substitutions you expect to work, dont.
Array parameters are covariant, but not safely covariant.
Examine this dangerous method:
private class B
{
public override string ToString()
{
return "This is a B";
}
}
private class D : B
{
public override string ToString()
{
return "This is a D";
}
}
private class D2 : B
{
public override string ToString()
{
return "This is a D2";
}
}
private void DestroyCollection(B[] storage)
{
try
{
for (int index = 0; index < storage.Length;
index++)
storage[index] = new D2();
}
catch (ArrayTypeMismatchException)
{
Console.WriteLine("ArrayTypeMismatch");
}
}
The reason is obvious when you see the two blocks together.
The call site created an array of D objects, then calls a method
that expects an array of B objects. Because arrays are covariant,
you can pass the D[] to the method expecting B[]. But, inside
DestroyCollection(), the array can be modified. In this case, it
creates new objects for the collection, objects of type D2. Thats
fine in the context of that method: D2 objects can be stored in a
B[] because D2 is derived from B. But, the combination often
causes errors.
The same thing happens when you introduce some
method that returns the array storage and treat that as a contravariant value. This code looks like it would work fine:
B[] storage = GenerateCollection();
storage[0] = new B();
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 39
Instantly Search
Terabytes of Text
you expect to work dont. Youd think that you could write a
method like this:
private void WriteItems(IEnumerable<object> sequence)
{
foreach (var item in sequence)
Console.WriteLine(item);
}
Youd think you could call it with any collection that implements
IEnumerable<T> because any T must derive from object. That
may be your expectation, but because generics are invariant, the
following will not compile:
IEnumerable<int> items = Enumerable.Range(1, 50);
WriteItems(items); // generates CS1502, CS1503
N dozens of indexed,
unindexed,
fielded data and
full-text search
options (including
Unicode support
for hundreds
of international
languages)
N file parsers /
converters for
hit-highlighted
display of all
popular file
types
N Spider supports
static and
dynamic web
data; highlights
hits while
displaying links,
formatting and
images intact
h Spider
Desktop wit
h Spider
Network wit
CD/DVDs
Publish for
pider
Web with S
Win & .NET
Engine for
Linux
Engine for
New
64-bit
1-800-IT-FINDS www.dtsearch.com
VisualStudioMagazine.com May 2009 VISUAL STUDIO MAGAZINE 39
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 40
</Language Lab>
Covariance/
Contravariance
C# Corner
Notice the addition of the out contextual keyword. That signifies that T is covariant. It will compile cleanly because T
appears only in output positions, and is output safe. That
means, beginning with C# 4.0, you can use an
IEnumerable<string> where the formal parameter list expects
an IEnumerable<object>. The earlier example:
WriteObjects(IEnumerable<object> items)
40
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 41
C# Corner
Covariance/
Contravariance
today such that it can easily take advantage of the new covariant and
contravariant additions when they become available.
You can call that method using a sequence of integers by applying the Cast<T> method at the call site:
IEnumerable<int> items = Enumerable.Range(1, 50);
WriteItems(items.Cast<object>());
The Cast<T>() method enumerates the input collection, converting each element, and yields the converted collection as its
output. While this option will not work for other types, it will
always work where you need an IEnumerable<T> conversion
for different types.
In this article, Ive shown you the motivation behind the
addition of the generic covariance and contravariance in C#
4.0. Theyre being added because invariant generic types are too
restrictive for most uses. There are covariant and contravariant
conversions that we expect to work. In C# 3.0, those conversions
dont work, to the surprise of many developers. The language
team is addressing that in C# 4.0. In the meantime, there are
ways to mitigate the need for those features. VSM
Bill Wagner (wwagner@srtsolutions.com), author of Effective C#: 50
Specific Ways to Improve Your C# (Addison-Wesley Professional, 2004) and
More Effective C#: 50 Specific Ways to Improve Your C# (Addison-Wesley
Professional, 2008), has been a commercial software developer for the past
20 years. He is a Microsoft Regional Director and a Visual C# MVP. His
interests include the C# language, .NET Framework and software design.
GO ONLINE
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 42
</Language Lab>
{ A S K K AT H L E E N }
42
{ #>
Good Evening World! <#
} #>
In this sample template, statement blocks indicate which greeting to output. VS doesnt provide coloration, which makes it
extremely difficult to read the templates. I recommend downloading an editor from Clarius Consulting. Clarius has both a
free community edition and a more sophisticated retail edition
at http://tinyurl.com/dkqkmc.
This is enough background to create your first T4 template. Open VS and create a new project of any type. Add a New
Item and select the type Text File. Name the file with the extension .TT. Enter the code in the previous sample or some variation. VS maps the .TT extension to a custom tool named
TextTemplatingFileGenerator. This custom tool provides a
default mechanism for running simple templates and learning
about T4. When you save the template, the custom tool runs,
calls the T4 engine and outputs code to a dependent file. When
Code Generation
Principles
As I started working on code generation, I began uncovering underlying principles. No one meets them all, but these are the goals were
striving for:
1. Code generation must be in your control. If something goes
wrong with your application, youre responsible for fixing it. You
cant fix something you cant change. You need control of the templates behind your code generation.
2. Metadata is distinct and morphable. Metadata is the data that
drives your application and makes it unique from other applications. It needs to be distinct so you can find and debug it, and it
needs to be morphable so your database and business objects
arent required to match.
3. Code generation should fit into your development process. If
youre doing nightly builds, code generation should be part of it,
otherwise it should be a simple one-click process. Generated code
should be included in source control as all other code.
4. Handcrafted code is sacred and protected. People are creative
and may not do the same thing the same way a second time, so
you should have a place for handcrafted code in the design
(derived or partial classes) and protect against accidental change.
5. Generated code is of extremely high quality. One of the
greatest benefits of code generation is high-quality architectures
that can evolve to meet changing demands.
6. Designing an application based on generation should be
easy. T4 templates and a simple ecosystem-based harness is one
step in this direction.
K.D.
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 43
Ask Kathleen
you expand the plus sign on the template file, youll find the
output with a .CS extension containing Good Morning World!,
Good Afternoon World! or Good Evening World!
If you use a VB project, you might be surprised that the
extension of the generated file is .CS. The custom tool defaults
to .CS, but you can fix this by specifying the extension in an
output directive:
<#@ output extension=".vb" #>
to any fields and properties you declare, you can access base class.
Members of the base class allow you to control indentation
(PushIndent, PopIndent, ClearIndent, CurrentIndent), report
issues (Error, Warning, Errors) and directly access the string
builder (Write, WriteLine, GenerationEnvironment).
Code within statement blocks is run, but is not treated as
output. Often youll need to include calculated or retrieved fields.
You can do this using the expression block, differentiated by
<#= #>. Also, because the code of your template becomes code in a
method, youll need a different type of block to include additional
methods or additional classes. The class feature block offset by
<#+ #> offers this capability. You can write the template above in a
different way to demonstrate these features:
T4 Templates
Access Protection
Media Protection
Pay-Per-Use Counter
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 44
</Language Lab>
Ask Kathleen
T4 Templates
44
some issues,
such as assembly and include file location resolution.
???
However, youll still face challenges as you stuff your generation
process inside your application project.
Morning!"; }
12 && hour < 17)
Afternoon!"; }
T4 Harness
I prefer to write an independent generation harness that can
run multiple templates to build your app and is focused on
Evening!"; }
TEMPLATE HARNESS
C#
<#@
<#@
<#@
<#@
table.Name
#>
AS
BEGIN
SET NOCOUNT ON;
SELECT <#=
FROM <#=
ConcatenateWithComma(table.TableColumns) #>
table.Name #>
END
GO
<#+ string ConcatenateWithComma(IEnumerable<IDbTableColumn
Metadata> list)
{
string ret = String.Empty;
foreach (IDbTableColumnMetadata item in list)
{
ret += item.Name + ", " ;
}
return ret.Substring(0, ret.Length - 2);
}
#>
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 45
Ask Kathleen
T4 Templates
8VcNdj8ji9ZkZadebZci8dhih
7n>cXgZVh^c\EgdYjXi^k^in4
7Z[dgZGVaan!lZhigj\\aZYideg^dg^i^oZl]VidjgXjhidbZgh
gZVaancZZYZY#CdllZldg`dci]Z]^\]ZhikVajZegd_ZXih
ZkZgnildlZZ`h#6cY!lZkZgZYjXZYgZaZVhZi^bZhWn*%#
6\^aZVcYGVaanXVcXjindjgi^bZ"id"bVg`Zi
Wn*%VcY^cXgZVhZegdYjXi^k^inWn'*#
;h_a>kZZb[ijed" 8ID!>cdk^h
=ZVgi]Zl]daZhidgnVcYhZZl]nGVaan^hi]Zdcan
6\^aZA^[ZXnXaZBVcV\ZbZcikZcYdgid\jVgVciZZndjghjXXZhh#
AZVgcbdgZVilll#gVaanYZk#Xdb
'%%.GVaanHd[ilVgZ9ZkZadebZci8dge
0509vsm_Langlab_36-46.v11
4/17/09
12:44 PM
Page 46
</Language Lab>
T4 Templates
Ask Kathleen
46
0509vsm_AdIndex
4/17/09
11:51 AM
Page 47
Advertising Sales
Ad Index
Advertiser
Page
/n Software Inc.
www.nsoftware.com
Accusoft Pegasus
21
www.accusoft.com
Aspose
C3
Atalasoft, Inc
19
www.apose.com
www.atalasoft.com
East
ComponentArt, Inc.
24, 25
www.componentart.com
Andrew Mintz
National Sales Manager
Phone: 508-532-1433
amintz@1105media.com
dtSearch
39
www.dtsearch.com
ESRI
www.esri.com
GrapeCity, Inc.
13
Intel Corporation
C4
www.grapecity.com
www.intel.com
West
www.leadtools.com
Chris Kourtoglou
Regional Sales Manager
Phone: 650-579-0121
ckourtoglou@1105media.com
Microsoft Corporation
16, 17
www.microsoft.com
PureCM.com
29
RallySoftware
45
23
www.purecm.com
www.rallydev.com
www.red-gate.com
Software FX
C2, 1
www.softwarefx.com
VSLive! Events
www.vslive.com
Production Coordinator
Serena Barnes
Phone: 818-734-1520 ext 164
vsmadproduction@1105media.com
sbarnes@1105media.com
CA Inc.
www.ca.com
ComponentOne LLC
DataDirect Technologies
www.datadirect.com
Visual Studio Magazine (ISSN 1537-002X) is published
monthly by 1105 Media Inc., 9121 Oakdale Avenue,
Ste. 101, Chatsworth, CA 91311. Periodicals postage
paid at Chatsworth, CA 91311-9998, and at additional
mailing offices. Complimentary subscriptions are sent
to qualifying subscribers. Annual subscription rates for
non-qualified subscribers are: U.S. $34.97, Canada
$52.97 (U.S. funds); International $78.97 (U.S. funds).
Subscription inquiries, back issue requests, and
address changes: Mail to: Visual Studio Magazine,
P.O. Box 1164, Skokie, IL 60076-8164, e-mail
VSMmag@1105service.com or call toll free 888-7688759, fax number 847-763-9564. International calls
847-763-9135. POSTMASTER: Send address changes
to Visual Studio Magazine, P.O. Box 1164, Skokie, IL
60076-8164. Canada Publications Mail Agreement No:
40612608. Return Undeliverable Canadian Addresses
to Circulation Dept. or Bleuchip International, P.O. Box
25542, London, ON N6C 6B2.
Copyright Statement
Copyright 2009 by 1105 Media, Inc. All rights
reserved. Printed in the U.S.A. Reproductions in
whole or part prohibited except by written permission. Mail requests to "Permissions Editor," c/o Visual
Studio Magazine, 2600 El Camino Real, Ste 300, San
Mateo, CA 94403.
Legal Disclaimer
The information in this magazine has not undergone
any formal testing by 1105 Media, Inc. and is distributed without any warranty expressed or implied.
Implementation or use of any information contained
herein is the reader's sole responsibility. While the
IBM Corp.
12
www.embarcadero.com
Infragistics
22
11
www.magenic.com
Nalpeiron
www.nalpeiron.com
20, 22
Ncover
22
Nevron Software
21
www.ncover.com
www.nevron.com
Noemax Technologies
22
Oracle Corp.
12
PreEmptive Solutions
22
www.noemax.com
www.oracle.com
www.preemptive.com
PureCM.com
www.purecm.com
REAL Software
www.realsoftware.com
Resco
www.resco.net
20
20, 21
20
SAP AG
20
48
www.sap.com
This publications subscriber list, as well as other
lists from 1105 Media Inc., are available for rental.
For more information, please contact our list manager,
Merit Direct.
Phone: 914-368-1000
E-mail: 1105media@meritdirect.com
Online: www.meritdirect.com
19, 20
JNBridge
www.jnbridge.com
List Rental
18, 20
12
www.infragistics.com
12
20
Reprints
20, 22
www.dynatrace.com
www.ibm.com
12
dynaTrace Software
Corporate Address
Media Kits
43
Editorial Index
www.componentone.com
ID Statement
www.sun.com
Sybase Inc.
www.sybase.com
11, 12
Telerik
21
20
22
www.telerik.com
www.textcontrol.com
www.vni.com
47
0509vsm_RedReview_48.v3
4/17/09
12:48 PM
Page 48
</Redmond
Review>
BY ANDREW J. BRUST
48
Project1
2/24/09
10:18 AM
Page 1
Project2
4/16/09
10:36 AM
Page 1
2009, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries. *Other names and brands may be claimed as the property of others.