Saturday, October 6, 2007

US Markets rise on job data

The Dow and the S&P 500 surged to all-time highs on Friday after a solid employment report rekindled optimism about the US economy and corporate profits.

The economy added more jobs in September than economists had expected, while an earlier estimate of job losses in August was revised to a gain, quashing fears of recession.

Friday's record run-up cemented the market's recovery from a late summer sell-off when a credit squeeze and mounting housing market losses drove investors away from equities.

Shares of economic bellwethers, led by Caterpillar Inc, were the Dow's biggest advancers, along with the stocks of financial services companies, such as credit card issuer American Express Co and Citigroup Inc.

Technology and consumer-oriented issues also showed strength.

"From the jobs numbers that we got today, we saw that most of the economy is actually doing a lot better than people thought it was doing," said Cleveland Rueckert, market analyst at Birinyi Associates Inc, in Stamford, Connecticut.

The Dow Jones industrial average climbed 91.70 points, or 0.66 percent, to end at 14,066.01. The Standard & Poor's 500 Index jumped 14.75 points, or 0.96 percent, to 1,557.59 -- a record close.

The Nasdaq Composite Index finished up 46.75 points, or 1.71 percent, at 2,780.32.

During the session, the Dow reached an intraday record high of 14,124.54 and the S&P 500 hit an all-time high of 1,561.91. The Nasdaq climbed to 2,784.93, its highest level since January 2001.

On Monday, the Dow achieved its 33rd record close for 2007 by finishing at 14,087.55.

For the week, the Dow gained 1.23 percent, the S&P 500 rose 2.02 percent and the Nasdaq climbed 2.9 percent, marking the index's best weekly climb since March.

Investors also snapped up small-cap stocks, driving the Russell 2000 Index to its biggest weekly percentage gain since July 2006. The Russell 2000 shot up 1.89 percent, or 15.71 points, to end at 844.86.

On a sectoral basis, financials were the week's biggest winner, with the S&P financial index finishing up 1.2 percent. On a weekly basis, the index had its best weekly advance since March 2003 as investors bet that the worst effects of the credit market turmoil are behind Wall Street.

Transport was another stellar performer, with the Dow Jones transport average finishing up 3.3 percent, its biggest advance since Sept. 18, when the U.S. Federal Reserve cut interest rates.

Technology also shone, powered by gains in shares of BlackBerry hand-held device maker Research In Motion Ltd, a day after it posted quarterly results that beat expectations. The stock, which was the Nasdaq's biggest gainer and hit an all-time high during the session, ended up 12.8 percent at $113.37.

Google Inc was another notable gainer after Bear Stearns set a 2008 price target of $700 on the Web search leader's stock. Google finished up 2.6 percent at $594.05.

Among industrials, shares of heavy equipment maker Caterpillar ended up 2.2 percent at $80.33 on the New York Stock Exchange, while shares of 3M, the maker of Post-it notes and other products, gained 1.7 percent to $95.85.

Shares of aluminum company Alcoa Inc, another economic bellwether, climbed 3 percent to $38.79.

Friday, August 24, 2007

Office Open XML Developer Resources

Speaking of Tech Ed 2007, some of the discussions I had with ISVs revolved around Office Open XML and the current activity with the ISO standardisation process. There were basically two types of things ISVs wanted to know. The first was about the ISO standardisation process itself, why it matters, how it affects ISVs and how Office Open XML compares to existing document standards. The second common topic of discussion was around development resources and how to actually work with the Office Open XML formats. By the way, if you haven't seen the Ecma Office Open XML standard (Ecma-376) it is available on the Ecma website.

Some good information to summarise the first category of discussion is available over at Sean McBreen's blog. Sean is the Director of the group that looks after ISVs in New Zealand and has done a good job of answering some of the popular misconceptions around the Ecma Office Open XML standard; in particular around Intellectual Property Rights and why we need multiple standards. Rather than posting all the information I am going to link to the relevant posts on Sean's blog. I recommend you read them to help you understand the current interest and activity around the ISO standardisation of Office Open XML.

The post titled IPR on Ecma Office Open XML explains the three options an implementer of the standard can select from to use with their implementation of the Office Open XML format.

The post titled My top 4 questions on Ecma Office Open XML and simple answers answers the questions we hear asked most commonly.

Another thing to make clear is that Office Open XML is already a standard, an Ecma standard known as Ecma-376. All the discussion at the moment is around whether it should be an ISO standard as well. One side of the debate is of the opinion is that there is already an ISO standard document format (ODF) and we don't need another one. My top 4 questions on Ecma Office Open XML and simple answers and Why have another document standard? provide our view on why it is important to have multiple standards.

The other popular misconception is that the Office Open XML format is a Microsoft only format. While true that the initial work was done by Microsoft, the technology was first submitted to Ecma in late 2005 and since then has been through significant change based on the recommendations of the Ecma Technical Committee (which includes representatives from Apple, Barclays Capital, BP, The British Library, Essilor, Intel, NextPage, Novell, Statoil, Toshiba, and the United States Library of Congress). Actually, I noticed recently that Apple's latest version of iWork '08 mentions as one of the features that it can import Word, PowerPoint and Excel documents that use the OOXML format.

For the second category of discussion, the meat and potatoes of how to use the Office Open XML formats I can recommend the following resources.

The OpenXMLDeveloper.org web site is a great place to start:

Earlier in 2007 a series of Open XML developer workshops were run in 30 countries. The content of the workshop is available on line, including all the presentations, samples, and lab manuals. This is a great way to get up to speed fast on using Open XML formats.

There is a book called "Open XML Explained" available for download. The sample documents shown in the book are available here. The author of the book, Wouter Van Vugt, is a software development trainer/consultant who specializes in the Open XML file formats. He participates in the forums here on OpenXMLDeveloper.org, and has a blog where he covers Open XML and other .NET development topics.

There are also all sorts of interesting articles about working with Open XML in the Library section of the OpenXMLDeveloper.org website.

On MSDN there is the XML in Office Developer Portal which contains information about using Open XML and includes a link to a preview of the SDK for Open XML Formats. The SDK provides strongly-typed part classes to manipulate Open XML documents. There is also an MSDN Forum called the Microsoft SDK for Open XML Formats where you can get assistance with the SDK.

There are a bunch of videos on Channel 9 about using Open XML including this one about how MindJet (an ISV in the U.S.) are using Open XML in their latest version of MindManager Pro.

I know a number of New Zealand ISVs are already using Office Open XML to output content from their own applications for reporting, automatic document generation, document re-purposing, archiving etc. If any of you have found Open XML resources that may be useful to others, why not share them in a comment?

Monday, August 20, 2007

Additional resources for Visual Studio Express

I got a number of queries from people who wanted to get information on resources for the Express Editions that could help them get started. Please note that a lot of these are for VS 2005 Express Editions and we will update them as we get to shipping VS 2008 for the latest tool set.

We are upgrading the set of video feature tours for Visual Studio Express 2008 at RTM, to walk users through downloading and installing Express, creating their first program, and introducing the user to the IDE. It also highlights the new IDE and language features that are present in Visual Studio Express 2008. We have revamped our “Getting Started” links in order to provide quick pointers to our most popular documentation topics and online resources. We have also significantly updated our in-product Guided Tours.

Beginner Developer Learning Center is our one-stop shop for novice programmers who are interested in Windows or Web Development containing videos, articles, samples, book chapters, tips and tricks. Further, through a partnership with Wiley books, we offer a set of 17 chapters from the popular “For Dummies” book series that help Web programmers understand the fundamentals behind creating Web pages and getting started with Visual Web Developer Express. In addition, we now provide easy access to samples and tutorials through the Help menu in Visual Studio Express 2008 so you never have to search for them again.

Coding4Fun Developer Kit 2008 Vol. 1 is a collection of tools that provides a set of drag ‘n drop controls and components that enable rapid development of hobbyist API.. The Facebook Developer Toolkit is a set of controls and components that provide VB and C# wrappers for the Facebook API that allow you to easily and quickly develop .NET applications that you can share with your Facebook friends. To help you get started we’ve included a suite of samples, QuickStarts and video walkthroughs.

For a more in-depth look at the 2008 Express editions, be sure to check out Dan Fernandez’s blog where he is putting together a detailed 5-part series on “What’s in Visual Studio 2008 Express Beta 2?”.

Visual Studio 2008 - MSBuild

As we get down to the final lap of Visual Studio 2008, I wanted to talk about some of the new features in this release. Over the next few months, I will be blogging on different features and technologies that I’m excited about.

Today, let me start with MSBuild.

At the core of every developer’s environment is the build system. I remember my early days of Windows NT in the early 90s when I used to spend hours after hours after hours in the build lab to help get the build out knowing that the whole engineering team is waiting on a new build.

In Visual Studio 2005, we introduced a new build system called MSBuild. In Visual Studio 2008, we built on this foundation and added two new customer requested features. This release adds a new focus on reliability by allowing you to control which .Net platform you want to target for each project that you build, such as targeting a build to run on the 2.0 or 3.0 .Net Fx so customers do not have to install the latest framework to run your software. You can upgrade to VS 2008 and still have confidence that your existing projects not only build, but work without having your customers update to the .Net Fx 3.5. You can preserve as much of the Visual Studio 2005 build elements as you desire. If you want to see more details on multi-targeting, see Luke Hoban’s recent blog post.

We also added multiple core support for doing multi-threaded builds on the command line for those of you with a lot of projects and long build times. Enabling multiple core support requires only a few new properties, and MSBuild manages all of the work to schedule projects efficiently and effectively. The MSBuild team has tested this ability to scale by building some projects on a 64-CPU machine.

In Visual Studio, we integrate the entire build system for you, so there is very little that you need to do to build your projects or your software system out of the box. The underlying build system has full extensibility through not only the IDE, but through a command line and object model.

Like other things, this team is big on self-hosting. For the VS 2008 product they’ve deployed both the multi-targeting and multi-core support across the entire division - Visual Studio is built using these two features.

It is great to see MSBuild being adopted in many different ways by large and small teams. Inside Microsoft, Team Build uses MSBuild as a core building block. Other Microsoft Technologies such as WPF build using MSBuild. Also, developers are using MSDN Forums and open source projects to share customized MSBuild tasks in order to help build and deploy their products.

You can check out these new features and ask the MSBuild team questions on their blog or forum.

Tuesday, August 14, 2007

Independence...



At the stroke of the midnight hour, when the world sleeps, India will awake to life and freedom. A moment comes, but rarely in history, when we step out from the old to the new, when an age ends, and when the soul of a nation, long suppressed, finds utterance.

Bring freedom and opportunity to the common man, to the peasants and workers of India; to fight and end poverty and ignorance and disease; to build up a prosperous, democratic and progressive nation, and to create social, economic and political institutions which will ensure justice and fullness of life to every man and woman.

All of us, to whatever religion we may belong, are equally the children of India with equal rights, privileges and obligations. We cannot encourage communalism or narrow-mindedness, for no nation can be great whose people are narrow in thought or in action

Long way to go....

Listen to the exclusive audio composed by A.R. Rahman on the 60th Independence day of our nation.

Click on the link below to listen to the Jaya he audio track composed by A. R. Rahman.

download
http://www.freewebs.com/iamsvs/JayaHey.mp3

Monday, August 13, 2007

Atlas Project

We are now well into the final RTM milestone of the ASP.NET 2.0 and Visual Web Developer 2005 release. Having reached our ZBB (Zero Bug Bounce), we are now locked down on our feature set, and we’re focusing on the final quality, performance, and reliability push.

At the same time, we have started to work on our next release. One area we’ve been looking at for a while is the growing popularity of richer user experiences in browsers, through AJAX (Asynchronous Javascript and XML)-style programming.

All of the pieces of AJAX – DHTML, JScript, and XMLHTTP – have been available in Internet Explorer for some time, and Outlook Web Access has used these techniques to deliver a great browser experience since 1998. In ASP.NET 2.0, we have also made it easier to write AJAX-style applications for any browser using asynchronous callbacks, and we use them in several of our built-in controls.

Recently, however, the technologies used by AJAX have become broadly available in all browsers, and use of this model for rich web applications has really taken flight. There are a number of high-profile new AJAX-style websites out there today, including a number by Google, as well as sites like A9 and Flickr. Microsoft will also have more sites that use this technology out there soon – check out Start.com and the MSN Virtual Earth project for examples.

The popularity of AJAX shows the growing demand for richer user experiences over the web. However, developing and debugging AJAX-style web applications is a very difficult task today. To write a rich web UI, you have to know a great deal of DHTML and JavaScript, and have a strong understanding of all the differences and design details of various browsers. There are very few tools to help your design or build these applications easily. Finally, debugging and testing these applications can be very tricky.

What we’ve set out to do is to make it dramatically easier for anyone to build AJAX-style web applications that deliver rich, interactive, and personalized experiences. Developers should be able to build these applications without great expertise in client scripting; they should be able to integrate their browser UI seamlessly with the rest of their applications; and they should be able to develop and debug these applications with ease.

For this work, we’ve been working on a new project on our team, codenamed “Atlas”. Our goal is to produce a developer preview release on top of ASP.NET 2.0 for the PDC this September, and then have a website where we can keep updating the core bits, publishing samples, and building an active community around it.

Here are some of the pieces of Atlas that we are going to be delivering over time:

Atlas Client Script Framework

The Atlas Client Script Framework is an extensible, object-oriented 100% JavaScript client framework that allows you to easily build AJAX-style browser applications with rich UI and connectivity to web services. With Atlas, you can write web applications that use a lot of DHTML, Javascript, and XMLHTTP, without having to be an expert in any of these technologies.

The Atlas Client Script Framework will work on all modern browsers, and with any web server. It also won’t require any client installation at all – to use it, you can simply include references to the right script files in your page.

The Atlas Client Script Framework will include the following components:

o An extensible core framework that adds features to JavaScript such as lifetime management, inheritance, multicast event handlers, and interfaces

o A base class library for common features such as rich string manipulation, timers, and running tasks

o A UI framework for attaching dynamic behaviors to HTML in a cross-browser way

o A network stack to simplify server connectivity and access to web services

o A set of controls for rich UI, such as auto-complete textboxes, popup panels, animation, and drag and drop

o A browser compatibility layer to address scripting behavior differences between browsers.

ASP.NET Server Controls for Atlas

For ASP.NET applications, we are planning on building a new set of AJAX-style ASP.NET Server Controls, and enhancing our existing ASP.NET page framework and controls, to support the Atlas Client Script Framework.

ASP.NET 2.0 includes a new feature, called asynchronous client callbacks, that makes it easy to build ASP.NET pages that update their content from the server without requiring a page roundtrip. Asynchronous client callbacks wrap XMLHTTP, and work on a variety of browsers. ASP.NET itself includes several controls that use callbacks, including client-side paging and sorting in the GridView and DetailsView controls, and supporting virtual lists of items in the TreeView control. You can learn more about callbacks on Bertrand Le Roy’s blog.

The Atlas Client Script Framework will fully support ASP.NET 2.0 callbacks, but we’re planning on enriching the level of integration between the browser and the server much further. For example, you will be able to data bind Atlas client controls to ASP.NET data source controls on the server, and you’ll be able to control personalization features of web parts pages asynchronously from the client.

ASP.NET Web Services Integration

Like any client application, an AJAX-style web application will usually need to access functionality on the web server. The model for connecting to the server for Atlas applications is the same as for the rest of the platform – through the use of Web services.

With ASP.NET Web Services Integration, Atlas applications will be able to access any ASP.NET-hosted ASMX or Indigo service directly through the Atlas Client Script Framework, on any browser that supports XMLHTTP. The framework will automatically handle proxy generation, and object serialization to and from script. With web services integration, you can use a single programming model to write your services, and use them in any application, from browser-based sites to full smart client applications.

ASP.NET Building Block Services for Atlas

With ASP.NET 2.0, we’ve built a rich set of building block services that make it incredibly easy to build powerful, personalized web applications. These building blocks dramatically reduce the amount of code you have to write for common web application scenarios, such as managing users, authorizing users by role, and storing profiles and personalized data.

With Atlas, we’ll make these accessible as web services that can be used from the client framework in the browser or from any client application. For example, if you are building a website that shows a list of to-do items for the user, you can use the ASP.NET Profile service to store them in the user’s profile on the server. These items will then be accessible even as the user roams from one machine to another.

Services we will provide include the following (all based on the ASP.NET V2.0 implementations):

- Profile: Store per-user data on the server.

- UI Personalization: Store personalized UI settings on the server.

- Authentication: Authenticate users.

- Roles: Authorize user tasks and show different UI based on the user’s roles.

Because these building blocks are server based, you can use the same security model as for accessing the rest of the site. These services also won’t require any client download – just reference the script proxy from the browser.

All of our ASP.NET 2.0 Building Block Services are pluggable at the back-end using a common provider model extensibility pattern. We provide built-in providers that let you use a SQL Server database or Active Directory as a store, but you can easily plug in your own. For example, if you want to store user profiles in a centralized cloud rather than on your own database server, you can simply plug in a different provider – the choice is yours.

Client Building Block Services

In addition to DHTML, JScript, and XMLHTTP, we’re looking at additional services that allow websites to harness the power of the client to deliver an enriched experience.

The local browser cache is an example of such a service. When enabled, websites can store content in that cache and later retrieve it efficiently. But there’s no API from the browser to store data in the cache, and applications like Google Maps or OWA have to go through hoops to generate unique URLs so that the browser will cache the server response. With Atlas, we plan on providing programmable access to a local store/cache, so that applications can locally cache data easily, efficiently and securely.

Integration with other applications is another new dimension of a rich web experience. For example, when a user browses an auction site and bids on an item, they can see when the auction ends, but how easily can they integrate that event into their personal calendar application? With Atlas, we are also looking to provide a set of client-side building block services, and a model for how websites can securely publish connection points for those services. When the user selects “Add to Calendar”, the browser can call the connection point to get the calendar data, and pass it onto the local calendar application. The page doesn’t get to download or run its own code or initiate the action, so it’s safer than ActiveX.

Next Steps

As we move further along, more pieces of the story will emerge. In parallel, we are already working on our next release of development and debugging tools, so that we can deliver a great development experience for these type of rich web applications.

One question you may have is how Atlas relates to Avalon and smart clients.

We see Atlas as the best way to write a whole new generation of richer, more interactive, more personalized experiences in browser applications. Avalon is the next generation presentation model for Microsoft, and will let you build the richest user experiences on the Windows platform. Avalon will deliver phenomenal graphical experiences that use the latest in media integration and hardware acceleration. And Avalon will also let you provide persistent, immersive experiences that go beyond the browser.

Of course, when you’re building Avalon applications, you can reuse the programming model investments you make today with ASP.NET and Atlas. For example, the ASP.Net Building Block Services and Client Building Block Services will also be accessible from any Avalon client. This model gives you a smooth path to the next generation of applications.

Stay tuned here to hear more about our plans for Atlas and ASP.NET V.Next. And let us know your thoughts – Are you considering building richer AJAX-style web applications? What would you like to see in Atlas? You can post here on the blog, or send your comments to our feedback to our team alias at atlas@microsoft.com.

Thanks,

Thursday, August 9, 2007

Visual C++ Futures

Visual C++ Futures


I have got a number of emails and comments from some of you recently wanting to know more about the future of Visual C++.

The Visual C++ team has been looking at what they should in VC++ to ensure that the direction of the product aligns closely with customer needs and market realities. The team has the following three things top of mind as they think about the direction forward.

  • C++ customers mostly develop native code applications. As part of this, you would like to see renewed emphasis on tools for writing native code.
  • While firmly rooted in native code, many of you want to extend your applications to take advantage of managed functionality (especially WPF, WCF and workflow).
  • You are using C++/CLI to bridge between native and managed code.

This team will be significantly increasing support for native development tools. Central to this work is investigating ways to make C++ developers far more efficient in understanding, updating and validating the quality of large native code bases. In fact, the team is already working on a front-end rewrite that will allow for a vastly improved IntelliSense experience. This same work should pave the way for future enhancements such as refactoring and advanced source code analysis. In addition, the team intends to update the native libraries to simplify the development of rich-client user interfaces and access to underlying Windows platform innovation. The team will also work to provide “friction-free” interop between native & managed code through enhancements to C++/CLI and IJW.

The Orcas release will begin to reflect this new strategy but large changes – especially to the design time experience – will come with the version beyond that. The team is currently kicking around a number of native code & interop features planned for Orcas+1, and we are always interested in hearing from customers. If there are specific things you’d like to see in future versions of Visual C++ please let us know.

You should also check out the Channel 9 video by Bill Dunlap and Steve Teixeira on the future of Visual C++. In addition, if you want to interact directly with the VC++ team please visit their team blog.

Imagine Cup 2007 - Who's the winner?

Imagine Cup 2007 - Who's the winner?


As I am sitting in my hotel room in Seoul, Korea - this is the question on my mind as well as the minds of the students who are here from around the world for the Imagine Cup 2007 finals. The good news is we will know the answer within the next 24 hours.

Winning is exciting - but is not all. The fact that 344 students from 59 different countries have come this far is just awesome. Remember, we started with over 100,000 students from over 100 countries at the beginning of this year's competition.

The theme for this year's Imagine Cup contest is "Imagine a world where technology enables a better education for all".

One of my personal favorite categories in the competition is the Software Design category. This year, the 6 final teams in this category are from Austria, Ireland, Jamaica, Korea, Serbia and Thailand. With applications ranging from a vritual environment to teach strudents how to drive cars with more proficiency to providing a learning solution for the deaf and the blind people to providing a graphical way for kindergarten children to learn the basics of reading and writing to educating people in the sign language - the creativity and the passion that these students have demonstrated is just awesome.

One of these teams will win tomorrow and so I wish all the very best to these teams.

I do want to take this opportunity and congratulate all the students from around the world who participated in this year's Imagine Cup tournament.

ASP.NET AJAX in .NET 3.5 and VS 2008

ASP.NET AJAX in .NET 3.5 and VS 2008


In the past I've blogged about the JavaScript and AJAX improvements with VS 2008 JavaScript Intellisense and VS 2008 JavaScript debugging. Below are a few notes about some of the ASP.NET AJAX runtime features coming as part of the VS 2008 and .NET 3.5 release, as well as important notes to read if you are opening existing ASP.NET AJAX 1.0 projects in VS 2008.

ASP.NET AJAX included in .NET 3.5

ASP.NET AJAX 1.0 shipped as a separate download that you could install on top of ASP.NET 2.0. Starting with the .NET Framework 3.5 release, all of these features are built-in with ASP.NET, which means you no longer have to download and install a separate ASP.NET AJAX setup when building or deploying applications.

When you create a new ASP.NET application or web-site in VS 2008 that targets the .NET 3.5 framework, VS will automatically add the appropriate AJAX registrations in your web.config file and the core ASP.NET AJAX server controls will show up in your toolbox.

The version of ASP.NET AJAX that ships with .NET 3.5 has a number of nice improvements to it - including support for using UpdatePanels with WebParts, support for WCF based JSON end-points, support for using the ASP.NET Profile, Role and Login Application Services using JavaScript, and a number of bug fixes and performance improvements.

Understanding ASP.NET AJAX Versioning

ASP.NET AJAX 1.0 and .NET 3.5 can both be installed side-by-side on the same machine. ASP.NET AJAX 1.0 is implemented in V1.0 of the System.Web.Extensions.dll assembly. The implementation of ASP.NET AJAX included with .NET 3.5 lives in V3.5 of the System.Web.Extensions.dll assembly. The V3.5 of System.Web.Extensions.dll is a fully compatible super-set of the 1.0 implementation (which means you don't need to change any code in order to use it).

Each ASP.NET application on a machine can choose which version of ASP.NET AJAX they want to build and run against. This is configured via the section in its web.config file, as well as by what System.Web.Extensions.dll assembly it is compiled against (with web-site projects these references are registered in the section of the web.config file, with web application projects they are referenced via the project file).

You will be able to use VS 2008 to target ASP.NET AJAX 3.5 applications, as well as to use the new VS 2008 multi-targeting support to build ASP.NET 2.0 applications that use ASP.NET AJAX 1.0. I cover how to-do both in the sections below.

Important Beta 2 Information

A few days before we shipped Beta2 on the web, we discovered a side-by-side issue with ASP.NET AJAX. If you read my original VS 2008 and .NET 3.5 Beta Released blog post, you'll remember that I called out this post-install patch step to fix this issue:

You should download and run this batch file. This takes only a few seconds to run, and fixes an issue we found earlier this week with the version policy of System.Web.Extensions.dll - which is the assembly that contains ASP.NET AJAX. If you don't run this batch file, then existing ASP.NET 2.0 projects built with ASP.NET AJAX 1.0 and VS 2005 will end up automatically picking up the new version of ASP.NET AJAX that ships in .NET 3.5 Beta2. This will work and run fine - but cause you to inadvertently introduce a .NET 3.5 dependency in the applications you build with VS 2005. Running the batch file will change the version binding policy of the new System.Web.Extensions.dll assembly and ensure that you only use the new .NET 3.5 ASP.NET AJAX version with projects that you are explicitly building for .NET 3.5.

The good news is that this fixes the side-by-side issue we found, and makes it safe to develop ASP.NET AJAX with both VS 2005 and VS 2008 on the same machine.

The one gotcha is that it causes VS 2008 to incorrectly detect the version of ASP.NET AJAX being used when first opening older ASP.NET 2.0 projects (specifically it can cause VS 2008 to think the project is already using .NET 3.5). This requires that you to take a few additional steps in Beta2 the first time you open existing ASP.NET AJAX 1.0 web-site projects with VS 2008 to correct this. You will not need to take these steps with the final VS 2008 release.

Upgrading ASP.NET AJAX 1.0 Applications to use ASP.NET AJAX 3.5

When you use VS 2008 to open an existing ASP.NET 2.0 application that uses ASP.NET AJAX 1.0, you can optionally choose to upgrade the application to use .NET 3.5 (and the version of ASP.NET AJAX included within it).

The VS Web Tools team recently published a Upgrading ASP.NET AJAX 1.0 Websites and Web Applications to .NET Framework 3.5 blog post that describes the step-by-step instructions to accomplish this using VS 2008 Beta2. The good news is that upgrading an ASP.NET AJAX 1.0 application to .NET 3.5 does not require that you change any of your code, and should take only a few minutes to complete.

As part of upgrading ASP.NET AJAX 1.0 application to .NET 3.5, you'll want to update compiled ASP.NET AJAX control libraries you might be using. The ASP.NET AJAX Control Toolkit team is now publishing both ASP.NET AJAX 1.0 and .NET 3.5 versions of the AJAX Control Toolkit that you can download here:

Details on my speaking events in London, Omaha, and Las Vegas

Several people have sent me mail asking what conferences I'll be speaking at over the next few months. Below are a few events where I'll be covering ASP.NET, LINQ, VS 2008 and Silverlight content:

MIX:UK 07 Conference in London on September 11th and 12th

I'll be doing the keynote for this Microsoft event, as well as (at least) 4 technical breakout talks covering ASP.NET "Orcas", VS 2008, LINQ and Silverlight.

You can learn more and register for the event here. Please note that the early-bird registration discount ends this Friday - so sign up soon.

Heartland Developers Conference in Omaha, NE on October 18th and 19th

I'll be doing a keynote for this event, as well as 4 technical breakout talks covering ASP.NET "Orcas", VS 2008, LINQ and Silverlight.

You can learn more and signup for this event here.

Microsoft ASP.NET Connections Conference in Las Vegas from November 5th-8th

I'll be doing a keynote and several technical breakout talks on ASP.NET, LINQ, AJAX and VS 2008. If you haven't attended ASP.NET Connections before, I definitely recommend it. They put on a really high quality show with great speakers. It is co-hosted with VS Connections, SharePoint Connections, and SQL Connections, which means you can also attend great sessions on other related .NET technologies.

You can learn more and register for the event here.

Hope to see some of you in person soon!

Tuesday, August 7, 2007

ASP.NET AJAX and the ASP.NET AJAX Control Toolkit

ASP.NET AJAX and the ASP.NET AJAX Control Toolkit

Here is the latest in my semi-regular link-listing series. Today's links are all about ASP.NET AJAX.

ASP.NET AJAX Articles

  • ASP.NET AJAX: Canceling an Async Postback: Matt Berseth demonstrates how to use JavaScript on the client to see if a page is in the middle of an Async Postback (using the UpdatePanel), and how you can programmatically cancel it.

  • Create an AJAX File Upload: Kazi Manzur Rashid posts about a good technique you can use to handle AJAX-like file uploads using ASP.NET.

ASP.NET AJAX Control Toolkit Articles

ASP.NET AJAX in VS 2008 and .NET 3.5 Articles

  • ASP.NET AJAX in .NET 3.5: A blog post by me that talks about the version of ASP.NET AJAX that is included in .NET 3.5.

Monday, August 6, 2007

Searching Your Website with Microsoft Index Service using ASP.NET

Searching Your Website with Microsoft Index Service using ASP.NET

Once a website grows beyond a couple of dozen pages then it can sometimes be difficult to create a site navigation scheme that allows users to quickly find exactly what they're looking for. One way to improve site navigation is to add a search facility to the website. Adding a search facility brings major benefits to a website, making it easier for users to find information as well as adding an additional method of navigating a website. Search facilities are generally well used, and will often appear within the requested pages on a website.

There are different software solutions are available to put your own search engine on your website. Server-side search solutions available such as Microsoft's Index Server or ht://Dig. Although they allow sophisticated search facilities to be created, they generally require a high level of technical knowledge to install and configure. Also you can use the third party components for your website to do the search.

Using Microsoft Index Service it indexes your entire website quickly and generates an efficient search engine. It makes easier for your visitors to find things on your website and gives it a more professional appearance.

What is the Indexing Service?

Microsoft Indexing Service is a service that provides a means of quickly searching for files on the machine. The most familiar usage of the service is on web servers, where it provides the functionality behind site searches. It is built into Windows 2000 and 2003. It provides a straightforward way to index and search your web site.

With Index Services you can specify a specific group of documents or HTML pages to be indexed, and then create an ASP.NET page that can query this index. We'll build a simple, fast, and extensible search tool using .NET and Microsoft Indexing Services, which allows MS Indexing Services to index pages and display them in your search results.

Configuring Microsoft Indexing Services

The first step in creating an index for your search application is to configure Indexing Services on the IIS server that your Web application will be running. To do this you need access to the Web server itself. Open the Microsoft management console by clicking Start, then Run; type mmc and click Ok. Next, to open the Indexing Services snap-in, you must:

Click file,
Click Add/Remove Snap-In,


Click Add,

Select the Indexing Service Snap-In,

Click Add,
Click Finish,

Close the dialog


To create a new catalog - which is the vernacular Microsoft uses for an index - right-click on the Indexing Service node, click New and then Catalog. We need to choose a location to store the catalog file.


Once we done that, expand the catalog that you just created and click on the directories icon. Right-click on the directories folder, click new directory, and add the directory or directories that contain the content that you want to search. These directories can reside anywhere that the host computer can access, virtual directories and even UNC paths (\\Server\share) may be used. However, each directory that is indexed must either reside physically, or be included as a virtual directory, in the root of the website that you are indexing. If a directory is specified that is not in the web root via a physical folder or virtual directory, the results will be displayed in your search, but they will return broken links.

Indexing Services will effectively index HTML documents. To ensure that your required directories will be indexed you should verify that the index flag is properly set on the files and folders. We can verify this setting by right clicking on any folder or file and selecting properties. Click the "Advanced button" and make sure that the "For fast searching, allow indexing services to index this folder" checkbox is checked.

Next, you want to set the properties of this catalog so that the HTML paths can be used, and so that Indexing Services will generate abstracts for the documents as they are indexed.

To do this right-click on the catalog you just created and select Properties. On the tracking tab, you'll need to make sure that the "WWW Server:" field is set to the website that your application will be running from. This ensures that the html paths work as they should when you get to building the front-end for the search. If you want to display a short bit of each article along with your search results, then go to the Generation tab, uncheck "inherit above settings from service, then check “generate abstracts” and set the number of characters you wish to have displayed in each abstract.



Generally index will include one folder of documents or an entire website or group of websites. It's up to us to determine the breadth of the index. However, since Index Services does not crawl links like a spider, it will only catalog file system objects. Thus, the results from this search will include static files such as HTML pages, Word documents, but not any dynamically generated pages. Changes made to these static documents will be picked up by Indexing Services and will very quickly be reflected in your search results.


Searching the Index

Once the index has been created, the next step is to build a search page that allows the website visitor to search through the index. To do this, we have to create a TextBox Web control for the end user to enter search terms, and a Button Web control to initiate the search, and a Repeater control to display the results.

Add the following code in the .aspx page:

more :

http://www.developeriq.com/articles/2007/aug/06/searching-your-website-microsoft-index-service-usi/


Save the project and run.


The fields returned from querying the index include the following information.

tags in an HTML document or the text in the title field of a word document.The title of document, which is the text between the
Filename: The physical name of the file that the result was returned from.
Vpath: The virtual path of the file where the result was returned from. This is the field you use to specify an HTML link to the file.
Rank: The relevance of the returned result.
Characterization: The abstract for the document, usually the first 320 characters.

Finally we have learnd how to use the Index server to build our Search. For any other queries you can reach me on srinivasks_08@yahoo.co.in

Friday, August 3, 2007

SQL SERVER - 2008 - July CTP Released

SQL SERVER - 2008 - July CTP Released

SQL Server 2008 July Community Technology Preview has been released. With SQL Server 2008 July CTP release, customers can immediately utilize new capabilities that support their mission-critical platform and enable pervasive insight across the enterprise. SQL Server 2008 lays the groundwork for innovative policy-based management that enables administrators to reduce their time spent on maintenance tasks. SQL Server 2008 provides enhancements in the SQL Server BI platform by enabling customers to provide up-to-date information with Change Data Capture and MERGE features, and develop highly scalable analysis services cubes with new development environments. (Reference : Microsoft Connect)

Download SQL Server 2008 CTP from here.

Read SQL Server 2008 Improvement Pillars here.

Playing around w/PopFly and Facebook

This past weekend, I got a chance to find out first-hand the joys of social networking. I did finally take the plunge and signed myself up for a Facebook account. If not for anything else other than to understand how my daughter could spend so much time on Facebook.

It was fun and I didn't realize I had so many friends on Facebook already that my wife had to remind me gently to spend time away from the computer.

I also used this opportunity to see my daughter use PopFly to build some mash-ups quickly and embed them in her Facebook page. It is always fun to see people use our products and technologies and see somebody close to me use PopFly to express their creativity made it all the more exciting.

Here is a quick video capture of the kinds of things that she was able to do.

Expression tools update to target Silverlight 1.0 RC

Our Expression Studio team released Expression Blend 2 August Preview and Media Encoder Preview update earlier today. These updates do enable Expression Blend 2 and Expression Media Encoder to work with the latest Silverlight 1.0 RC bits.

You can get Blend 2 preview from either the Expression site or the Microsoft download center.

You can get the Media Encoder preview from here.

It is nice to see the Expression team deliver updates of their tools along with Silverlight 1.0 RC to enable good tooling support that enables you to build Silverlight based applications and experiences.

Sunday, July 29, 2007

Next gen SQL Server/Visual Studio both due for release in 2008

Next gen SQL Server/Visual Studio both due for release in 2008


New versions of SQL Server database and Visual Studio development tool will both ship in 2008
Microsoft has confirmed that the next versions of its SQL Server database and Visual Studio development tool will both ship in 2008, having announced last week that Windows Server ‘Longhorn’ would be delayed to 2008.

Microsoft ships 60 million Vista units

Microsoft ships 60 million Vista units


Total Windows installations expected to pass the one billion mark within the next 12 months

Madeline Bennett, IT Week, 27 Jul 2007


Microsoft delays Windows Server 2008

Microsoft delays Windows Server 2008


Server OS joins the Microsoft parade of delays
Microsoft will not ship its Windows Server 2008 operating system until February, breaking with the previous scheduled release date of "late 2007".

Friday, July 27, 2007

A Chat with ASP.NET and Ajax

A Chat with ASP.NET and Ajax

zip-attachment Attachment

Introduction

This article describes how to implement a web-chat with ASP.NET and Ajax. In the first part I introduce the technologies I used for the application. Then I explain the concept of a chat and in the last part I present the main implementations.The goal of this article is to show the interested reader how to develop a chat without browser-plugins or java-applets, just pure HTML and javascript.

Which technology is used?

A web-chat is an application for which dynamically generated HTML is needed and client-server interaction. Therefore ASP.NET 2.0 has been used and for the client-server-intercation without postbacks of course Ajax. We could use Ajax.NET but to keep it simple we decided to use the Ajax-implementation from Mike Schwartz called AjaxPro.

To do all serverside calls from javascript with AjaxPro you need to do the following:

1. Add a reference to the Assembly AjaxPro.dll which you can download here.
2. Add a class to your project.
3. Add a method to that class you want to call by script and mark it with the Attribute AjaxMethod
4. Register the class in the Page_Load-handler of your aspx-page from which you want to use it. With

AjaxPro.Utility.RegisterTypeForAjax(typeof(MyAjaxClass));

That's all. Other details will be explained in the implemenation-part of the article.

The design of a Chat?

There are different kind of chats. In this example I designed a chat in which users can login with their username and password. Then they can enter the chat and send messages. The messages are visible for all other chat-users. It is a public chat, where all logged in chatters can communicate together.


Figure 1

The Session holds a CurrentChatter, a user that has just logged in. The chatter enters the chat (1) by navigating to the chat-page (Chat.aspx). After a chatter has entered, he has the possibility to send messages by typing text to a TextBox and pressing the enter-key. Then the chat-message is sent to a ChatMessageQueue (CMQ) which in our example is stored in the Application (2). Okay, now the message lies in the CMQ on the server. We have to get it from there, so that every client can see it. Therefore we have a javascript-timer running, that gets all new messages from the CMQ and displays it in an HTML-DIV for example (3).
Sounds simple, doesn't it? Here is what we need to do, to implement points 1 to 3.

(1) AddChatter (store chat-user)
Save the curent user after successful login to the Session.

(2) AddToMsgQueue
When sending a chat-message you need to store this in the CMQ. You will have to invoke this action from a javascript function. The scriptcode calls a serverside method via Ajax that has the ability to access the ASP.NET-Application.

(3) GetMsgsFromQueue
Here we need to check in a javascript-timer every n seconds, if there are new chat-messages for the client to display. So we poll the CMQ for new messages by an Ajax-method. If we have new messages, theses are transformed to a string that can be displayed as a list in a chatwindow.

The implementation

So far the theory, now the concrete coding. Here are the datatypes we need:


Figure 2

Chatter
This class has an Id to identify a chatter internally and a name for the display. The LastMsgKey is the key of the last message a chatter received. When the timer polls for new messages, this key is used to find out, if there are messages in the CMQ after that message. The messages are stored in a list in the Application. If there are messages in the list for the chatter after his LastMsgKey, these messages have to be fetched.

ChatMsg
A chat-message has a Key (Guid), the name of the chatter who sent this message and the message itself as string.

ChatMgr
The ChatMgr handles the list of all logged in chatters and the CMQ. You can add messages to the CMQ and get them back from it. It also has methods to get a list of all available chatters as Html. The code could be optimized here: The display-logic for chatters and chat-messages could be placed to another class.

The HTML-components are located on the WebForm Chat.aspx. We have

divChatBox: A DIV for all chatmessages.
divChatters: A DIV for all logged in chatters
txtMessage: A TextArea for the text that a chatter can type and send.

When the page loads, all logged in chatters and the available messages are loaded and displayed in the corresponding HTML-elements. Here is the javascript-code which is called cause we add the calls to it in the onload-handler of the Chat.aspx-page:

zip-attachment Attachment