Archives

Archives / 2006
  • Understanding ASP.NET AJAX Web Service Proxies

    Proxy code plays an important role in sending and receiving messages to and from Web Services.  If you've worked with Web Services before in .NET, Java or other programming frameworks then chances are you used a client-side proxy to call a Web Service.  With .NET, proxies are generated using wsdl.exe or Visual Studio's Add Web Reference menu option.  ASP.NET AJAX proxies aren't created this way, however.  In fact, they're even easier to create compared to C# or VB.NET Web Service proxies. An ASP.NET AJAX Web Service proxy is created by using the Services property of the ScriptManager control:

  • WPF/E Pad

    Microsoft's Mike Harsh just released an updated version of his WPF/E Pad that makes it easy to quickly test out XAML using the WPF/E viewer.  Pretty cool stuff!  Since I'm a big fan of XML I'm really excited about what WPF/E offers.

  • .NET Distributed Application Development

    I'm teaching Microsoft's .NET Distributed Application Development course this week in Phoenix and wanted to get some sample code I put together posted for everyone that is attending (and anyone else that is interested).  The code demonstrates asynchronous Web Services calls, MSMQ fundamentals, remoting through code and remoting through configuration files, using delegates with remoting, WSE 3 features, plus more. 

  • Video: Debugging ASP.NET AJAX Applications with VS.NET 2005

    Debugging is a key skill that every developer has to learn to become productive. However, how do you debug ASP.NET AJAX applications and client-side JavaScript? In this video tutorial I walk through a few required steps to enable debugging and show how to use tools such as the Script Explorer to simplify the process. It's important to note that many of the features shown in the video can also be used with the Visual Web Developer Express.

  • Video: Calling Web Services using ASP.NET AJAX and JavaScript

    ASP.NET AJAX provides several different ways to call Web Services including JavaScript, XML Script and the AutoCompleteExtender. In this video tutorial you'll see how to call Web Services using JavaScript. Topics covered include creating a Web Service, applying the ScriptService attribute, creating a client-side JavaScript proxy and calling a Web Service using JavaScript and callbacks.

  • ASP.NET AJAX, Windows Mobile 5, Bluetooth GPS and Virtual Earth

    I've been playing around a lot lately with a great set of components from http://www.gpsdotnet.com that allow GPS functionality to be integrated into .NET applications.  The samples included with the GPS components were awesome and made it simple to do what I wanted (since they did most of the work for me).  I used the components to build a .NET Compact Framework V2 app for my Mobile 5 Pocket PC phone that could read data via bluetooth from a Pharos GPS device and upload it to a Web Service on a scheduled basis for logged in users.  While carpooling into work with my good buddy Spike Xavier I ran the application to get some test data to use.    The data is then mapped using pushpins and polylines using Microsoft's excellent Virtual Earth API.  All of the interaction with the backend Web Service is done using ASP.NET AJAX with JavaScript proxies and a little XML Script to hook it all together.  The application calls a Web Service that returns GPS users for display as well as longitudes and latitudes for selected users.  A screenshot of my trip into work a few days ago is shown below:

  • Free Copies of Vista Business and Office 2007 Professional for Watching Webcasts

    I just came across Microsoft's new http://www.powertogether.com Website and it looks like there's some great free stuff available in exchange for getting educated on Vista and Office 2007.  If you watch 3 Webcasts you can get a free copy of Vista Business edition or Office 2007 Professional (depending upon which 3 Webcasts you watch).  Here's part of the fine print about getting the freebies:

  • Video: Using the ASP.NET AJAX UpdatePanel, Triggers and PageRequestManager

    Microsoft's ASP.NET AJAX technology provides a quick and simple way to add AJAX capabilities into new or existing Web pages.  In this video tutorial I discuss how to use the UpdatePanel, refresh it using triggers and detect when it has finished updating using the new PageRequestManager along with JavaScript events.  I also cover how to use the AutoCompleteExtender control to call Web Services and show some of the Microsoft Virtual Earth API. 

  • Video: Minimize Code with TableAdapters and Strongly-Typed DataSets

    One of the talks I gave at the 2006 ASP.NET Connections conference in Las Vegas covered using TableAdapters and strongly-typed DataSets.  TableAdapters offer a great way to create a data-tier that work with stored procedures or inline SQL without writing much (if any) code.  They can be used to insert, update or delete data as well as select data into strongly-typed DataSets.

  • ASP.NET AJAX UpdatePanel Messages

    Microsoft made some fairly significant changes to the way ASP.NET AJAX UpdatePanel control messages are sent to and from the server in the latest beta release.  In earlier versions XML was used.  For example, a portion of a response message is shown below that contains a <delta> tag and others to track changes to the control (I removed quite a bit of the actual response message to keep it short and to the point):

  • Migrating to ASP.NET AJAX Beta 1

    If you're trying to migrate from previous Microsoft Atlas releases to the new ASP.NET AJAX Core Beta 1 you'll quickly find out that several things have changed.  I was playing around with the AutoCompleteExtender this evening and noticed that it isn't in the "core" installation but has been moved into the CTP installation.  It's been changed a bit too.  In previous releases you would define it using syntax similar to the following:

  • Getting Started with Windows Communication Framework

    One of the talks I'm giving at the upcoming DevConnections conference in Las Vegas the week of November 6th covers moving from Web Services to Service Oriented Architectures (SOAs).  Part of the talk will discuss how well Windows Communication Framework (WCF) satisfies SOA principles so I thought I'd put together a step by step tutorial on building a simple WCF service and client.  To run the examples you'll need the .NET 3.0 components from Microsoft as well as the VS.NET 2005 "Orcas" additions (optional).  At the time this blog was written .NET 3.0 wasn't available in a production release but that will change very soon.

  • Nullable Types in C# 2.0

    I'm teaching a C# 2.0 class at Interface Technical Training this week and thought I'd blog about two features I really like in C# 2.0 that save some typing (although they may arguably lead to more cryptic code) and are really useful.  Sure, there's all the goodness associated with generics, anonymous methods, partial types, etc. in C# 2.0 but two nice language enhancements are nullable types (which relate to generics) and the ?? operator.  If you've ever retrieved a null value from a database and then tried to assign it to an int or DateTime variable then you'll definitely appreciate nullable types if you haven't already used them.

  • RSS Blog Roller Code Update

    I've updated the original blog roller code posted awhile back since a few minor changes were made.  On the homepage of Interface Technical Training we only show the first 250 characters of employee blogs.  However, people were using tools that injected so much HTML/CSS into their blog that no real text from the blog could be found in the first 250 characters (just HTML tags).  To remedy this problem, all HTML is now stripped out of the summary text and a small routine was added to cut-off summary text on a space rather than splitting a word in the middle. 

  • New Features in ASP.NET AJAX Beta

    Microsoft released the intial beta of ASP.NET AJAX today with many, many new enhancements. One of the biggest changes is that the JavaScript files that ASP.NET AJAX controls rely upon to perform their magic have been refactored and significantly reduced in size. For example, the file used to support UpdatePanel operations is now only 6.4k in size which is a huge improvement and should result in pages loading much more quickly the first time they are hit. This release also fully supports the Safari browser which means the UpdatePanel will now work properly with Safari. Opera support is also in the works but not supported at this point. One of my favorites new additions in this release is the ability to dynamically create UpdatePanel controls and inject them into a page's control hierarchy. That feature will prove useful in cases where control developers want to easily AJAX-enable their controls or when an ASP.NET page needs to have AJAX capabilities dynamically added into it.

  • Calling Web Services Asynchronously

    I had the opportunity to give a talk on Asynchronous Web Services in .NET V2 last night to the Orange County, California VB.NET and C# Users Group.  Thanks to everyone that attended and to Mike Vincent for inviting me.  I had a lot of fun and met a lot of great people.

  • Also Blogging At...

    In addition to this blog, I'm also going to be adding how-to and tips and tricks articles to the following weblog.  If you'd like to subscribe to that one as well here's the link:

  • Speaking at the Orange County C# Users Group - October 17th

    I'll be giving a talk this Tuesday, October 17th at the Orange County C# Users Group on Asynchronous Web Services in .NET V2.  If you live in the area and are interested in seeing how Web Services can be called sychronously and asynchronously swing on by for a discussion of callbacks, polling, WaitHandles and the new event driven model. 

  • Creating a Project Status Dashboard using ASP.NET 2.0

    When I was working as a contractor for Maricopa County in Phoenix, AZ  I was asked by the CIO to create a "quick" prototype application that would track strategic priorities, related initiatives (projects) and organizations working on the initiatives.  He wanted to track how initiatives where meeting the priorities and the status of the initiatives (on time, past due, over budget, etc.).  He wanted to see everything with a simple dashboard style Webpage that showed green lights, yellow lights and red lights.  A screen shot of the solution I threw together for him in (about a day total) using ASP.NET 2.0 is shown below:

  • GUIDs and DataSource Controls

    The DataSource controls built-into ASP.NET 2.0 make it much easier to bind data to a variety of controls.  However, as you start to customize your applications you may experience a few issues (that are typically easy to resolve).   I came across one such issue when I first used the SqlDataSource to create some admin pages awhile back.  The database I was integrating with had primary keys of type UniqueIdentifier (GUID).  The insert stored procedures accepted the key as an OUTPUT parameter and when I tried to insert a row an error was raised saying that an invalid cast occurred on the key parameter (Implicit conversion from data type sql_variant to uniqueidentifier is not allowed. Use the CONVERT function to run this query).  At first I was a bit puzzled because the parameter I specified was of type Object (the closest thing available to GUID for asp:Parameter types) and I figured that everything would automatically be figured out behind the scenes.  The StrategicPriorityID parameter shown below demonstrates how I originally defined the code in the .aspx page:

  • Converting XML Data to Relational Data with SQL 2005

    SQL Server 2005 has many features that allow XML data to be queried and manipulated. One of the features I really like is the ability to convert XML data into relational data with a minimal amount of code. For example, if you had an RSS feed stored in a column typed as "XML" but wanted developers to be able to view it in a relational manner you could use the new CROSS APPLY syntax combined with the nodes() function:

  • SQL Server 2005 CLR and XML Demos

    SQL Server 2005 provides many new features that can substantially enhance developer productivity and make it easy to perform tasks that used to be difficult in previous versions.  The download available below demonstrates several new SQL Server 2005 features including:

  • Creating an ASP.NET RSS Blog Roller with C#

    We needed an RSS blog roller for http://www.interfacett.com so we could show employee blogs from various sites.  While there are several out there for .NET we wanted something that we could build on and customize so Spike Xavier and I put together a quick class named RssBlogRoller that would read an array of blog URLs, grab a specific number of items and then sort them based upon the <pubDate> element.  It was a fun little exercise that will be useful in classes as well since it demonstrates generics, XmlReaders (and sub readers) and the ASP.NET ObjectDataSource.

  • Using SQL Server 2005 CLR Features to Create Aggregates

    I played around with SQL Server 2005 a bit this past week to explore (more in-depth) some of the different CLR features that are available.  I'll be posting a few of the things I've experimented with over the next few days.  One thing that can be really useful is the ability to create custom aggregate functions using C# or VB.NET, store them in the database and then use them within queries or stored procedures.

  • Binding Data to Tables with MS AJAX and the ListView Control

    If you've used the client-side MS AJAX controls then you know that there's no such thing as a GridView control like we're used to having on the server-side (although a GridView could be used with an MS AJAX Update Panel of course to get AJAX functionality).  When I first started using the ListView client-side control I had a hard time getting tables to show data property.  If you're unfamiliar with the ListView control it can be defined using XML Script:

  • Calling Web Services with MS AJAX using Code Vs. Declaratively

    I've been playing around with MS AJAX more these days and had some sample code working fine when using MS AJAX (formerly Atlas) controls combined with JavaScript that calls a Web Service.  Since I'm quite familiar with JavaScript I initially wrote most of the functionality using code.  For example, the following JavaScript routine calls a Web Service that returns customers in a given country and specifies the callback function that should process the returned data:

  • Redefining a Relaxed Office Atmosphere

    I swung by my good buddy Spike Xavier's house the other day and checked out his new office arrangement.  Spike apparently thinks that most home office setups are too confining, stuffy and stressful.  So, he created his own arrangement complete with reclining chair and wireless keyboard to go along with the dual monitors.  My first thought was that it couldn't be very productive the way he had it setup, but after giving it a try I'll have to admit that it was great....and very comfortable.  Here's a shot of me at work in his home office (taken with my phone so the quality isn't the best....but you'll get the idea).  Definitely the most relaxed office atmosphere I've ever been in. :-)

  • Microsoft Releases Open Specification Promise for Web Services

    In an effort to spur more adoption of Web Services standards, Microsoft has a released a new online document called the "Open Specification Promise" (OSP).  The document allows companies to use specifications patented by Microsoft without worrying about "Microsoft Necessary Claims".  What are "Microsoft Necessary Claims"?  I asked the same question.  Here's how the document defines them:

  • In Case You're Late To The Atlas Naming Party....

    This is one of the most blogged about topics of the day, but in case you haven't heard (I understand since there was a double-header on Monday Night Football tonight :-)) Microsoft's Scott Guthrie officially announced the name Atlas will be and gave a timeframe for the production release.  Read all about it here:

  • Atlas, IIS7, LINQ and Other Technologies

    Scott Guthrie came to Phoenix today to speak on various topics including IIS7 and LINQ.  I've had the chance to hear Scott speak on several occassions and he delivered yet another great speech that was fun to watch since he always does a lot of demos.  Some of the topics covered included new configuration options in IIS7.  Once released, you'll be able to configure the settings for an IIS7 application using web.config rather than having to go through the admin utility of old (you can of course use the admin utility as well...which has been significantly revamped).  For example, you can add the following XML into web.config to configure the default pages for a site as well as specify if directory browing is enabled.

  • Enhancing TableAdapters

    I've been playing around and researching different ways to enhance TableAdapters when more custom functionality is needed.  If you're not familiar with TableAdapters, they act as the glue between a data source and a strongly-typed DataSet/DataTable.  You can create them visually using the Visual Studio .NET 2005 DataSet designer and add multiple queries to them that call SQL statements or stored procedures.  You can even create new stored procedures right in the VS.NET DataSet designer wizard.

  • ASP.NET Connections Conference Las Vegas Approaching Fast

    The ASP.NET Connections conference in Last Vegas is coming up fast!  If you're still up in the air about attending I can tell you that it's an awesome conference where you'll have a lot of fun plus learn a lot in the process (that's my personal opinion...not a paid opinion :-)).  I'm going to be there giving the following presentations on behalf of Interface Technical Training:

  • Finding ASP.NET Child Controls....the Simple Way

    My good buddy Spike Xavier and I were discussing how to find nested child controls today and we discovered a nice trick that can be used.  In the past, I've used parentControlID$childControlID syntax with the SqlDataSource and parameters to identify TextBox controls nested within a DetailsView control without resorting to C# or VB.NET code.  This type of syntax allows the page to query the parent control and then locate the target child control (the $ acts as the delimiter).  Spike needed to use the DefaultFocus attribute of the <form> element to set the focus to a TextBox nested within a FormView control.  We tried listing the TextBox ID directly in DefaultFocus and it didn't work (which was expected since it's a nested control).  We then used the syntax I had used previously with the SqlDataSource control in DefaultFocus and it worked....the TextBox received focus when the page loaded.

  • Atlas Control Toolkit - A Few Demos

    I'm finishing up a new article for asp.netPRO Magazine about some of the controls in the Atlas Control Toolkit and wanted to get the sample code posted so people could see a few of the workarounds I ended up doing.  Overall I really like the toolkit controls.  There are definitely some issues that I encountered that made some things I thought would be simple actually a bit tricky.  It's early though....and I know several of the issues I ran into are already known and being worked on. The sample code demonstrates using the following controls:

  • ASP.NET 2.0 Presentation at Microsoft's Phoenix Location

    On June 15th and 16th I had the opportunity to train 50+ people at Microsoft's Phoenix location on ASP.NET 2.0.  I met some great people and had a lot of fun showing many of the new features in V2.  The live samples I created during the presentation can be downloaded here. If you're going to run the samples make sure you update the connection strings located in the different web.config files (nearly all of the samples point to the standard Northwind sample database).

  • SQL Programming Intellisense with RedGate's SQL Prompt

    RedGate (a company with some awesome SQL Server products) is releasing a tool called SQL Prompt that looks phenomenal from what I've seen to this point.  It allows developers to get intellisense as they develop SQL queries within Query Analyzer, SQL Server 2005 Management Studio, Visual Studio 2005, Visual Studio .NET 2003, SQL Server 2000 Enterprise Manager and UltraEdit32.  I haven't had a chance to try the beta out a whole lot yet but it looks like the final release will be May 22nd and I'm pretty excited about it since I've always wanted intellisense in these tools as I create different types of queries.  Did I mention that they're releasing it for free? :-)

  • ASP.NET 2.0 Talk at Los Alamos

    I'm giving a conference talk on May 18th at Los Alamos, NM about new features in ASP.NET 2.0.  I've never been there (or to Santa Fe) so it should be fun to see that part of state.  The code for the talk demonstrates using Server controls, Validation controls, TableAdapters, data binding with the ObjectDataSource, Master Pages, Themes and more and can be downloaded here.

  • .NET Distributed Application Development Class

    I taught Microsoft's new .NET Distributed Application Development (intro and advanced) courses this week at Interface Technical Training.  I had a lot of fun and met some great people doing various distributed development projects.  I promised them I'd get the code samples I put together in class on my blog so here they are.  For those that attended....thanks!  I really enjoyed meeting you!

  • Tablet PCs and Ink-Enabled Applications

    I had a chance to meet with Frank Gocinski who is the Business Development Manager for Microsoft's Mobile Platforms and Michelle McKelvey (a Technology Evangelist) while at the DevConnections conference in Orlando this week.  We talked about some of the different ways to capture "ink" on Tablet PCs...something I haven't played around with to this point.  Julia Lerman (one of my good buddies who also spoke at the conference and introduced me to Frank) wrote an article for CoDe Magazine about ink-enabling Web applications (that issue has several other articles on Table PCs and ink as well) that was really good.  Since I don't have a tablet PC I've never been overly excited about ink-enabled applications but after talking with Julia, Frank, Michelle and some others my mind started racing....and I see the light. :-)  I used to work for a start-up company that built dynamic forms that could capture signatures and Tablet PCs are perfect for that type of activity and the other uses (business and pleasure) are virtually unlimited.

  • Slides and Code for my ASP.NET Connections Talks

    I just returned from speaking at the ASP.NET Connections conference in Orlando which was a lot of fun.  If you haven't ever attended before I highly recommend it.  I had a chance to meet a few other speakers I hadn't met before as well as talk with a lot of conference attendees that were building some cutting-edge ASP.NET applications.  I gave 3 different talks at the conference and promised everyone that I'd add the slides and code....so here it is.

  • VirtualPathUtility Class

    It's amazing how many different things are built-into the .NET framework.  As soon as you think you've seen just about everything you come across something that you didn't even realize was there.  That happened tonight as I read through a series of listserv posts covering different techniques for working with relative paths in ASP.NET applications. David Ebbo (Microsoft) mentioned using the VirtualPathUtility class (System.Web namespace) which I hadn't used or even heard of.  It greatly simplifies working with virtual directories....cool stuff.  Here's an example from the SDK:

  • It's Official....

    I've been talking with Interface Technical Training  about joining their staff for quite awhile and have finally decided to make the switch from running my own company (Wahlin Consulting) to focusing my efforts on all of the great training and related initiatives they have going on. 

    As of February 27th I'll be working at Interface as a full-time employee which I'm really excited about since they have some super sharp people there like Mike Palermo and Simon Allardice (to name just two).  Plus, the president/owner (Mike La Gioia) is probably one of the coolest (and most patient) people I've met especially given that I've been dragging my feet on making the move for over a year.

comments powered by Disqus