With Internet Explorer 7 Beta 1 set to debut next month, Microsoft has quietly closed the door on Windows 2000 users planning to adopt the new Web browser. IE7 will require Windows XP Service Pack 2 due to internal security changes that rely on Microsoft's latest operating system release.


The decision to update Internet Explorer before Longhorn arrives in late 2006 was announced by Bill Gates at the RSA Conference in February. Although Microsoft had said it was focusing on Windows XP SP2 only, the company did leave open the possibility of IE7 supporting Windows 2000.


We're actively listening to our major Windows 2000 customers about what they want and comparing that to the engineering and logistical complexity of that work," IE team head Dean Hachamovitch wrote in February.



But now, Microsoft says the task is too complex due to security features not available in the older operating system. Company officials also noted that Windows 2000 is moving into the "Extended" support phase of Microsoft's product lifecycle as of June 30, 2005.


"It should be no surprise that we do not plan on releasing IE7 for Windows 2000," IE program manager Chris Wilson wrote on the Internet Explorer Web log.


"One reason is where we are in the Windows 2000 lifecycle. Another is that some of the security work in IE7 relies on operating system functionality in XPSP2 that is non-trivial to port back to Windows 2000."


The decision brought mixed reactions, with some users agreeing that Windows 2000 customers should be making the upgrade to Windows XP or Server 2003. Others, however, noted that large numbers of users remain on Windows 2000, and developers would be forced to continue working around quirks found in IE6.


 
Categories: Web Development

ASP.NET 2.0 introduces the ability to have an ASPX page postback to a different ASPX page with cross page postbacks. This was done all the time in ASP but wasn't supported in ASP.NET 1.x. This wasn't directly supported because on the server you need the same page to be recreated upon postback so the same controls could be repopulated with the post data. Since the model is to work at a higher level with server side controls and their properties, posting back to a different page would force you to access Request.Form to fetch the data a user had entered, which is a lower level than the control model wants.


So, in v2.0 they came up with a way to support cross page postbacks. This is enabled by a button on the first page setting PostBackUrl property to the page that will handle the postback. Once in the second page you can access the controls from the previous page by accessing the Page.PreviousPage property. Here's a sample that's like most of the documentation I've seen:


// Page1.aspx
<form id="form1" runat="server">
    <asp:TextBox runat="server" ID="_tb1"></asp:TextBox>
    +
    <asp:TextBox runat="server" ID="_tb2"></asp:TextBox>
    <asp:Button runat="server" ID="_button"
                PostBackUrl="~/Page2.aspx" Text=" = " />
</form>

// Page2.aspx
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    TextBox tb1 = (TextBox)PreviousPage.FindControl("_tb1");
    TextBox tb2 = (TextBox)PreviousPage.FindControl("_tb2");
    int sum = Int32.Parse(tb1.Text) + Int32.Parse(tb2.Text);
    _result.Text = sum.ToString();
}
</script>
<form id="form1" runat="server">
    Answer is: <asp:Label runat="server" ID="_result"></asp:Label>
</form>

I find this to be entirely too tedious primarily because this approach still loses out of the declarative server side object model. The second page has to re-declare the same controls as local variables to access the properties. I don't think it will be how people write their second page to handle the postback. Instead the more useful approach will be to use the <%@ PreviousPageType %> directive in the second page:


// Page1.aspx
<script runat="server">
public int Sum
{
    get
    {
        return Int32.Parse(_tb1.Text) + Int32.Parse(_tb2.Text);
    }
}
</script>

<form id="form1" runat="server">
    <asp:TextBox runat="server" ID="_tb1"></asp:TextBox>
    +
    <asp:TextBox runat="server" ID="_tb2"></asp:TextBox>
    <asp:Button runat="server" ID="_button"
                PostBackUrl="~/Page2.aspx" Text=" = " />
</form>

// Page2.aspx
<%@ PreviousPageType VirtualPath="~/Page1.aspx" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    _result.Text = PreviousPage.Sum.ToString();
}
</script>
<form id="form1" runat="server">
    Answer is: <asp:Label runat="server" ID="_result"></asp:Label>
</form>

The first page utilizes the posted data via the declarative controls and it provides the necessary information to the second page a public property. Now this is much better since we now get to reuse the declarative controls. I really think this will be the preferred style of using cross page postbacks in ASP.NET 2.0.


One very interesting thing I've noticed about cross page postbacks is the life cycle of the first page when posting back to the second. The first time the second page accesses Page.PreviousPage ASP.NET needs to make a page object available. So it, in essence, creates the Page.PreviousPage object and calls ProcessChildRequest , which is similar to ProcessRequest except it stops processing prior to PreRender and a fake Response object is created so that no Write s are emitted. This has some interesting side effects, one of which is that all of the server side events of the first page fire. This includes Page_Init , Page_Load and any control events like Button.Click events (if the Button has an OnClick event declared). This blew me away and it's certainly something to keep in mind when using cross page postbacks. One way to detect if your page is being accessed as a PreviousPage is to check Page.IsCrossPagePostBack .


One last thing to note about cross page postbacks is that using tracing is a PITA, since the PreviousPage's Trace messages end up mixed with the current page's Trace messages.


 
Categories: Asp.Net/Web Services

Building an application can be more than pressing F5. Much more. With an increasing number of quality packages being released, developers for the .NET platform now have options to create a very sophisticated build process. This article describes a sample build environment and shows how a number of tools can work together to make reliable, predictable, and value added builds.

The goals of the build system are outlined below.

  • Monitor source control for changes
  • Get latest source code from source control
  • Build the application in a versioned directory
  • Run unit tests over the new assemblies
  • Validate coding standards on the new assemblies
  • Create documentation based on the latest code
  • Publish the results to the Web and via e-mail

As you can see, the build process will automate many tasks.

First you will start with NAnt and create a sample build. Then you will expand the NAnt build file to run some other tasks as a sample of what else can be done. The steps are listed below.

  • Setup the build environment
  • Build a "program" solution with Visual Studio .NET
  • Create first NAnt build file and build
  • Build a "test" project with Visual Studio .NET
  • Add NUnit tests to build
  • Validate coding standards during build with FxCop
  • Create API Documentation during build with NDoc
  • Add the solution to VSS source control
  • Add SCC control to the build file
  • Add versioning
  • Use CruiseControl.NET to monitor and manage the build process
    • Trigger a build once something has changed
    • Report back to build master outcome via email and Web reporting

This article is not an in-depth introduction to any of the concepts or tools used. This article should serve as a technical example of how some of the available tools can be used together. This is also just an example. All of the tools used here have many options that will not even be touch upon. You are encouraged to look deep into the help for each of these products and become creative in your own build process.

Overview

The main purpose of a build process is to build an application. A build process should collect all of the pieces of an application and create a deployable package for this specific version. By making this a process of its own, you add both reliability and predictability.

Beyond a predictable build, a number of tools have been introduced that allow for other automated tasks to be run. In a team development environment, the build process would typically bring together code from a number of developers. That makes build time the ideal place to run tasks such as unit tests, and documentation creation. Having these tasks automated in the build can increase the quality of your code and offload some important tasks from the developers.

In addition to adding value to builds, you also have the facility to track and report on the builds. When configured to trigger on a check into source control, your development team can receive unit test results via e-mail within minutes of any given change. This allows developers to react quickly to changes while they are still thinking about the change.

The reporting also includes the results of a check against the coding standards. This allows code reviews to focus on code instead of standards.

Below is a list of the packages that will be used, a brief description of each package and how it will be utilized.

Nant (http://nant.sourceforge.net/)
NAnt is the platform that will be used to create the actual build process. NAnt is an open source package modeled after Ant for Java. NAnt will be responsible for the actual building, as well as triggering any other tasks that will be run throughout the build process.

NAntContrib (http://nantcontrib.sourceforge.net/)
NAntContrib is a collection of add-on tasks for NAnt. NAntContrib is also an open source package. NAntContrib adds tasks for vss, the gac, ngen, and many nice tasks. NAntContrib will be used to communicate with VSS.

NUnit (http://www.nunit.org/)
NUnit is an open source unit testing framework for .NET and is modeled after JUnit for Java. NUnit allows developers to create test fixtures and write unit tests for their applications. NUnit includes a GUI and a commandline tool, as well as a set of attributes you add to test assemblies. NUnit will be used to unit test the class library in this article.

NDoc (http://ndoc.sourceforge.net/wiki)
NDoc is an open source package that creates API documentation from XML documentation files from Visual Studio .NET or packages like VBCommentor. NDoc allows developers many options when creating documentation and also comes in GUI and command line flavors. NDoc will be used to create HTML and chm documentation of the application.

CruiseControl.NET (http://ccnet.thoughtworks.com)
CruiseControl.NET ("CCNet") is an open source package used for Continuous Integration and build process reporting. Continuous Integration is a practice of creating a new build once updated files have become available, thus creating a continuous build process. Assuming tasks like unit testing are included in the build process, this allows teams to identify and fix bugs very quickly, provided there is good coverage in the unit tests of course. CCNet will be used to trigger and report on the build process.

FxCop (http://www.gotdotnet.com/team/fxcop/)
FxCop is a package distributed by Microsoft to enforce coding standards. FxCop automates the process of analyzing code for coding standards. This allows peer review sessions to really focus on code and not waste time on things like correcting casing or naming violations. FxCop will be used to analyze the coding standards in the application.

Visual Source Safe (http://www.microsoft.com/vstudio)
Visual Source Safe ("vss") is a source control package distributed by Microsoft. VSS is commonly used for source control when using Visual Studio .NET. It's used here because of its wide availability and adoption, but the concepts in this article would translate to most other source control systems by changing a couple elements in the NAnt file.

Setup Build Environment

[Easy Way Unzip attached BuildSolution.zip into c:\projects Unzip attached devtools.zip into c:\devtools] So now it's time to dive right into action. The first thing that needs to be done is to install these tools. Although not necessary, it's nice to have these tools in one place, i.e. c:\DevTools.

Provided with this article is a devtools.zip of the various packages that should be installed here and configured appropriately. You can extract this zip file into c:\devtools to review the samples. The steps are outlined below.

Install/Extract Packages

  1. Download and extract NAnt to c:\devtools
  2. Download and extract NantContrib to c:\devtools
  3. Download and install nunit to c:\devtools
  4. Download and install NDoc to c:\devtools
  5. Download and install FxCop to c:\devtools
  6. Download and extract CCNet to c:\devtools

Add NAntContrib to Nant

  1. Copy all of the files from c:\devtools\nantcontrib\bin into c:\devtools\nant\bin

[Read More]


 
Categories: Web Development

May 26, 2005
@ 03:56 PM
Ajax is an awesome technology that is driving a new generation of web apps, from maps.google.com to colr.org to backpackit.com. But Ajax is also a dangerous technology for web developers, its power introduces a huge amount of UI problems as well as server side state problems and server load problems.

I've compiled a list of the many mistakes developers using Ajax often make. Javascript itself is a dangerous UI technology, but I've tried to keep the list to problems particular to Ajax development:


Mistakes:



  1. Not giving immediate visual cues for clicking widgets.
    If something I'm clicking on is triggering Ajax actions, you have to give me a visual cue that something is going on. An example of this is GMail loading button that is in the top right. Whenever I do something in GMail, a little red box in the top right indicates that the page is loading, to make up for the fact that Ajax doesn't trigger the normal web UI for new page loading.

  2. Breaking the back button
    The back button is a great feature of standard web site user interfaces. Unfortunately, the back button doesn't mesh very well with Javascript. Keeping back button functionality is a major reason not to go with a pure Javascript web app.

  3. Changing state with links (GET requests)
    As I've referenced in a previous posting, Ajax applications introduce lots of problems for users who assume GET operations don't change state. Not only do state changing links cause problems for robots, users who are accustomed to having links drive navigation can become confused when links are used to drive application state changes.

  4. Blinking and changing parts of the page unexpectedly
    The first A in Ajax stands for asynchronous. The problem with asynchronous messages is that they can be quite confusing when they are pop in unexpectedly. Asynchronous page changes should only ever occur in narrowly defined places and should be used judiciously, flashing and blinking in messages in areas I don't want to concentrate on harkens back to days of the html blink tag.

  5. Not using links I can pass to friends or bookmark
    Another great feature of websites is that I can pass URLs to other people and they can see the same thing that I'm seeing. I can also bookmark an index into my site navigation and come back to it later. Javascript, and thus Ajax applications, can cause huge problems for this model of use. Since the Javascript is dynamically generating the page instead of the server, the URL is cut out of the loop and can no longer be used as an index into navigation. This is a very unfortunate feature to lose, many Ajax webapps thoughtfully include specially constructed permalinks for this exact reason.

  6. Too much code makes the browser slow
    Ajax introduces a way to make much more interesting javascript applications, unfortunately interesting often means more code running. More code running means more work for the browser, which means that for some javascript intensive websites, especially poorly coded ones, you need to have a powerful CPU to keep the functionality zippy. The CPU problem has actually been a limit on javascript functionality in the past, and just because computers have gotten faster doesn't mean the problem has disappeared.

  7. Inventing new UI conventions
    A major mistake that is easy to make with Ajax is: 'click on this non obvious thing to drive this other non obvious result'. Sure, users who use an application for a while may learn that if you click and hold down the mouse on this div that you can then drag it and permanently move it to this other place, but since that's not in the common user experience, you increase the time and difficulty of learning your application, which is a major negative for any application.

  8. Not cascading local changes to other parts of the page
    Since Ajax/Javascript gives you such specific control over page content, it's easy to get too focused on a single area of content and miss the overall integrated picture. An example of this is the Backpackit title. If you change a Backpackit page title, they immediately replace the title, they even remember to replace the title on the right, but they don't replace the head title tag with the new page title. With Ajax you have to think about the whole picture even with localized changes.

  9. Asynchronously performing batch operations
    Sure with Ajax you can make edits to a lot of form fields happen immediately, but that can cause a lot of problems. For example if I check off a lot of check boxes that are each sent asynchronously to the server, I lose my ability to keep track of the overall state of checkbox changes and the flood of checkbox change indications will be annoying and disconcerting.

  10. Scrolling the page and making me lose my place
    Another problem with popping text into a running page is that it can effect the page scroll. I may be happily reading an article or paging through a long list, and an asynchronous javascript request will decide to cut out a paragraph way above where I'm reading, cutting my reading flow off. This is obviously annoying and it wastes my time trying to figure out my place.

In constructing this list of mistakes I've been using Backpackit. You can check out my list of AJAX mistakes on backpackit, and if you want to help add to the list, reply in the forums and I'll add you to the list of users who can modify the list.


[Via SourceLabs]


 
Categories: Web Development

Many web applications use DataSet to bind data with controls such as DataGrid. DataSet allows you to easily sort the data using objects such as DataView. However, in pure OO design instead of sending DataSet to the presentation layer you may want to send an object array. In this case how will you allow users to sort the data? That is what this article explains. Keep reading.

IComparable interface

Sorting is nothing but ordering the list of items in a perticular way. In order to sort any list the underlying system must be able to compare various elements of the list so that they can be rearranged based on the result of comparison. The System namespace contains an interface called IComparable that can be used to provide such custom comparison mechanism for your classes. The IComparable interface consists of a single method called CompareTo that accepts the object to compare with current instance. The method should return 0 if both the instances are equal, less than 0 if current instance is less than supplied instance and greater than 0 if current instance is greater than the supplied one.
[C#]
int CompareTo(object obj);

[Visual Basic]
Function CompareTo(ByVal obj As Object) As Integer


How does this solves our problem?

DataGrid web control can be bound with variety of data sources such as DataSet, DataTable and ArrayList. If we want to bind the grid with an a list of objects ArrayList can be good choice for this binding. ArrayList class has a method called Sort() that checks whether each element has implemented IComparable interface. If it does implements then the CompareTo() method implemented in the class will be used to sort the various elements. That means in order to implement custom sorting we need to:

  • Create a class (say Employee) that implements IComparable
  • Create an ArrayList
  • Add instances of Employee class to the ArrayList
  • Bind the ArrayList to the DataGrid
  • Handle the SortCommand event of the DataGrid

[Read More]


 
Categories: Web Development

With FogBugz winning Asp.netPro's Reader's Choice Award for Best Project Managment/Defect Tracking Tool I thought I would go over the features and benefits of this popular tool.


FogBUGZ keeps track of cases.


There are three kinds of cases:



  1. Features that you want to add to your product,
  2. Bugs or other possible flaws in your product, and
  3. Inquiries, when someone has a question about how something should work, a suggestion for improvement, or an email from a customer.

New cases can be entered using the FogBUGZ web interface. You can also send email into FogBUGZ by setting up an email account for that purpose: incoming messages instantly become cases. Cases can come from anyone: someone on your team, a manager or a tester; they can also come from your customers, who email you or fill out a form on your web site. You can even modify your own software to create a case automatically whenever it crashes or encounters an unexpected situation.


Every case is always assigned to exactly one person until it is closed. That person is responsible for it until they assign it to someone else. Here's the lifecycle of a simple bug:



  • A tester finds a bug, enters it, and assigns it to the development manager.
  • The development manager assigns it to the programmer who is responsible for that area of the code.
  • The programmer fixes it, and assigns it back to the tester to check that it's really fixed.
  • The tester confirms that it's fixed and closes the bug.

FogBUGZ can be used for customer support, to manage email sent in to global accounts like customer-service@example.com. Each mail message can be assigned and tracked. Anyone can reply to the message right in FogBUGZ. If the customer responds to that response, the entire thread is kept together in one FogBUGZ case so that everyone can always see the full history and provide seamless customer service. Here's the lifecycle of a typical customer feature request:



  • Customer has problem, emails feature request alias. Case is automatically imported to FogBUGZ and assigned to the product manager.
  • Product manager designs a new feature that solves the customer's problem, and assigns it to development lead to implement.
  • The development lead assigns it to a programmer to implement.
  • The programmer implements it and assigns it to tester to test.
  • When it is tested and working, tester assigns it back to the product manager who emails the customer announcing the new feature.

In either case an entire record is kept in one place.


FogBUGZ has completely flexible workflow. A programmer might assign a reported bug back to the tester to clarify something before the bug can be reproduced. Or a programmer might discover that a bug is in another programmer's code and assign it to the second programmer to fix. Or the programmer may think that the behavior reported is correct, and assign the case to the product manager to confirm. FogBUGZ can handle any workflow scenario automatically: you don't need to define rigid workflow diagrams which never seem to correspond to reality and you never need to go "off line," resorting to side-discussions on email which are not tracked and lost to posterity.


Whenever a case is assigned to somone, they get an email. Anyone can subscribe to any case, and receive email notifications when it changes. And because you can create cases with email, you don't have to persuade your pointy-hair boss or your best customers to use FogBUGZ: let them email their bug reports and suggestions and receive email replies, without losing any of the benefits of a real database.



FogBUGZ users create custom filters which show them all the cases that match a certain set of rules. Anyone can easily create and save filters using a simple form.
For example:



  • show me all the cases assigned to me
  • show me all the cases that need to be fixed for version x
  • show me all the cases that were opened today
  • show me all the cases in project x that I opened which have been resolved

You can attach screenshots, sample files, or just about any kind of document to a case in FogBUGZ. FogBUGZ supports Unicode so bugs can be entered in any language.


Cases can, optionally, have time estimates. This is especially useful for planning new features. You can use FogBUGZ to plan the next release of your software by entering all the features under consideration, setting priorities on them, and entering time estimates. Then you can assign features to release dates or milestones until you've got a complete schedule.


FogBUGZ can be integrated with CVS or Perforce source code managers. You can maintain bidirectional links between checkins and bugs.
FogBUGZ can be accessed using any web browser. It runs on a Windows NT/2000/.Net based server, on your own intranet for speed and security. Setting up FogBUGZ is easy with a wizard-based installation program that does everything you need to get up and running in a matter of minutes and comes with a free 90 day support contract should anything goes wrong.


For more information or to take an online tour visit Fog Creek Software at http://www.fogcreek.com/FogBUGZ/


 
Categories: Web Development

Introduction

Windows XP Media Center Edition 2005 is an exciting platform for enjoying all of your media from the comfort of your sofa. However, there are many times that you might wish to extend Media Center to perform functionality that it does not have "out of the box." Microsoft has created a software development kit that allows you to write your own software that runs in Media Center. In a previous article, I gave you a broad-brush introduction to creating an HTML application that runs in the 10-foot experience of Windows Media Center. This article will introduce you to the creation of .NET add-ins that are hosted within Media Center. The .NET add-ins allow you to write functional code that can interact with Media Center using your favorite .NET language.

There are two types of .NET add-ins for Media Center:



  • Background--runs at Media Center startup and remains running in the background
  • On-Demand--executed in response to some action from the user
Getting Started

One of the first things you need to know about creating add-ins for Windows XP Media Center Addition 2005 is that they must be written and compiled in .NET 1.0. This is due to the fact that the add-in is hosted by the Media Center process, and that's the only version that Microsoft supports at the present time. This causes many developers a little discomfort, because they are accustomed to working with Visual Studio 2003, which supports only .NET 1.1. However, you can continue to use your existing editor of choice to write the code and then use the .NET compiler on the Media Center computer to compile it. That is the approach that I'll take in this article so that you can get a quick feel for developing an add-in for Media Center without having to install an older version of Visual Studio.


Before we get started, make sure you've downloaded and installed the Media Center Software Developer Kit (SDK).

Required Interfaces

In order to allow your class to interact with Media Center, you need to be familiar with two interfaces:



  • IAddInModule--Media Center uses this interface to trigger your add-in to initialize and uninitialize. It has two methods:

    • Initialize--called when the add-in is first loaded
    • Uninitialize--called when Media Center wants to shut down your add-in

  • IAddInEntryPoint--This is the main interface that Media Center uses when it launches your add-in. All add-ins must implement this interface. It has a single method:

    • Launch--Called after your add-in has been initialized, this is where your primary execution logic should go. Think of it as the old reliable Sub Main in Visual Basic.

[Read More]


 
Categories: Asp.Net/Web Services

I don’t think there is a default answer to which caching technique you should use for your custom web parts. However it is important to understand the differences between using the ASP .Net cache object, the Web Part cache memory and database stores and the Caching Application Block found in the Enterprise Library.

There is plenty of documentation on the asp .net cache object so I don’t want to go into too much detail. In summary:



  1. Allows you store objects in memory
  2. When the web application is recycled the entire cache is lost
  3. When items are added they can have an expiration policy based on time (a sliding window if needed) and/or dependencies on other objects e.g. if a file changes on disk, then the cache item becomes invalid
  4. Items are removed from cache when they expire or if memory pressures on the machine mean that items must be purged from the cache. ASP .Net will then remove items based on their priority, even if they haven’t expired.
  5. A web part is really just an ASP .Net server control and hence there is no reason why you cannot implement caching in the control like you would any other server control. Either caching objects used by the control or the html rendered by the control. There is nothing web part specific in this scenario. One advantage of using this model is that multiple instances of your control can share the same cache, for example on 200 web part pages you have the same web part with the same data irrespective of the user viewing it. Here you would like to cache the data only once, not 200 times or even more if you do it on a per user basis. Also, you are using the ASP .Net cache which is tried, tested and …and works!


If you choose to use the built in caching functionality of the web part framework you have the option of storing the cache in memory or in SQL Server. This is designed to be configurable, i.e. changing an option in web.config will change the store for **ALL** web parts for that web application. In some way you could say that this is something that an administrator can change at any stage, however the reality is that this is not the case.


[Read More]


 
Categories: Web Development

In response to criticisms over the high cost of VSTS for small organizations, Microsoft is changing its pricing and some of the packaging of Visual Studio Team System and the MSDN Subscriptions. Changes include a user limited version of Team Foundation Server to ship with any Team Edition and a lower costs for renewals of subscriptions.

The restricted version of Team Foundation Server will include a license for only five developers. It is unclear if you will need to upgrade to the full version to add individual licenses.

Pricing changes are:



  • Universal subscribers that want all of the client functionality of Team System will be able to upgrade to Team Suite by paying just the incremental software assurance or renewal price for the duration of their agreement. In retail, this amounts to around $2300 and for most customers this represents a 75% or more discount on the full price of Team Suite. Volume customers will, of course, pay less. Renewals for volume license customers continue at the promotional price for as long as you are an active volume license subscriber.
  • Universal subscribers who want Team Edition for Software Architects, Team Edition for Software Developers, or Team Edition for Software Testers will continue to be able to upgrade at no additional cost. Each of these “role Editions” includes the MSDN Premium Subscription which will come with the limited TFS.
  • Universal subscribers who want the 2005 equivalent of MSDN Universal can simply choose Visual Studio 2005 Professional Edition with MSDN Premium Subscription. Universal subscribers who choose this option at renewal will get the functional equivalent of MSDN Universal for about 15% less than what they paid today. This version will not have any of the role based features nor will it include the limited TFS.

[Via Rick LaPlante's Blog]


 
Categories: Web Development


The Code Room returns with Rory Blythe as executive producer -- former co-host of Dot Net Rocks and Microsoft Evangelist.   Four experts on Windows XP Embedded and the Compact Framework are challenged with building a fully functioning kiosk that implements Bluetooth, SQL Server Mobile, and Windows XP Embedded technologies.


The Code Room is a 1/2 hour pilot TV show that exposes technologists to the latest tools and technologies for tackling real-world software development issues. This professionally produced & directed TV show highlights the social, teaming, and technical challenges faced when attempting to complete a software development project.


The Code Room is developed around the free MSDN Developer Events held almost 500 times throughout the year. Each episode focuses on a topic presented at the event. In addition, three attendees are selected from the audience to write functioning code using the principles and concepts discussed in the presentation. By exposing the viewers to the detailed information from the event presentation and seeing the real world application of that information that they can actually use themselves, a viewer takes away a deep understanding of the topic.


[Via The Server Side | Video]


 
Categories: Web Development

May 15, 2005
@ 09:35 PM

Nikhil Kothari has developed a browser extension for Internet Explorer that shows debug/trace information useful for ASP.Net developers.  The Plugin also displays the decrypted content of the application's viewstate.  For security purposes the app only runs for sites being developed on the local machine -- localhost.  You can find out more about the app and download it from his blog at http://www.nikhilk.net/Entry.aspx?id=63.


[Via Andrew Connell]


 


 
Categories: Asp.Net/Web Services

Microsoft and Sun Microsystems said they were nearly ready to release products that help bridge the gap between their operating systems, a result of their legal settlement more than a year ago.

Microsoft and Sun in April 2004 agreed to settle a years-long battle, with Microsoft paying $2 billion to Sun to resolve the dispute in a 10-year technical collaboration agreement.

The two companies announced new plans that would allow a Web-based single sign-on between systems that use both Microsoft and Sun , potentially eliminating the need for multiple user names and passwords for different computer systems and software programmes.

”These are huge messages to our employees and to our customers that we’re working together,” Sun Chief Executive Officer Scott McNealy said in a joint news conference with Microsoft CEO Steve Ballmer.

Microsoft and Sun will ultimately submit the new specifications to a standards organisation for finalisation and for ratification as industry standards. Ballmer and McNealy also said the two are working together on systems management software that will bridge differencs between operating systems and management software.

As part of that effort, the firms are collaborating on the development of WS-Management, a Web services specification co-authored by Microsoft, Intel and other companies that defines a single protocol to meet systems management requirements spanning different types of hardware, operating systems and applications.

“We’ve been hard at work, the two companies, for a year,” said Ballmer. “We’re poised to leave the computer lab now and enter the marketplace.”


[Via The Economic Times]


 
Categories: Asp.Net/Web Services

WSE uses security tokens internally to represent security claims from Web service methods. The security tokens let WSE authenticate the user, validate the password, and check whether the user has sufficient rights to execute the desired Web service method. The Web services security implementation includes authentication as well as authorization. This article discusses how to use custom authentication methods in WSE using an example that authenticates incoming SOAP messages and then authorizes the consumption of a particular service using AzMan, (Windows' Authorization Manager) with custom principals. As an example, the article uses a telecom dealer application, which lets prospective telecommunications dealers activate postpaid customers and manage their accounts.

WSE Authentication

When you configure WSE 2.0 in your Web service project, clients of that Web service will create two Web service proxy classes named according to your project, such as MyWebService1 and MyWebService1WSE. The second proxy class, derived from the WSE Microsoft.Web.Services2.WebServicesClientProtocol class, contains support for adding WSE Security tokens used to authenticate clients. Client programs must add a security token—for example, a Username token—to the Tokens collection of the RequestSoapContext of the Web service instance implemented with WSE. The Username token isn't the only possible security token; there are other security tokens—and you can also create a custom security token by creating a custom SecurityTokenManager class. But a security token of some type is required.


[More]


 
Categories: Web Development

Microsoft on Friday posted Service Pack 4 for SQL Server 2000, the first service pack update for the company's flagship database server since early 2003.

The major new feature of the service pack is extending SQL Server support to the Windows x64 editions, which run on x86 processors with 64-bit extensions (AMD64 and Intel EM64T). An existing edition of SQL Server 2000 already supported the Intel Itanium architecture for 64-bit computing.


Microsoft released the x64 editions of Windows Server 2003 and Windows XP Professional in late April. Specifically, SP4 will allow customers to run 32-bit SQL Server applications on x64 systems in Windows on Windows emulation (WOW64).


The cumulative service pack includes new bug fixes for the relational database and the Analysis Services component, along with all fixes included in SP1, SP2 and SP3a. The service pack also enhances performance and serviceability.


Microsoft's last service pack came out around the time the SQL Slammer worm raged. Even though it's been awhile, Microsoft's SQL Server developers haven't been standing still on SQL Server 2000 in advance of SQL Server 2005, expected later this year. Since SP3a, Microsoft updated SQL Server 2000's functionality significantly with SQL Server 2000 Reporting Services at the beginning of 2004. Reporting Services received its own SP2 a few weeks ago.


The SP4 download is available at:
http://www.microsoft.com/sql/downloads/2000/sp4.asp


 
Categories: SQL Server

New version of software provides partners with improved integration of technologies to deliver a more intuitive mobile device experience.


Microsoft Chairman and Chief Software Architect keynoting at Microsoft Mobile & Embedded DevCon 2005, Las Vegas, May 10, 2005LAS VEGAS -- May 10, 2005 -- In a packed hall of developers and industry partners at Microsoft® Mobile & Embedded DevCon 2005, Microsoft Corp.'s annual mobile and embedded developers conference, Bill Gates, chairman and chief software architect of Microsoft, announced the release to manufacturing (RTM) of Windows Mobile (TM) 5.0. This new version of the Windows Mobile software platform delivers on partner requests, including more platform flexibility to customize devices and solutions; productivity enhancements that include updated Microsoft Office software and persistent memory storage for more efficient data management; and a powerful multimedia experience with Windows Media® Player 10 Mobile and support for hard drives.


Just five years ago, the first Windows Mobile-based Pocket PCs shipped from three hardware partners. Today 40 device-makers are shipping innovative Windows Mobile-based products with 68 mobile operators in 48 countries. These hardware and mobile operator partners have contributed to Windows Mobile revenue growth of 31 percent from 2003 to 2004 and phone license sales more than double those of the previous year.


"In the past five years, there's been a profound shift in the kind of data and services people access on their mobile devices -- from multimedia to business applications," Gates said. "Windows Mobile 5.0 enables our industry partners to develop exciting new hardware designs and solutions that will revolutionize how customers use mobile devices."


"Windows Mobile 5.0 is an important evolutionary step for the Windows Mobile platform, which continues to gain traction worldwide," said John Jackson, Yankee Group senior analyst. "Enhancements in the platform give wireless network operators and mobile device vendors the ability to deliver customized, differentiated services and devices, while meeting the market's demand for robust, scalable, segmented offerings."


Customization Options


Enhancements in Windows Mobile 5.0 will provide device-makers and mobile operators with more options to differentiate themselves from competitors and ultimately provide end users with a wider range of converged devices. Partners can take advantage of the following features:



  • New technologies. Increased platform flexibility, the top customization request, enables partners to plug in differentiated technologies such as "push-to-talk" or video calling and conferencing.
  • Network support. Support for higher-bandwidth 3G networks, Wi-Fi for the Smartphone platform and improvements to existing Bluetooth® support enable more flexibility to integrate mobile phone services across a variety of networks.
  • One-handed operation. Across the Windows Mobile platform, soft-key integration, landscape display orientation and QWERTY keyboard support will enable hardware partners to develop compelling devices with improved one-handed keyboard navigation that empowers customers to access their information without a stylus.

Building on the more than 18,000 commercial Windows Mobile-based applications available today, developers can utilize tools available in the Beta 2 of Visual Studio® 2005 and new application programming interfaces (APIs) to quickly and easily develop a variety of rich mobile applications such as location-based services, 3-D gaming and video that bring to life compelling entertainment and productivity scenarios. Further, integration with Microsoft SQL Server (TM) 2005 Community Technology Preview in Windows Mobile 5.0, along with integration with the Beta 2 of Visual Studio 2005, allows businesses to extend critical business information and applications to mobile devices in the field.


Increased Productivity


With its updated and enhanced look, Windows Mobile 5.0 enables industry partners to create devices and solutions that provide mobile information workers with more efficient and secure access to information. These refinements include the following:



  • Persistent memory storage. The most requested productivity feature from partners and customers alike, persistent memory storage retains information even when the device's battery is depleted.
  • Microsoft Office software for Windows Mobile. Users will be able to view and create charts in Excel Mobile, and edit documents with graphics using Word Mobile while maintaining document formatting with files created on a PC. A new PowerPoint® Mobile application has been included for Pocket PC, giving road warriors the ability to view and rehearse presentations.
  • Security. Complementing a number of security features already included in the Windows Mobile platform, such as Bluetooth authorization and end-to-end encryption over a virtual private network, Windows Mobile 5.0 has gone through extensive threat-modeling testing and completed the rigorous Microsoft Trustworthy Computing full security review. The platform is also FIPS-140-2-certified, meaning it meets the stringent U.S. government security requirements for IT products.

Integrated Multimedia


With the more than 25 Windows Mobile content partners, the ability to play multimedia files has long been a hallmark of the platform. Windows Mobile 5.0 offers enhancements that enable industry partners to provide a more powerful and personalized multimedia experience through the following features:



  • Windows Media Player 10 Mobile. Customers can enjoy a larger number of protected digital music, video and recorded television files that can be synchronized easily from a PC or downloaded from many Internet-based services and mobile operators' music stores with Windows Media Player 10 Mobile. The updated player also enables synchronization of users' playlists, album art and song ratings. Partners can plug in additional digital rights management (DRM) technologies to help advance their specific media business models.Pictures and video. A new pictures and video application will add advanced features such as burst mode and timer function previously found only on high-end digital cameras.
  • Extended storage. Additional support for hard drives and Universal Serial Bus (USB) 2.0 will enable people to easily and quickly store large amounts of information -- such as entire digital picture and music libraries -- on a mobile device and synchronize this content with a PC.

[Webcast of MEDC Keynote]


 
Categories: Other

Visual Studio for Applications, or VSA,  provides an excellent means of providing extensibility to your program by allowing script code to modify your program long after the main object model has been designed and compiled. Allowing your programs to host and run script files is an excellent way to allow others to extend your program in ways you may not have foreseen at its induction. Many times, added functionality is required by end users or high demand clients that require new changes to be recompiled into the old system by its creators. This takes time and money, and is often only necessary because modifications require the use of professional build tools, something many users aren’t skilled at using. However, with a solid object model exposed to a scripting interface, anyone capable of writing macros using a text editor and following an SDK can tweak much of the functionality of your program without the major hassles involved with professional build tools.


What is VSA?


VSA replaces the older technology Visual Basic for Applications, or VBA. VSA allows .NET programs to host and compile scripting languages such as VBScript and Jscript. Using VSA, you can create a scripting engine directly inside your .NET programs, and pass your own object instances and assembly references to the engine and script. Using your own custom object model, you can allow the scripts to modify your program after it has been compiled. Anyone with a text editor can follow up and add custom scripts or change existing ones, without having to bother you to make these changes.


[More at Code Project]


 
Categories: Web Development

This is a brief article on getting started with writing unit tests. Rather than getting into coding and the 'how to's, of which there are numerous introductory tutorials, I want to discuss more the zen of unit testing. Hopefully you will find the information here to be of value--specifically, getting the most out of writing unit tests when you haven't ever done it before. I've written a lot of articles on unit testing, but frankly, I don't think they really provide enough guidance for the beginner.


[More]


 
Categories: Asp.Net/Web Services

May 5, 2005
@ 10:55 PM

A common problem that Web Application Developers encounter is how to stop the user from refreshing the page. This is a problem if the previous request to the server was a PostBack, which, for example, inserted the WebForm’s data into a database. This will result into the addition of duplicate rows in the database. But we have constraint that we can’t stop user by refreshing the page, So What to do? Although we can’t stop user from refreshing the page but we can however determine if this event has occurred and then take appropriate action.


This article is result of inspiration from article “Build Your ASP.NET Pages on a Richer Bedrock” in which Dino Esposito outlined a mechanism to detect a page refreshes. But the problem with this method is that it is cumbersome and more complicated than necessary, although the fundamental idea is sound and forms the basis of this solution. Dino’s mechanism uses a counter stored on the page and a session variable to store the previous request’s counter on the server, if the two match then we have a page refresh.


[More at Code Project]


 
Categories: Web Development

Session Summary


Thursday, May 5, 2005: 10:00 AM Pacific time (Greenwich mean time - 8 hours)

This Support WebCast is intended for users who are already familiar with Microsoft SQL Server 2000 Reporting Services. The WebCast will discuss the various software updates and new feature improvements that have been provided as part of the Service Pack 2 release of SQL Server 2000 Reporting Services. There will also be a feedback session intended to help improve the overall user experience of SQL 2000 Reporting Services.

This is a Level200 session that will be presented by Nosheen M. Syed .

Nosheen M. Syed is an acting technical lead in Microsoft Product Support Services (PSS) WebData Support. He holds an MS and an MBA and has more than four years of experience in IT. This includes over two years with Microsoft as a support engineer with the PSS WebData WA team. He has been involved with Microsoft SQL Server Reporting Services from a supportability perspective since the V1.0 Beta initiative.

[Register here]


 
Categories: Web Development

Overview


SP2 includes a variety of improvements to the initial product release. Documentation for this release is provided in the SP2readme_lang.htm, which can be downloaded below or found in the Reporting Services installation directory after Setup is complete.




Note: Service Pack 2 will require a reboot after installation. For more information, see Knowledge Base article 889641.

Key Functional Enhancements



  • SharePoint Web parts enable you to explore and view reports located on a report server by using Microsoft Windows SharePoint Services or SharePoint Portal Server.

  • Reports can now be printed directly from within Internet Explorer. A Microsoft ActiveX control is provided to support a rich client-side printing experience including full page preview.

System Requirements




  • Supported Operating Systems: Windows 2000 Advanced Server, Windows 2000 Server, Windows 2000 Service Pack 2, Windows Server 2003, Windows XP Professional Edition




  • SP2 Setup upgrades all four editions of Reporting Services (Enterprise, Developer, Standard, and Evaluation). It also upgrades all installation configurations (client-only, server-only, and client-server).

  • SP2 can be applied to an existing installation of Reporting Services or an existing installation of Reporting Services with Service Pack 1.

  • SP2 requires 40 MB of free disk space to install.

[Download Here]


 
Categories: Web Development

One of the features of Longhorn that a lot of people are excited about is "Avalon", the code name for the new graphical subsystem that enables not only richer control design and development, but it also relies heavily on a vector-based system instead of the more common pixel-based one. Avalon also introduces a new programming model known as XAML which heralds in a new way of designing application user interfaces.


In this episode of the .NET Show David Ornstein and Pablo Fernicola discuss the purpose and benefits of the new graphical model for Longhorn. Later, Rob Relyea and Nathan Dunlap walk through some source code to show how the use of XAML in writing user interfaces for applications can create a better collaboration between designers and programmers.


[View/Download Video Here]


 
Categories: Web Development

Microsoft has provided a version of the March 2005 Indigo and Avalon Community Technology Previews for the general public.


Indigo is the codename for Microsoft’s unified programming model for building connected systems. It extends the .NET Framework 2.0 with additional APIs for building secure, reliable, transacted Web services that interoperate with non-Microsoft platforms and integrate with existing investments. By combining the functionality of existing Microsoft distributed application technologies (ASMX, .NET Remoting, .NET Enterprise Services, Web Services Enhancements, and System.Messaging), Indigo delivers a single development framework that improves developer productivity and reduces organizations’ time to market.

Avalon is the code name for Microsoft's unified presentation subsystem for Windows. It consists of a display engine and a managed-code framework. Avalon unifies how Windows creates, displays, and manipulates documents, media, and user interface. This enables developers and designers to create visually-stunning, differentiated user experiences that improve customer connection. When delivered, Avalon will become Microsoft's strategic user interface (UI) technology.

This preview also contains the WinFX SDK documentation, samples and tools.



System Requirements




  • Supported Operating Systems: Windows Server 2003, Windows XP




  • Supported Visual Studio tool set: February CTP release of Visual Studio 2005

[Download Available Here]


 
Categories: Web Development

This Support WebCast presents the integration points between Microsoft Project Server 2003 and Microsoft SharePoint Portal Server 2003. The WebCast reviews the integration between Project Server 2003 and SharePoint technologies as they are installed the first time. The session also discusses several extensibility scenarios. These include indexing and searching across all Project Server Web sites and using the Project 2003 Web parts in a portal page.


Tuesday, May 3 2005, 1p ET (GMT-0500) - http://support.microsoft.com/default.aspx?kbid=896711


[Via Andrew Connell's Blog]


 
Categories: Sharepoint

May 1, 2005
@ 04:44 PM

Visual Basic at the movies is a site developed by the msdn team that highlights the features of Visual Basic.Net.  The site is targeted at the would be vb.net newcomer as well as the advanced vb.net developer and contains 101 short videos covering topics from control features to features of ADO.Net, XML, the Visual studio.net development environment and much, much more.  I encourage you to visit the site and take a look at the varied topics covered.  The site's theme is that of a classic movie theater with each topic displayed as a classic film. Take a look and as the site suggests, “grab your popcorn and soda, sit back and enjoy”.


[Vb At the Movies]


 
Categories: Web Development

The Neverfail Group is shipping its Neverfail high-availability solution for end-to-end support of Microsoft SharePoint Portal Server environments.

Neverfail for SharePoint monitors SharePoint Portal Servers, watching for changes in content made by collaborators and other users, and making sure those changes are backed up. Additionally, the product protects all information sharing applications and servers that host SharePoint content, whether it resides in SQL Server, Exchange Public Folders, or on a file system, according to a statement from the Austin, Texas firm.


“If a problem occurs, Neverfail for SharePoint can take a variety of pre-emptive, corrective actions without resorting to a full system failover. In extreme cases, a non-disruptive, seamless failover to your secondary server can occur automatically and transparently to your users,” the company’s statement says.


Based around a “heartbeat” feature that lies at the core of the product, Neverfail continuously replicates changes from the active server to a passive one, which can be located locally or remotely from the active server. In the event that a switchover occurs, when the primary server comes back online, Neverfail automatically resynchronizes the servers and their data.


Upon installation, Neverfail for SharePoint intelligently discovers all application files, registry settings, services and data associated with Microsoft SharePoint Portal Server and collaborative servers. During operation, it monitors all key applications services and performance attributes of the operating system, the server hardware, and all collaborative servers and can provide proactive, pre-emptive problem resolution short of a failover in many cases, the company says.


Neverfail for SharePoint requires Windows Server 2003 with 2 gigabytes of free hard disk space, Microsoft SharePoint Portal Server 2003 Standard or Enterprise editions, and it also requires two network cards per machine.


[Via RedmondMag]


 
Categories: Sharepoint