| DotNetKicks.com Links |
| Unit Test Linq to Sql in ASP.Net MVC with Moq ... Unit testing LINQ to sql in asp.net mvc preview 2 using MoQ as the mocking framework. | Go |
| ASP.NET: How To Use BulkEditGridview To Save Hours In Database Editing ... The GridView is a fantastic, versatile, and powerful tool. Unfortunately, it is also unrealistic in several aspects. Say you have a page in your website's administrative back-end that is to update all of your prices for your products. With a typical GridView, if you wanted to update, say, 10 of these prices, you will require at minimum 20 postbacks, which depending on the speed of your server can be a lengthy process. Now imagine that you have over 1000 lines to edit. 2000 postbacks, minimum... sound like a daunting task that may take you hours in just waiting for your server to respond?
What if I told you that you could edit an unlimited number of records in a GridView with one click, one postback, and one call to your database, and that only the records you modified would be updated? What if I told you it was way, way easier than you think? | Go |
| ASP.NET Tips: How to capture a dump ... Gathering a dump. | Go |
| Consuming RSS Feed using ASP.NET ... RSS stands for Really Simple Syndication. It is a format used to publish regularly updated web content such as blogs, articles, news sites etc. In this article check out how to consume a RSS feed of a site. | Go |
| What Does the OutputCache Directive Do on the Client? ... Exploring how the OutPutCache directive works on the client. | Go |
| Create Shortcut on Desktop for Device Manager ... Do you make changes to your hardware configuration regularly? or do you tweak your settings, install beta drivers that crash your machine. Then you are entitled to be a hardware geek. So, hardware geeks, here is a small tip from me for making your life a bit more simpler. | Go |
| Debugging videos anyone? ... Is there interest in seeing videos about debugging? | Go |
| ASP.NET Tips: Debugger command you may not know about - convertticksto ... coverttickstodate, useful debugger command for printing out System.DateTime and System.TimeSpan objects. | Go |
| ASP.NET Tips: Debugger command you may not know about - gcref ... Debugger commands you may be unaware of. | Go |
| ASP.Net MVC Membership Starter Kit ... Troy Goode posted abou this yesterday. Today, there's already an update available containing some cool new stuff! | Go |
| Creating Data Bound Templated Control ... Download code Data bound controls are most popular amongst developers because of their verticality. Controls such as GridView and DataList are popular not just because they provide rich features out of the box but because they allow great deal of customization. To that end templates... | Go |
| Handy list of all JavaScript KeyCodes ... Very often when programming in ASP.NET and ASP.NET AJAX we have to write JavaScript code.
When writing JavaScript that interacts with user we have to deal with keyboard events.
Here is the list of (almost) all JavaScript KeyCodes we could find: | Go |
| SPAW Editor 2.0.7 Released ... Version 2.0.7 of one of the most popular HTML WYSIWYG editor controls for ASP.NET and PHP - SPAW Editor - has been released. | Go |
| .NET Chart ... ExpertChart offers the most affordable ASP.NET charting control, built with 100% managed code and the C# language. Perfect for your C# or VB.NET applications. | Go |
| Delicious tagged ASP.NET Links |
| acts_as_aspdotnet (a Ruby on Rails Plugin) | Go |
| ASP.NET Google Charts Implementation | Go |
| inline asp.net tags... sorting them all out (<%$, <%=, <%, <%#, etc.) | Go |
| C# and VB .NET Libraries to Digg, Flickr, Facebook, YouTube, Twitter, Live Services, Google and other Web 2.0 APIs | Go |
| Kigg - Building a Digg Clone with ASP.NET MVC Part - 1 | Go |
| ASP.NET MVC In-Depth: The Life of an ASP.NET MVC Request - Stephen Walther's Blog | Go |
| SingingEels : Real-Time Progress Bar With ASP.NET AJAX | Go |
| ASP.NET 3.5 Extensions Preview : The Official Microsoft ASP.NET Site | Go |
| BlogEngine.NET - Full featured simplicity | Go |
| .NET - GridView Tips and Tricks using ASP.NET 2.0 | Go |
| CodeProject: ASP.NET Internals: Viewstate and Page Life Cycle. Free source code and programming help | Go |
| extsharp - Google Code | Go |
| Matt Berseth: Building a VS2008 Styled Grid with the ListView and DataPager Controls | Go |
| Coolite Inc. - ASP.NET Web Controls | Go |
| Scott Gu Blog Links |
| Tip/Trick: Creating and Using Silverlight and WPF User Controls ... One of the fundamental design goals of Silverlight and WPF is to enable developers to be able to easily encapsulate UI functionality into re-usable controls. You can implement new custom controls by deriving a class from one of the existing Control classes (either a Control base class or from a control like TextBox, Button, etc). Alternatively you can create re-usable User Controls - which make it easy to use a XAML markup file to compose a control's UI (and which makes them super easy to build). In Part 6 of my Digg.com tutorial blog series I showed how to create a new user control using VS 2008's "Add New Item" project item dialog and by then defining UI within it. This approach works great when you know up front that you want to encapsulate UI in a user control. You can also use the same technique with Expression Blend. Taking Existing UI and Encapsulating it as a User Control Sometimes you don't always know you want to encapsulate some UI functionality as a re-usable user control until after you've already started defining it on a parent page or control. For example, we might be working on a form where we want to enable a user to enter shipping and billing information. We might begin by creating some UI to encapsulate the address information. To-do this we could add a <border> control to the page, nest a grid layout panel inside it (with 2 columns and 4 rows), and then place labels and textbox controls within it: After carefully laying it all out, we might realize "hey - we are going to use the exact same UI for the billing address as well, maybe we should create a re-usable address user control so that we can avoid repeating ourselves". We could use the "add new item" project template approach to create a blank new user control and then copy/paste the above UI contents into it. An even faster trick that we can use within Blend, though, is to just select the controls we want to encapsulate as a user control in the designer, and then "right click" and choose the "Make Control" menu option: When we select the "Make Control" menu item, Blend will prompt us for the name of a new user control to create: We'll name it "AddressUserControl" and hit ok. This will cause Blend to create a new user control that contains the content we selected: When we do a re-build of the project and go back to the original page, we'll see the same UI as before - except that the address UI is now encapsulated inside the AddressUserControl: We could name this first AddressUserControl "ShippingAddress" and then add a second instance of the user control to the page to record the billing address (we'll name this second control instance "BillingAddress"): And now if we want to change the look of our addresses, we can do it in a single place and have it apply for both the shipping and billing information. Data Binding Address Objects to our AddressUserControl Now that we have some user controls that encapsulate our Address UI, let's create an Address data model class that we can use to bind them against. We'll define the class like below (taking advantage of the new automatic properties language feature): Within the code-behind file of our Page.xaml file we can then instantiate two instances of our Address object - one for the shipping address and one for the billing address (for the purposes of this sample we'll populate them with dummy data). We'll then programmatically bind the Address objects to our AddressUserControls on the page. We'll do that by setting the "DataContext" property on each user control to the appropriate shipping or billing address data model instance: Our last step will be to declaratively add {Binding} statements within our AddressUserControl.xaml file that will setup two-way databinding relationships between the "Text" properties of the TextBox controls within the user control and the properties on the Address data model object that we attached to the user control: W | Go |
| Unit Testing with Silverlight ... One of the important capabilities we shipped with the Beta1 release of Silverlight 2 was a unit test harness that enables you to perform both API-level and UI-level unit testing. This testing harness is cross browser and cross platform, and can be used to quickly run and verify automated unit tests: In addition to shipping this unit test harness for Silverlight, we also shipped the source to ~2,000 unit tests built with it that provide automated coverage for the Silverlight control source that we also shipped under a permissive license (you can take the control source, modify it, run the unit tests to verify the behavior, then re-ship the controls however you want). Learning How to Unit Test Silverlight Jeff Wilcox (who developed the Silverlight unit test framework and harness) has a great blog post that talks about how to add a Silverlight Unit Test project to a solution here . You can download the chat application that he shows testing from this expression blend blog post tutorial I did last month. You can also watch this cool video post that Jeff created where he walks through the unit test framework and test cases we've shipped. As Jeff shows in his post, you can now add a "Silverlight Test Project" to your Visual Studio solution which encapsulates unit tests for an application you are working on: You can then add unit test classes to the test project that test APIs or simulate UI action within the Silverlight controls (simulate button clicks, etc). You can then run the test project and execute the tests within it to verify and report their status. Jeff's test framework automatically provides a browser based test harness and reporting system (which means you can run it on any browser/OS combination that Silverlight runs on): Jeff's test framework supports quickly re-setting controls after each test (and avoids needing to re-launch a new browser instance for each test cases - which makes it really fast). You can quickly rip through hundreds or thousands of automated tests in seconds: Green results mean the tests passed. Red results flag that a test case failed and log the assertion failure and/or runtime exceptions that occurred. Summary If you've ever struggled to try and come up with a strategy for doing automated unit testing or TDD with AJAX applications, I think you'll find Silverlight provides some much nicer test options. Using Visual Studio you can also separate your tests into a separate project in your solution, and you do not need to embed the tests within your Silverlight application in order for them to run. In addition to supporting the above unit test harness and framework, we are also going to support UI automation APIs with the final release of Silverlight 2. These will enable accessibility scenarios (allowing screen readers to work with Silverlight and enable Section 508 compliance of Silverlight applications). These UI automation APIs will also enable UI testing scenarios where you can build end to end browser UI automation that simulates real mouse and keyboard interactions and enables automated end to end experience testing. The combination should enable you to build much more solid and maintainable RIA solutions. Hope this helps, Scott P.S. For more tutorial posts and links on Silverlight 2, check out my new "Silverlight Tips, Tricks, Tutorials and Links" page. | Go |
| March 28th Links: ASP.NET, ASP.NET AJAX, ASP.NET MVC, Visual Studio, Silverlight, .NET ... Here is the latest in my link-listing series . Also check out my ASP.NET Tips, Tricks and Tutorials page for links to popular articles I've done myself in the past. ASP.NET Three New ASP.NET Security Tutorials Now Available : Scott Mitchell continues his great ASP.NET security tutorials . These three new ones cover creating and managing roles, assigning roles to users, and implementing role based authorization. You can also find more security articles by reading posts on my blog tagged with security . .NET Libraries to Digg, Flickr, Facebook, YouTube, Twitter, and other Web 2.0 APIs : Scott Hanselman's latest "weekly source code" review looks at .NET APIs that you can use to call popular web 2.0 services. Hangs and how to Solve Them (Part 1) and (Part 2) : Tom has some useful posts that talk about deadlocks and request queuing in ASP.NET, and how to detect and debug what might be causing them. ASP.NET AJAX Building ASP.NET AJAX Controls (Part 1) , (Part 2) , and (Part 3) : Mike Ormond has started a nice blog post series that talks about how to build ASP.NET AJAX Controls. Make sure to check out Part 2 - Components and Part 3 - Properties and Events as well. New ASP.NET AJAX "How Do I?" Videos : Joe Stagner has published a number of new ASP.NET AJAX "How Do I?" videos. Learn about the re-order control , retrieving values from server-side AJAX controls , two techniques for triggering updates to update panels , and using the cascading drop down control . Real-Time Progress Bar with ASP.NET AJAX: SingingEels shows a technique for displaying real-time progress notifications using AJAX as a long-lived activity runs on the server. Using JQuery to Consume ASP.NET AJAX JSON Web Services : Dave Ward has a nice post that describes how to use the JQuery AJAX library on the client to call an ASP.NET Web Service on the server that is JSON enabled (using ASP.NET AJAX on the server). ASP.NET MVC Kigg - Building a Digg Clone with ASP.NET MVC : Kazi Manzur Rashid published an excellent Digg-clone sample built with ASP.NET MVC last February. He recently updated the code to work with ASP.NET MVC Preview 2 (full details here ). You can download the latest version of his source code here . ASP.NET MVC In-Depth: The Life of an ASP.NET Request : Stephen Walther has a great post that details the exact steps that occur when an ASP.NET MVC request executes. ASP.NET MVC Action Filters - Caching and Compression : Kazi Manzur Rashid has another great post that shows how to use the new ActionFilterAttribute support in ASP.NET MVC to implement output caching and compression attributes. Read this quickstart article to learn more about how Action Filters work, or watch Scott Hanselman's video that covers them. Defining Routes using Regular Expressions with ASP.NET MVC : Someone asked me the other day how to use regular expressions to define route rules with ASP.NET MVC. Turns out Fredrik Kalseth already has a nice sample that shows how to-do this. Testing with the ASP.NET MVC Framework : Simone Chiaretta has a great article that discusses how to test controllers using ASP.NET MVC Preview 2. Note: the next ASP.NET MVC preview release will include a number of refactorings that will simplify controller testing considerably (and avoid the need to mock anything for common scenarios). Test-Driven Development with Visual Studio 2008 Unit Tests : Stephen Walther has a really nice post that describe how the unit testing features now built-in VS 2008 Professional work (using an ASP.NET MVC project). Also check out Stephen's excellent Introduction to Rhino Mocks blog post that describes how to use the open source Rhino Mocks framework with VS unit test projects. Visual Studio VS 2008 Web Deployment Hot-Fix Roll-Up Now Available for non-English Languages: Last month we shipped a hot-fix release that fixes a number of bugs, adds a few features, and improves performance for web development scenarios in VS 200 | Go |
| New Log Reporting, Database Management, and other cool admin modules for IIS 7 ... One of the core priorities we focused on when building IIS 7 was to enable a rich .NET extensibility model that provides developers with the hooks to easily plug-in and extend the web server. These extensibility hooks are provided in the web-server pipeline (enabling scenarios like the new IIS7 Bit Rate Throttler ), within the configuration system (enabling developers to create new web.config schema settings), within the health monitoring system (enabling developers to add custom trace events), and within the admin tool (enabling developers to plug-in new admin UI modules). We added these extensibility hooks so that anyone can easily extend and enhance the web server using .NET. We also selfishly wanted them so that we can ship regular feature packs that add additional features to the core web server. IIS 7 Admin Pack Preview 1 Released Last week the IIS team shipped the first technical preview of some really cool administration modules that I think web developers will find super useful. This preview adds several new features to the IIS7 Admin Tool: Database Manager : Built-in SQL Server database management, including the ability to create, delete, and edit tables and indexes, create/edit SPROCs and execute custom queries. Because it is integrated in the IIS administration tool it all works over HTTP/SSL - which means you can use the module to remotely manage your hosted applications (even with low-cost shared hosting accounts), without having to expose your database directly on the Internet. Log Reports : Built-in report visualization with charting support for log files data. Full range selection and custom chart creation is supported, as well as the ability to print or save reports. Like the database manager you can use this module remotely over HTTP/SSL - which means it works in remote shared hosting scenarios. Configuration Editor: This is a power module that provides complete control over editing all web.config settings within the admin tool. You can configure it to track the changes you make using the UI and have it auto-generate configuration change scripts that you can then save and tweak to re-run later in an automated way. Request Filtering UI: This admin module provides more control over the new request filtering feature in IIS7. Check out Carlos' blog post here for details on how to use it. .NET Authorization: This admin module provides a custom authorization rules editor which allows you to more easily manage the ASP.NET <authorization> configuration section. FastCGI UI: This admin module provides more support for editing all the new <fastCGI> settings (for when you use FastCGI modules with IIS7 like PHP). Below are some screen-shots and simple walkthroughs of the Log Reporting and Database Manager administration UI modules: Log Reporting Admin Module Have you ever deployed a web application onto a server and wondered how much load it is getting?, what the average response time from the server is?, or whether many server errors are occurring (and if so on what URLs)? All of these settings are carefully logged by IIS in a text based log file. Today most people use command-line tools like the IIS Log Parser utility to query and analyze these files. The IIS 7 Admin Pack and the new "IIS Reports" admin module now enable you to also query and chart your reports graphically within the IIS admin tool: Out of the box the "IIS Reports" admin module comes with a bunch of pre-built logparser-based reports that you can easily run on your sites and applications: Below is a simple graphical report we could pull up that looks at the HTTP status codes being returned by my "TestSite" application (note how we are using the "bar graph" visualization option): Reports can optionally be filtered using a date range. You can also push the print or save buttons within the report page to generate a printer or a local saved version of the report. The IIS7 Admin To | Go |
| ASP.NET MVC Source Code Now Available ... Last month I blogged about our ASP.NET MVC Roadmap . Two weeks ago we shipped the ASP.NET Preview 2 Release . Phil Haack from the ASP.NET team published a good blog post about the release here . Scott Hanselman has created a bunch of great ASP.NET MVC tutorial videos that you can watch to learn more about it here .
One of the things I mentioned in my MVC roadmap post was that we would be publishing the source code for the ASP.NET MVC Framework, and enable it to be easily built, debugged, and patched (so that you can work around any bugs you encounter without having to wait for the next preview refresh release).
Today we opened up a new ASP.NET CodePlex project that we'll be using to share buildable source for multiple upcoming ASP.NET releases. You can now directly download buildable source and project files for the ASP.NET MVC Preview 2 release here .
Building the ASP.NET MVC Framework
You can download a .zip file containing the source code for the ASP.NET MVC Framework for the release page here . When you extract the .zip file you can drill into its "MVC" sub-folder to find a VS 2008 solution file for the project:
Double-clicking it will open the MVC project containing the MVC source within VS 2008:
When you do a build it will compile the project and output a System.Web.Mvc.dll assembly under a \bin directory at the top of the .zip directory. You can then copy this assembly into a project or application and use it.
Note: the license doesn't enable you to redistribute your custom binary version of ASP.NET MVC (we want to avoid having multiple incompatible ASP.NET MVC versions floating around and colliding with each other). But it does enable you to make fixes to the code, rebuild it, and avoid getting blocked by an interim bug you can't work around.
Next Steps
Our plans are to release regular drops of the source code going forward. We'll release source updates every time we do official preview drops. We will also release interim source refreshes in between the preview drops if you want to be able to track and build the source more frequently.
We are also hoping to ship our unit test suite for ASP.NET MVC in the future as well (right now we use an internal mocking framework within our tests, and we are still doing some work to refactor this dependency before shipping them as well).
Hope this helps,
Scott | Go |
| IIS 7.0 Bit Rate Throttling Module Released ... Video on the web is now one of those common scenarios that every user takes for granted, and increasingly every major site is incorporating in some form (product videos, training videos, richer advertising scenarios, user generated content, customer testimonials, etc).
One of the challenges when adding video to a site, though, is delivering it in a way that doesn't cost a fortune. Network bandwidth costs a lot of money, and the cost of high quality video usage can quickly add up.
The blog post below provides a quick overview of some of the options you can use to reduce the cost of delivering video, and discusses a new free download - the IIS 7.0 Bit Rate Throttling Module - that was released a few days ago and which enables you to easily save money when serving video from an IIS web server using any video technology (including Silverlight, Windows Media Player and even Flash).
Option 1: Using a Video Hosting Service
One approach you can take to reduce video bandwidth costs is to use a video hosting service like YouTube or the free Microsoft Silverlight Streaming Service . This allows you to use someone else's network to deliver the video content, and avoid having to pay the bandwidth costs yourself.
If you aren't familiar with the Silverlight Streaming service, it allows you to upload up to 10GB of videos and download 5 Terabytes/month of video content (at up to a 1.4 Mbps bit-rate) for free. You can build any custom Silverlight client player application you want to embed the video within it. This means it doesn't require a specific video player look and feel, nor a service logo/watermark to play the video. This allows you to fully integrate the video into your site and use whatever UI you want to host it.
Option 2: Hosting Video on Your Own Servers
Sometimes using a video hosting service doesn't make sense (for example: you want to use custom authentication to grant/deny user's access, you want to play really long video segments, or you want to serve up custom ads in your videos). Instead you might want to serve the video up from your own servers and have complete control over it.
There are typically two options you can use to deliver the video from your servers: using a streaming approach or a progressive video download approach:
Streaming Server Scenario
In a streaming scenario a client (like Silverlight, Windows Media Player, Flash or Real Networks) connects to a streaming server. The streaming server then sends down the video stream to watch, and typically enables a user to dynamically skip ahead/behind, pause or stop the video stream. When the user closes the browser or navigates away from the page the video stream automatically stops transmitting.
Windows Media Services (WMS) is a free streaming server download available for Windows, and can stream video to both Windows Media Player and cross-platform Silverlight browser clients. It is generally regarded as the most server scalable and cost effective way to enable video streaming on the web, and handles both on-demand file streaming scenarios (for example: streaming a .wmv file) as well as live stream scenarios (for example: a sporting event like the Olympics that is happening live in real time).
Windows Media Services can be used on any version of Windows Server - including the new Windows Server 2008 Web Server edition (which only costs $469, enables up to 4 processors and 32GB of RAM, and supports IIS, ASP.NET, SharePoint, and Windows Media Services).
Progressive Download Scenario
In a progressive download scenario a client (like Flash or Silverlight) downloads a video directly off of a web-server, and begins playing it once enough video is downloaded for it to play smoothly.
The benefit of using a progressive download approach is that it is super easy to setup on a web-server. Just copy/ftp a video up to a web-server, obtain a URL to it, and you can wire it up to a video client player. It doesn't require any custom web-server configurat | Go |
| March 14th Links: ASP.NET, ASP.NET AJAX, ASP.NET MVC and .NET ... I'm slowly recovering from keynoting at MIX last week, and have been digging my way out of backlogged email the last few days. I'm going to try and finish catching up on blog comments this weekend - apologies for the delay in getting back to some of your questions. To kick-start my blogging again I thought I'd post a new link-listing series . Today's post is mostly focused on ASP.NET and web related links. I'm going to be doing more Silverlight and WPF posts soon. ASP.NET Tag Cloud Filters with ASP.NET 3.5's LinqDataSource and ListView Controls : Matt Berseth has a cool post that shows off using LINQ to SQL and ASP.NET 3.5 to build a tag-cloud navigation UI. Five New ASP.NET Security Tutorials Now Available : Scott Mitchell continues his great ASP.NET security tutorials . These 5 new ones (all in both VB and C#) cover using the ASP.NET membership system. Building a Vista Style Folder Browser with ASP.NET 3.5 and a Custom Hierarchical DataSource Control: Matt Berseth continues his great posts with a nice one that shows how to build a custom HierarchicalDataSourceControl to implement file browsing functionality using ASP.NET. ASP.NET AJAX New ASP.NET AJAX Control Toolkit Release: David Anson blogs about a new ASP.NET AJAX Control Toolkit release that the team made right before MIX. This release includes a number of patches (including a bunch from the community) with bug fixes and improvements in a bunch of areas. LinkedIn Style Theme for the ASP.NET AJAX Tab Container Control: Matt Berseth posts some cool new themes you can use with the ASP.NET AJAX Control Toolkit's tab control. ASP.NET AJAX In-Depth: Object Inheritance : Stephen Walther, author of the recently published ASP.NET 3.5 Unleashed book , posts an incredibly in-depth article about how object inheritance is handled with ASP.NET AJAX. ASP.NET AJAX In-Depth: Creating JavaScript Properties: Stephen Walther continues his series with an in-depth article discussing how JavaScript Properties are handled with ASP.NET AJAX. ASP.NET AJAX In-Depth: Application Events : Yes another Stephen Walther article discussing how application events are handled with ASP.NET AJAX. ASP.NET AJAX Localization Slides and Code: Joel Rumerman has a nice post with samples + slides about how the localization features in ASP.NET AJAX work. JScript Intellisense: working with Ext JS : The VS web tools team enabled JQuery intellisense last month with the VS 2008 Web Development hot fix . In this more recent post they talk about enabling intellisense support for Ext JS (another popular JavaScript framework). VS 2008 Intellisense support for Prototype is coming in the next few weeks. JavaScript Intellisense for the Virtual Earth Map Control: Marc Schweigert is driving a project to add great VS 2008 JavaScript intellisense support for the Virtual Earth Map Control. Check out his video and visit his codeplex project to learn more. ASP.NET MVC ASP.NET MVC Preview 2: Last week at MIX the ASP.NET team shipped a second preview release of the ASP.NET MVC framework. This release has a number of improvements in it (see my earlier MVC roadmap post that covers some of them). Watch the Scott Hanselman videos on the http://www.asp.net/mvc page, as well as the quickstart samples to learn more. Thoughts on ASP.NET MVC Preview 2 and Beyond : Phil Haack from the ASP.NET team has a great post where he talks about the ASP.NET MVC Preview 2 release, as well as some of the features and work that will show up in the next preview drop. One of the major focuses in Preview 3 will be improvements to the testing workflow of controllers. Cheesy Northwind Sample Code: Scott Hanselman has posted a sample application that shows building a simple data driven application using the ASP.NET MVC Framework and the Northwind sample database. Securing Your Controller Actions : Rob Conery shows how to use the new ASP.NET MVC ActionFilterAttribute feature to apply declarative secu | Go |
| My Presentations in Arizona this Tuesday ... Update: You can now download the slides + demos I used during my talks. Click here for the Silverlight Talk . Click here for the MVC Talk .
This week I'm visiting Scottsdale Arizona and will be presenting at a free user group event during the day. I'm presenting two sessions myself:
1) Developing Applications using Silverlight 2 : This will be a drill-down into the new Silverlight 2 Beta1 release, and how you can build applications with it using VS 2008 and Expression Blend. You'll leave this session with a good understanding of the basics of Silverlight programming and how to start building applications with it.
2) Developing Applications using ASP.NET MVC : This session will be a drill-down into the new ASP.NET Model-View-Controller framework option (which last week was updated . You'll leave this session with a good understanding of what it is, how it works, and how to start building ASP.NET web applications with it.
In addition to my sessions above, there will also be great sessions at the event from Microsoft employees on "Consuming Web Services with Microsoft Silverlight", "Encoding Video for Microsoft Silverlight", and "Serving Applications with Microsoft Silverlight Streaming".
You can sign up and attend the sessions for free. Click here for more details on the events, and click here to register online to attend.
Hope to see some of you there,
Scott | Go |
| First Look at Using Expression Blend with Silverlight 2 ... Last week I did a First Look at Silverlight 2 post that talked about the upcoming Silverlight 2 Beta1 release. In the post I linked to some end-to-end tutorials I've written that walk through some of the fundamental programming concepts behind Silverlight and WPF, and demonstrate how to use them to build a "Digg Search Client" application using Silverlight:
Part 1: Creating "Hello World" with Silverlight 2 and VS 2008
Part 2: Using Layout Management
Part 3: Using Networking to Retrieve Data and Populate a DataGrid
Part 4: Using Style Elements to Better Encapsulate Look and Feel
Part 5: Using the ListBox and DataBinding to Display List Data
Part 6: Using User Controls to Implement Master/Details Scenarios
Part 7: Using Templates to Customize Control Look and Feel
Part 8: Creating a Digg Desktop Version of our Application using WPF
In this first set of Silverlight tutorials I didn't use a visual design tool to build the UI, and instead focused on showing the underlying XAML UI markup (which I think helps to explain the core programming concepts better). Now that we've finished covering the basics - let's explore some of the tools we can use to be even more productive.
Expression Blend Support for Silverlight
In addition to releasing the upcoming Beta1 of Silverlight 2, we are also going to ship Visual Studio 2008 and Expression Studio tool support for targeting it. These tools will offer a ton of power for building RIA solutions, and are designed to enable developers and designers to easily work on projects together.
In today's post I'm going to introduce some of the features in the upcoming Expression Blend 2.5 March preview. After demonstrating some of the basics of how Blend works, we are going to use it to build a cross-platform, cross-browser Silverlight IM chat client:
The above screen-shot shows what the application looks like at runtime on a Mac. Below is a screen-shot of what it looks like at design-time within Expression Blend:
We'll use Expression Blend to graphically construct all of the UI for the application, as well as use it to cleanly data-bind the UI to .NET classes that represent our chat session and chat messages.
<Download Code> Click here to download a completed version of this sample. </Download Code>
All of the controls we'll use to build the chat application are built into Beta1 of Silverlight 2.
Disclaimer: I am not a designer (nor am I cool)
Let me say up front that I am a developer and not a designer. I'm also not very cool. While I understand the techniques to create UI, I sometimes choose bad colors and fonts when putting it together (only after I did all the screen-shots for this post did a co-worker helpfully point out that there is actually a site dedicated to banning some of the fonts and colors I used . Ouch).
For those of you with artistic skill out there - please be gentle with me and focus your attention on the features and techniques I demonstrate below, rather than on the font and color choices I use. :-)
Getting Started: Creating a new Silverlight 2 Project
Expression Blend and Visual Studio 2008 share the same solution/project file format, which means that you can create a new Silverlight project in VS 2008 and then open it in Expression Blend, or you can create a new Silverlight project in Expression Blend and open it in VS. You can also have both Expression Blend and VS 2008 open and editing the same project as the same time.
Since in my previous Silverlight tutorial series I already showed how to create a new Silverlight project using VS 2008, let's use this post to show how to create a new Silverlight application using Expression Blend. To do this, simply choose File->New Project in Expression Blend, select the "Silverlight 2 Application" icon, and click ok:
This will create a new (VS-compatible) solution file and Silverlight application project:
Blend includes a full WYSIWYG designer for Silverlight 2 appli | Go |
| First Look at Silverlight 2 ... Last September we shipped Silverlight 1.0 for Mac and Windows , and announced our plans to deliver Silverlight on Linux. Silverlight 1.0 focused on enabling rich media scenarios in a browser, and supports a JavaScript/AJAX programming model.
We are shortly going to release the first public beta of Silverlight 2, which will be a major update of Silverlight that focuses on enabling Rich Internet Application (RIA) development. This is the first of several blog posts I'll be doing over the weeks and months ahead that talk in more depth about it.
Cross Platform / Cross Browser .NET Development
Silverlight 2 includes a cross-platform, cross-browser version of the .NET Framework, and enables a rich .NET development platform that runs in the browser. Developers can write Silverlight applications using any .NET language (including VB, C#, JavaScript, IronPython and IronRuby). We will ship Visual Studio 2008 and Expression Studio tool support that enables great developer / designer workflow and integration when building Silverlight applications.
This upcoming Beta1 release of Silverlight 2 provides a rich set of features for RIA application development. These include:
WPF UI Framework : Silverlight 2 includes a rich WPF-based UI framework that makes building rich Web applications much easier. In includes a powerful graphics and animation engine, as well as rich support for higher-level UI capabilities like controls, layout management, data-binding, styles, and template skinning. The WPF UI Framework in Silverlight is a compatible subset of the WPF UI Framework features in the full .NET Framework, and enables developers to re-use skills, controls, code and content to build both rich cross browser web applications, as well as rich desktop Windows applications.
Rich Controls : Silverlight 2 includes a rich set of built-in controls that developers and designers can use to quickly build applications. This upcoming Beta1 release includes core form controls (TextBox, CheckBox, RadioButton, etc), built-in layout management panels (StackPanel, Grid, Panel, etc), common functionality controls (Slider, ScrollViewer, Calendar, DatePicker, etc), and data manipulation controls (DataGrid, ListBox, etc). The built-in controls support a rich control templating model, which enables developers and designers to collaborate together to build highly polished solutions.
Rich Networking Support : Silverlight 2 includes rich networking support. It includes out of the box support for calling REST, WS*/SOAP, POX, RSS, and standard HTTP services. It supports cross domain network access (enabling Silverlight clients to directly access resources and data from resources on the web). Beta1 also includes built-in sockets networking support.
Rich Base Class Library : Silverlight 2 includes a rich .NET base class library of functionality (collections, IO, generics, threading, globalization, XML, local storage, etc). It includes rich APIs that enable HTML DOM/JavaScript integration with .NET code. It also includes LINQ and LINQ to XML library support (enabling easy transformation and querying of data), as well as local data caching and storage support. The .NET APIs in Silverlight are a compatible subset of the full .NET Framework.
Silverlight 2 does not require the .NET Framework to be installed on a computer in order to run. The Silverlight setup download includes everything necessary to enable all the above features (and more we'll be talking about shortly) on a vanilla Mac OSX or Windows machine.
The Beta1 release of Silverlight 2 is 4.3MB in size, and takes 4-10 seconds to install on a machine that doesn't already have it. Once Silverlight 2 is installed you can browse the Web and automatically run rich Silverlight applications within your browser of choice (IE, FireFox, Safari, etc).
Silverlight 2 Tutorials: Building A Simple Digg Client
To help people come up to speed with Silverlight 2, I wrote a Silverlight application and put to | Go |
| .NET 3.5 Client Product Roadmap ... A few months ago I did a .NET Web Product Roadmap blog post where I outlined some of the product plans we have to build on top of the web development features we’ve shipped with Visual Studio 2008 and .NET 3.5. Over the next few months we will also be releasing a number of enhancements specific to client development as well. We have put a lot of effort into addressing some of the biggest areas of customer feedback, while also trying to really push the envelope on the capabilities developers have when building Windows applications. All of these improvements build on top of VS 2008 and .NET 3.5, and will make .NET client development even better going forward. Below is a roadmap of some of the upcoming releases we have planned for the months ahead: Improved .NET Framework Setup for Client Applications One of the biggest asks we’ve had over the years from customers and ISVs building client applications is to make the setup and installation of the .NET Framework easier and faster. This summer we are going to ship a new setup framework for .NET that makes it easier to build optimized setup packages for client applications. This setup framework can be integrated with existing installation frameworks (for example: products like InstallShield), and enables a smaller and faster end-user setup experience of the .NET Framework. Windows Forms and WPF client applications will be able to use this setup framework to cleanly “bootstrap” getting the .NET Framework installed onto machines. The setup “bootstrap” utility will support automatically downloading the minimal set of .NET Framework packages needed to enable .NET 3.5 client applications on a machine. For example, if a user already has .NET 2.0 installed on their machine, setup will be smart enough to automatically download only the upgrade patches necessary to update .NET 2.0 to 3.5 (and not have to re-download the components already provided by .NET 2.0). This will significantly shrink the payload size of client setup programs, and speed up the installation experience. We’ll also be delivering improvements that enable a more integrated application install experience for both MSI and ClickOnce based solutions, and support a more consumer friendly user experience that is easy to build. Improved Working Set and Startup Improvements for .NET Client Applications One of the other common asks we receive is to enable .NET client applications to launch faster in “cold startup” scenarios. “Cold startup” scenarios occur when no other .NET client applications are running (or have recently run) on a machine, and require the OS to load lots of pages (code, static data, registry, etc) from disk. If you are loading a large .NET client application or library, or are using a slow disk, these cold startup scenarios can require many seconds for your application to start. This summer we are going to ship a servicing update to the CLR that makes some significant internal optimizations in how we optimize our data structures to cut down on disk IO and improve memory layout when loading and running applications. Among many other benefits, this work will significantly improve the working set and cold startup performance of .NET 2.0, 3.0 and 3.5 applications and will dramatically improve end-user experiences with .NET-based client applications. Depending on the size of the application, we expect .NET applications to realize a cold startup performance improvement of between 25-40%. Applications do not need to change any code, nor be recompiled, in order to take advantage of these improvements so the benefits are automatic. WPF Performance Improvements This summer we are also planning to release a servicing update to WPF that includes a bunch of performance optimizations that improve its text, graphics, media and data stack. These include: - Moving the DropShadow and Blur bitmap effects, which are currently software rendered, to be hardware acc | Go |
| Feb 17th Links: ASP.NET, ASP.NET AJAX, Visual Studio, .NET ... Here is the latest in my link-listing series . Also check out my ASP.NET Tips, Tricks and Tutorials page for links to popular articles I've done myself in the past. ASP.NET Top 10 Best Practices for Production ASP.NET Applications : Kyle has a nice post that summarizes a number of good best practices to follow when deploying your ASP.NET applications into production. Paging Through Data with the ASP.NET 3.5 ListView and DataPager Controls : Scott Mitchell continues his excellent series on the new ASP.NET 3.5 data control features. In this latest article he shows how to page using the ListView and DataPager controls. ASP.NET AJAX How to install and use the ASP.NET AJAX Control Toolkit in VS : Nannette Thacker has a nice post that details step-by-step how to install and use the ASP.NET AJAX Control Toolkit controls within Visual Studio or Visual Web Developer. JavaScript Stack Traces in ASP.NET AJAX and JavaScript Error Publishing using ASP.NET AJAX : Joel Rumerman has put together two nice posts that detail some god ways to capture JavaScript stack trace information, as well as to report JavaScript errors using ASP.NET AJAX. ASP.NET AJAX History Tutorials : Jonathan Carter has published a good series of tutorials that demonstrate how to use the new ASP.NET AJAX History support that we'll be shipping later this year (it is currently available in the ASP.NET Extensions CTP download). This enables you to add forward/back button navigation support within AJAX applications. Using JQuery with VS 2008 JavaScript Intellisense : One of the improvements we shipped in our recent VS 2008 Hotfix Roll-Up last week was to address issues with JavaScript intellisense support for JQuery (another popular AJAX framework). Brennan Stehling, James Hart, and Lance Fisher have done blog posts recently that discuss how to enable even richer JQuery intellisense inside VS 2008 using intellisense-friendly JQuery libraries that are referenced while coding (and then swapped out for the real library at runtime). You can read their blog posts about how this works here and here and here . ASP.NET MVC Tip: Submitting an AJAX Form with JQuery : While on the subject of JQuery, I thought I'd link to a post in Mike Bosch's ASP.NET MVC series that shows how you can integrate JQuery in the browser on the client with the ASP.NET MVC framework on the server. Visual Studio Visual Studio Programmer Themes Gallery: Visual Studio enables you to customize the color settings of the text editor and IDE, as well as to export and import the settings (use the Tools->Import and Export Settings menu to do this). Scott Hanselman has a great post that provides previews of a bunch of cool pre-built themes that people have published that you can download and use for free. Did you know: the Solution Explorer Supports Type-Ahead Selection : Sara Ford has another nice post in her series on Visual Studio tips and tricks. This post talks about a shortcut you can use to quickly select files in the solution explorer. Code Profiler Analysis in VS 2008 : Maarten Balliauw has a nice post that describes how to use the code profiling features in the Developer edition of Visual Studio Team System to analyze code performance. Visual Studio Team System 2008 Database Edition Power Tools : Greg Duncan posts about the new power tools download that has been released by Microsoft and which delivers a bunch of cool new database development features for the Database editions of Visual Studio Team System. Japanese Release of VS 2008 Web Deployment Projects : Late last month I announced the release of the VS 2008 Web Deployment Project support. This past week the team also released a localized Japanese version of it. Note: you can read a Japanese translated version of my blog here (thanks Chica!). .NET LINQ to JSON , LINQ to SharePoint , LINQ to Active Directory , LINQ to TerraServer , LINQ to FlickR : Just a few of the new LINQ providers now available | Go |
| ASP.NET MVC Framework Road-Map Update ... This past December we released the first preview of a new ASP.NET MVC Framework as part of the ASP.NET 3.5 Extensions CTP Release . I also wrote a number of blog posts that provide more detail on what the ASP.NET MVC framework is and how you can optionally use it: Introducing the ASP.NET MVC Framework ASP.NET MVC Tutorial (Part 1) ASP.NET MVC Tutorial (Part 2: Url Routing) ASP.NET MVC Tutorial (Part 3: Passing ViewData from Controllers to Views) ASP.NET MVC Tutorial (Part 4: Handling Form Edit and Post Scenarios) We've had great feedback on the framework since then, and had a ton of downloads and excitement around it. One of the common questions people have asked me recently is "when will a new build be released and what will be in it?". The below post provides a few updates on what the ASP.NET MVC feature team has been working on, and some of the new features that will be available soon. I'm going to do a separate blog post in the future that will cover the new ASP.NET Dynamic Data and ASP.NET AJAX feature work that is progressing along nicely as well. All of these features (ASP.NET MVC, ASP.NET Dynamic Data, and the new ASP.NET AJAX improvements) will ship later this year and work with VS 2008 and .NET 3.5. Upcoming ASP.NET MVC MIX Preview Release We are planning to release the next public preview of ASP.NET MVC at the MIX 08 conference in a few weeks. This build will be available for anyone on the web to download (you do not need to attend MIX to get it). We have incorporated a lot of early adopter feedback into this release. Below are some of the improvements that will appear with this next preview release: 1) The ASP.NET MVC Framework can be deployed in the \bin directory of an app and work in partial trust The first ASP.NET MVC preview release required a setup program to be run on machines in order for the System.Web.Mvc.dll assembly to be registered in the machine's GAC (global assembly cache). Starting with this upcoming preview release we will enable applications to instead directly reference the System.Web.Mvc.dll assembly from the application's \bin directory. This means that no setup programs need to be run on a sever to use the ASP.NET MVC Framework - you can instead just copy your application onto a remote ASP.NET server and have it run (no registration or extra configuration steps required). We are also doing work to enable the ASP.NET MVC framework to run in "partial/medium trust" hosting scenarios. This will enable you to use it with low-cost shared hosting accounts - without requiring the hosting provider to-do anything to enable it (just FTP your application up and and it will be good to run - they don't need to install anything). 2) Significantly enhanced routing features and infrastructure One of the most powerful features of the ASP.NET MVC framework is its URL routing engine (I covered some of these features here ). This upcoming ASP.NET MVC preview release contains even more URL routing features and enhancements. You can now use named routes (enabling explicit referencing of route rules), use flexible routing wildcard rules (enabling custom CMS based urls), and derive and declare custom route rules (enabling scenarios like REST resources mappings, etc). We have also factored out the URL routing infrastructure from the rest of the MVC framework with this preview, which enables us to use it for other non-MVC features in ASP.NET (including ASP.NET Dynamic Data and ASP.NET Web Forms). 3) Improved VS 2008 Tool Support The first ASP.NET MVC preview had only minimal VS 2008 support (basically just simple project template support). This upcoming ASP.NET MVC preview release will ship with improved VS 2008 integration. This includes better project item templates, automatic project default settings, etc. We are also adding a built-in "Test Framework" wizard that will automatically run when you create a new ASP.NET MVC Project via the File->New Pr | Go |
| VS 2008 Web Development Hot-Fix Roll-Up Available ... One of the things we are trying to do with VS 2008 is to more frequently release public patches that roll-up bug-fixes of commonly reported problems. Today we are shipping a hot-fix roll-up that addresses several issues that we've seen reported with VS 2008 and Visual Web Developer Express 2008 web scenarios. Hot Fix Details You can download this hot-fix roll-up for free here (it is a 2.6MB download). Below is a list of the issues it fixes: HTML Source view performance Source editor freezes for a few seconds when typing in a page with a custom control that has more than two levels of sub-properties. “View Code” right-click context menu command takes a long time to appear with web application projects. Visual Studio has very slow behavior when opening large HTML documents. Visual Studio has responsiveness issues when working with big HTML files with certain markup. The Tab/Shift-Tab (Indent/Un-indent) operation is slow with large HTML selections. Design view performance Slow typing in design view with certain page markup configurations. HTML editing Quotes are not inserted after Class or CssClass attribute even when the option is enabled. Visual Studio crashes when ServiceReference element points back to the current web page. JavaScript editing When opening a JavaScript file, colorization of the client script is sometimes delayed several seconds. JavaScript IntelliSense does not work if an empty string property is encountered before the current line of editing. JavaScript IntelliSense does not work when jQuery is used. Web Site build performance Build is very slow when Bin folder contains large number of assemblies and .refresh files with web-site projects. Installation Notes For more information on how to download and install the above patch, please read this blog post here . In particular, if you are using Windows Vista with UAC enabled, make sure to extract the patch to a directory other than "c:\" (otherwise you'll see an access denied error). To verify that this hot-fix patch successfully installed, launch VS 2008 and select the Help->About menu item. Make sure that there is an entry that says ‘Hotfix for Microsoft Visual Studio Team System 2008 Team Suite – ENU (KB946581)’. If you ever want to remove the patch, go to Control Panel -> Add/Remove Programs and select “Hotfix for Microsoft Visual Studio 2008 – KB946581” under Microsoft Visual Studio 2008 (or Visual Web Developer Express 2008) and click “Remove". Summary Obviously it goes without saying that we would have liked to have shipped without any bugs. Hopefully this hot-fix enables you to quickly solve them if you are encountering them. Thank you to those who helped us identify the causes of these issues, as well as to the group of customers who have helped us verify the above fixes the last few weeks. Note: If you do encounter issues with VS 2008 features for web development in the future, I recommend always asking for help in the VS 2008 Forum on www.asp.net . The VS Web Tools team actively monitors this forum and can provide help. Hope this helps, Scott | Go |
| ASP.net.com Community Links |
| ASP.NET MVC ... Is the new MVC pattern right for you?
ASP.NET MVC Preview 2 provides Model-View-Controller routing and testing improvements as well as the first Visual Studio 2008 template support for MVC development in the IDE and Dynamic Data enhancements. | Go |
| Virtual Earth Meets SQL Server 2008 and ASP.NET AJAX ... In this tutorial we'll analyze Microsoft Virtual Earth, the new SQL Server 2008 GEOGRAPHY data type and ASP.NET AJAX. We'll build a database of longitude and latitude records for specific locations, we'll then use ASP.NET AJAX and Virtual Earth to exploit these locations. | Go |
| ASP.NET AJAX Best Practices ... This article demonstrates AJAX best practices based on ASP.NET AJAX. | Go |
| Sorting a GridView bound to Custom Data Object ... This article presents a technique for sorting a GridView populated from a list of custom data objects. It relies on the ViewState and does not require additional calls to the database. | Go |
| GridView Tips and Tricks using ASP.NET 2.0 ... The article discusses ten tips and tricks that you can use while using the GridView control. | Go |
| Getting Started with the ASP.NET MVC Framework ... We have made a long journey from classic ASP to ASP.NET. But the journey is far from over. ASP.NET framework introduced code behind model which eliminated the spaghetti code written in classic ASP. Although the code behind model made the life of an ASP.NET developer comfortable but it was far from being perfect. The biggest drawback was not able to test the code written in the code behind. The model was also dependent on the ViewState and Postback which introduced many other issues related to web programming. Recently, Microsoft released the CTP version of the ASP.NET MVC framework that solves some of these issues. In this article we are going to take a look at the different aspects of the MVC framework by creating a small application. | Go |
| Accessing data using Language Integrated Query (LINQ) in ASP.NET WebPages – Part 2 ... Part 2, sequel and the last of the article Accessing data using Language Integrated Query(LINQ) in ASP.NET WebPages - Part 1 explains how to create entity classes to represent SQL Server database and tables using Object Relational Designer and display data in a web page using LinqDataSource control. | Go |
| Working with ADO.NET Schema APIs ... In majority of data driven applications developers deal with SQL queries that select, insert, update or delete data from the database. However, at times you need to retrieve schema information from the database. Suppose you are building applications that performs data import and export between two or more databases. As a good solution you would want to retrieve table schema at runtime rather than hard coding it. Luckily, ADO.NET provides a set of classes that allow you to query database schema. In this article I will illustrate how these classes work. | Go |
| Client Application Services: Getting Started ... Client Application Services simplifies the access to ASP.NET Application Services and thus helps in managing the user information, authentication, and authorization at a common place for both Web and Windows-based applications. | Go |
| Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 3 ... In the third part of this series, Keyvan talks about the data model in his simple blogging engine. He shows some concepts related to the LINQ side of the data model to retrieve data for the blogging engine in controllers and pass them to views with the help of screenshots and source code. | Go |
| CodeProject.com ASP Links |
| XAML and Silverlight ... What is XAML and its basics | Go |
| A FREE and SIMPLE .NET weather control you can customize (VB) ... A free, simple, fully customizable weather control that provides current weather and forecast data from weather.com. Includes caching. | Go |
| Jigsaw Puzzle Game using Ajax Drag and Drop (ASP.NET 2.0 AJAX Futures November CTP) ... Jigsaw Puzzle Game using Ajax Drag and Drop (ASP.NET 2.0 AJAX Futures November CTP) | Go |
| Light Speed Inline Editing Using ASP.NET AJAX and Web Services. Part I. ... javascript+AJAX solution for inline edititng in grid. | Go |
| Login/SignUp Screen Using Ajax ModalPopup Extender ... How to Implement Login/Signup Screen Using Ajax ModalPopup Extender | Go |
| Extending DataPager: Creating a google analytics data pager ... The GooglePagerField webcontrol extends the DataPager webcontrol to create a google analytics pager looks like. | Go |
| AsynchronousProcessing ... An easier way to asynchronously process web page requests | Go |
| Index XML Documents with VTD-XML ... Introduce a simple, efficient, human-readable XML index called VTD+XML | Go |
| Scrolling Data Pagination Using Ajax(extjs), Json(jayrock) and Linq. ... Combine scrollbar events, json rpc calls and linq to create a fluid, fast and "no click" paginated data grid. | Go |
| Schemaless C#-XML data binding with VTD-XML ... Agile, efficient XML data binding without schema | Go |
| Google Maps in HTML, ASP.NET, PHP, JSP etc. with ease ... The Article will guide you with complete knowledge of how to add a google map in your webpage with knowledge of JAVASCRIPT, Use of Geocoder, Use of InfoWindow, Use of Marker, Tabbed Markers, Maximising marker, Creating context menu in your map | Go |
| Silverlight Super TextBox (ComboBox, Masked TextBox and More) ... Supplementing the Silverlight 2.0b1 Controls | Go |
| VTD-XML: XML Processing for the Future (Part II) ... Reveal XML processing issue #1 and explain why document-centric XML Processing is the future | Go |
| JavaScript Virtual Keyboard ... This article presents a Virtual Keyboard - an important addendum to the library of usability tools. | Go |
| DotNetSlackers.com Links |
| What Does the OutputCache Directive Do on the Client? ... This was a question that was raised in my Front-End Performance presentation yesterday and I honestly did not know. So I came home last night and did a quick test by setting an OutputDirective on a page for 60 seconds. <%@ OutputCache Duration="60"...(read more)... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Flash ASP.NET AdRotator using Database ... Implement ASP.NET Adrotator using Flash and feteching ads from database.... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Cache sharing between sites ... There's been some debate recently about good ways that we could enable web sites to share the browser cache in the future. The problem is that popular JavaScript frameworks currently end up being downloaded several times from different sites that use them and this is a great waste of resources. Of course, there are some ways to achieve re-use of scripts across sites today by hosting those frameworks in a central location, but that is an expensive thing to do for framework developers, most of which... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| What`s happening with Subtext? ... If you subscribed to subtextbuild twitter feed or added Subtext build server to the list of CI server you are monitoring with CCTray, or better, the CCNET Monitor gadget for Vista you might have noticed that the number of builds raised a bit in the latest days: the reason is that finally the Subtext team is having a bit more spare time than before and we are planning to release Subtext vNext pretty soon with some exciting new features.
subtext
... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Who Makes the Fastest ASP.NET Datagrid? ... If you visit the sites of the major ASP.NET component vendors, you'll discover many claims about the richness, flexibility, ease-of-use, attractive design, and so on. However, when it comes to a datagrid and large datasets, eye-candy isn't enough. Web...(read more)... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Extending DataPager: Creating a google analytics data pager ... The GooglePagerField webcontrol extends the DataPager webcontrol to create a google analytics pager looks like.... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Adding Filter Action to FileUpload Control of ASP.NET 2.0 ... In this article, Soyuj explains the logic to implement the ASP.NET 2.0 FileUpload Control for adding the ability to filter files. After a brief introduction, he discusses both the client and server side approaches with the help of source code. At the end of the article Soyuj also provides a few useful references to learn more about the discussed topic. Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Making nested ASP.NET applications work ! ... Have you ever tried to set up a web site and use 2 popular ASP.NET applications ? Did you get THIS ? I did. I set up BlogEngine.net in c:\inetpub\wwwroot - it worked fine ! Then I set up ScrewTurnWiki in c:\inetpub\wwwroot\wiki. Now, ScrewTurnWiki is really simple to install and it's always worked for me before but this install failed (though as you'll see the problem is ASP.MET and the applications.) The error messages that I was getting when trying to load the wiki were about not being... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| MVC with Visual Basic video series ... Bill Burrows has created a series
of videos on MVC based on Scott
Guthrie's MVC tutorialposts (which are all in C#) but using VB instead.
I was surprised to find a pointerto my
MVC post as a "rare example" of MVC with VB (and it's only one little post so
I found that to be sad) so it's great to have a leg up for VB developers who find
it hard to try to learn someting that is VERY new and convert the C# syntax in their
brain at the same time.
Here's the list of topics covered
An Overview of the... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Implementing a Session Timeout Page in ASP.NET ... In this article, Steve walks through the steps required to implement a Session Logged Out page that users are automatically sent to in their browser when their ASP.NET session expires. He examines each step with the help of detailed explanation supported by relevant source code. Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Telerik Delivers Next Generation ASP.NET UI Components ... To build truly next generation websites, you need UI components that give you the power and flexibility to harness the speed of Ajax and rich experience of client-side programming- all without requiring you to write any JavaScript. This White Paper will show you how everything you need to successfully create ASP.NET apps that pass todays Web 2.0 standards are just a free download away from being at your fingertips. Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Role Based Forms Authentication in ASP.NET 2.0 ... Using Role based forms authentication, we can restrict users of the site to accessing certain resource if they are not part of a particular role. In this article, Satheesh demonstrates how to build sites with this type of authentication. He provides a short overview of various Login Controls and Providers and then discusses a scenario with detailed explanation of various aspects of the sample application with screenshots and source code. Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Graffiti CMS First Impressions. ... I love CMS applications! I've played with more than a hundred free and commercial CMSs written in VB, C#, PHP, Python, Perl, Ruby, you name it ! It's taken me a while to put Graffiti through it's paces, but I did so last weekend. Here is a quick list of my first impressions. PROS Install is a SNAP. The BlogML import facility imported my hundreds of posts flawlessly. The administrative user interface is intuitive. It's FAST The FREE version is not crippled (just limited... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| Graffiti CMS First Impressions. ... I love CMS applications! I've played with more than a hundred free and commercial CMSs written in VB, C#, PHP, Python, Perl, Ruby, you name it ! It's taken me a while to put Graffiti through it's paces, but I did so last weekend. Here is a quick list of my first impressions. PROS Install is a SNAP. The BlogML import facility imported my hundreds of posts flawlessly. The administrative user interface is intuitive. It's FAST The FREE version is not crippled (just limited... Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here . | Go |
| ASP.NET.com Links |
| It's not SOA it's IT 2.0 ... When you’re coming to implement SOA for the first time you probably focused on the application and technology aspects, but as you drill deeper and deeper into it you’ll found out that going through SOA is actually changing every aspect that your IT department is working. I personally think that we shouldn’t call it SOA any more, That’s IT 2.0!
If you split IT into four main domains you’ll find out that each domain will be changed once you start to implement SOA. In the business domain you’ll experience changes in the way that you model the business as well as need for more deeply involvement of business side of the enterprise in the work that you are doing. SOA will also introduce new roles with new skills that you’ll need to adopt as well as new training models for your customers. And last but not least SOA introduce new concepts such as SaaS and Cloud Computing that might infect the business and the way your IT is working.
I didn’t start from the business by chance. The reason that I did it is because I believe that the business is the cause for SOA, although not from the reason that you’re thinking right now. As far as I can see it the business will be perform with or without systems. It has been done in the past (and I know several good examples even today J ). With or without IT businesses are using information to do their work. IT helps organization to manage and process information more efficiently.
Business are complicated and dynamic and they become more and more complicate and dynamic. So if IT manage information and information derived from the business any change in the business reflects IT. I believe that we can see this influence over the time. We had few major changes in IT, from Main Frames to Clients Server model, WEB application and now … Yep, SOA. What I found out is that those IT waves are consist efforts of the IT to manage to solve the business problems, but without any real success.
One of the lessons that we need to learn from that is the need to better know our enterprise information. We need to model this information into conceptual and logical models, we need to agree with business guys who is responsible for information, we need to set which information should be available 24*7, we need to agree who can see and manipulate Information. But the most important one is the need to understand that Information is the basic building blocks for our IT work.
It goes without saying that there are many changes in the way that we’re designing, developing and maintaining applications. New design methodologies should be in place both for analysis and designing of systems, as well as developing methodologies of systems. The technology domain introduce new technologies needed to support SOA, such as ESB or SOA metadata technologies. SOA also introduce new demands that out IT infrastructure should take in account, like our cooperate bandwidth.
There are also changes in what I call 3 rd dimension aspect such as the way we’re doing governance, being complaint to law and regulation, enforcing security and many other policies.
I didn’t went through all of the changes but it clear enough that we can call it IT 2.0. if this change is so fundamental it probably very hard to be done. Well, that’s true and this is the right place to mention Enterprise Architecture as a tool that might help you. Want to learn more about it? Come to hear me on the upcoming “The Open Group” convention in Glasgow. | Go |
| Unity 1.0 Released into the Wild ... As Chris Tavares mentioned in his blog , Unity 1.0 has been released a couple of days earlier than the April 7th release date mentioned by Grigori Melnik earlier. Scott Densmore also announced this as well as working on porting the inteception from ObjectBuilder2 which I talked about earlier in some of my Unity and IoC containers posts. Looking forward to that post as we've shared some emails on the subject.
Speaking of which, I'm going to be a busy man indeed with my upcoming speaking schedule on IoC containers, not necessarily Unity in particular, but all of them, the background and decoupling your applications. Here is the complete schedule for this month:
RockNUG - April 9th
CMAP Code Camp - April 12th
CMAP Architecture SIG - April 15th
I hope to contribute some at ALT.NET Open Spaces, Seattle as well on a few subjects and DC ALT.NET on April 23rd as well. Should be a great time and feedback is always appreciated. | Go |
| SQL Timestamp vs WCF ... In my previous post (LINQ to SQL in multi layered + service apps ), I mentioned how LINQ to SQL can be used in WCF apps but how to you deal with concurrency checking? One way is to use a Timestamp column in your tables. This is a binary type so how will WCF deal with that?
LINQ to SQL maps the SQL Timestamp type to the System.Data.Linq.Binary type. If you add a DataMember attribute to a System.Data.Linq.Binary field, it will work. WCF will not choke on that. So what does the client sees? Something like this: Service1.Binary.
This whole thing may leads to a few problems:
Binary stuff is not very interoperable
Service1.Binary != System.Data.Linq.Binary
One solution is to convert the info from Binary to String. Andrew Siemer posted a couple of extension methods that allow you to do just that. Check it out:http://geekswithblogs.net/AndrewSiemer/archive/2008/02/11/converting-a-system.data.linq.binary-or-timestamp-to-a-string-and-back.aspx
Simple and easy and you can convert the data right into your LINQ to SQL queries. | Go |
| LINQ to SQL: Returning Complex Objects (Performance Problems?) ... In my previous post , one reader commented that the proposed LINQ query would be utterly slow so I did a quick unscientific showdown.
In the left corner: the query returning complex objects from anonymous types:var q = from o in ctx.Orders where o.CustomerID == id select new { Detail = o.Order_Details, CustomerID = o.CustomerID, OrderDate = o.OrderDate, OrderID = o.OrderID, ShippedDate = o.ShippedDate, ShipCity = o.ShipCity };
In the right corner: the query returning complex objects from POCOs:var q = from o in ctx.Orderswhere o.CustomerID == idselect new TransportObjects.Northwind.Order { Detail = o.Order_Details.Select(item => new TransportObjects.Northwind.OrderDetail { ProductID = item.ProductID }).ToArray(), CustomerID = o.CustomerID, OrderDate = o.OrderDate, OrderID = o.OrderID, ShippedDate = o.ShippedDate, ShipCity = o.ShipCity};
The weapons: 50,000 orders each having 10 order details rows meaning 500,000 objects.
The result: it's a tie!
Yep, both queries returned the results in about 2 seconds using SQL Server Express 2005 locally (no layers, no WCF etc) | Go |
| More Rain = Better Developer ... I think I figured out why Seattle is such a hot spot for technical innovation: it rains a lot. Raleigh's been having one of those patterns where it seems to be raining every weekend lately. Usually that's bad news but we're emerging from a drought so I'm not going to complain. There's only so much you can do when it's raining so I spent the weekend learning how to use Subsonic and the Ajax Control Toolkit's Cascading Dropdown Extender . And then I figured out how to use both of them together. Subsonic is a DAL code generator. Usually when I hear the phrase 'code generator' I shudder. I've dealt with some pretty nightmarish code generation tools in my years of development. Subsonic has really made me rethink how I view code generation, at least for the DAL. It is surprisingly easy to use and and I really like their Query Tool; it's very T-SQL orientated. The fast track to learning Subsonic is viewing and practicing along with their tutorial web casts. The best ones to start off with are the Getting Started and Database Query Tool web casts. As the rain continued I caught the web casts for the Ajax Toolkit's Cascading Dropdown Extender. The basics are covered in a web cast that binds to an XML file data source . There is also a new web cast explaining how to bind to a SQL data source. After watching both of them I was able to do the data binding via Subsonic. Maybe that should be a future blog post for me? So anyway, thanks to the rain and some web casts I'm a little smarter after this weekend. Sadly, it also helped that my Red Sox were swept by Toronto during this weekend's series. I just picked up the MLB package on TV for the season but couldn't watch the slaughter. So that meant more time to watch web casts; oh the fun! I hope next weekend is sunny. | Go |
| Open Source Panel Discussion at DevTeach, Vancouver ... --better late than never--
Back in December I participated in a recording of the .NET Rocks! Show with Carl and Richard. The topic was a discussion panel on Open Source.
Here is the url for the page:
http://www.dotnetrocks.com/default.aspx?showNum=296
Show #296 | 12/6/2007 (77 minutes) Open Source Panel Discussion at DevTeach, Vancouver Carl and Richard host a panel discussion on open source software at the DevTeach developer conference in Vancouver, BC. Panelists: Rod Paddock, Shaun Walker, Rob Chartier, and Sara Ford. | Go |
| Fuzzy Task List released to CodePlex ... I've added a few more features to the Fuzzy Task List so that it's now approaching the point where it's usable. The code's been cleanup up and released to CodePlex.
Fuzzy task lists are useful for kinds of tasks that don't have fixed times, such as:
getting a hair cut
scheduling your dentist appointment
keeping in touch with old friends
Unlike the actual appointment for the dentist - 4:45pm on Tuesday, the reminder to schedule the appointment doesn't really work for these kind of activities. There's no impact if you miss the date by a few days and often there are more important things to do. The fuzzy task list solves that problem.
Fuzzy Task List CodePlex project site
The project site has the code in source control and .rar package. You can also install a ClickOnce preview.
If you'd like to contribute, just drop me a note. | Go |
| Fast page loading by moving ASP.NET AJAX scripts after visible content ... ASP.NET ScriptManager control has a property LoadScriptsBeforeUI , when set to false , should load all AJAX framework scripts after the content of the page. But it does not effectively push down all scripts after the content. Some framework scripts, extender scripts and other scripts registered by Ajax Control Toolkit still load before the page content loads. The following screen taken from www.dropthings.com shows several script tags are still added at the beginning of <form> which forces them to download first before the page content is loaded and displayed on the page. Script tags pause rendering on several browsers especially in IE until the scripts download and execute. As a result, it gives user a slow loading impression as user stares at a white screen for some time until the scripts before the content download and execute completely. If browser could render the html before it downloads any script, user would see the page content immediately after visiting the site and not see a white screen. This will give user an impression that the website is blazingly fast (just like Google homepage) because user will ideally see the page content, if it's not too large, immediately after hitting the URL. Figure: Script blocks being delivered before the content From the above screen shot you see there are some scripts from ASP.NET AJAX framework and some scripts from Ajax Control Toolkit that are added before the content of the page. Until these scripts download, browser don't see anything on the UI and thus you get a pause in rendering giving user a slow load feeling. Each script to external URL adds about 200ms avg network roundtrip delay outside USA while it tries to fetch the script. So, user basically stares at a white screen for at least 1.5 sec no matter how fast internet connection he/she has. These scripts are rendered at the beginning of form tag because they are registered using Page.ClientScript.RegisterClientScriptBlock . Inside Page class of System.Web , there's a method BeginFormRender which renders the client script blocks immediately after the form tag. 1: internal void BeginFormRender(HtmlTextWriter writer, string formUniqueID) 2: { 3: ... 4: this .ClientScript.RenderHiddenFields(writer); 5: this .RenderViewStateFields(writer); 6: ... 7: if (this .ClientSupportsJavaScript) 8: { 9: ... 10: if (this ._fRequirePostBackScript) 11: { 12: this .RenderPostBackScript(writer, formUniqueID); 13: } 14: if (this ._fRequireWebFormsScript) 15: { 16: this .RenderWebFormsScript(writer); 17: } 18: } 19: this .ClientScript.RenderClientScriptBlocks(writer); 20: }
Figure: Decompiled code from System.Web.Page class
Here you see several script blocks including scripts registered by calling ClientScript.RegisterClientScriptBlock are rendered right after form tag starts.
There's no easy work around to override the BeginFormRender method and defer rendering of these scripts. These rendering functions are buried inside System.Web and none of these are overridable. So, the only solution seems to be using a Response Filter to capture the html being written and suppress rendering the script blocks until it's the end of the body tag. When the </body> tag is about to be rendered, we can safely assume page content has been successfully delivered and now all suppressed script blocks can be rendered at once.
In ASP.NET 2.0, you to create Response Filter which is an implementation of a Stream. You can replace default Response.Filter with your own stream and then ASP.NET will use your filter to write the final rendered HTML. When Response.Write is called or Page' s Render method fires, the response is written to the output stream via the filter. So, you can intercept every byte that's going to be sent to the client (browser) and modify it the way you like. Response Filters can be used in variety ways to optimize Page output like stripping off all white spaces or doing some formatting on the generated content, or manipulating th | Go |
| ASP.NET Tips: How to capture a dump ... There are multiple ways to capture a dump. There are some examples discussed in my previous post, HOWTO- Capture a dump on a specific managed exception . You can just use DebugDiag to capture a dump. The easiest way in DebugDiag is to Read More......(read more ) | Go |
| SyntaxHighlighter Plugin for Tinymce WYSIWYG Editor ... SyntaxHighlighter is an incredible code syntax highlighting tool. It's 100% Java Script based and it doesn't care what you have on your server. I believe any IT blog should have it. I needed to use this tool in my site, I use tinymce WYSIWYG, so I said this tool must work on tinymce.
Geoff Bowers pointed out that you need to wrap the code inside textarea . I quote this from his blog
“One of the great features of tinyMCE is the way it tries to clean up mangled HTML. It's not perfect but it does a bang up job. One of its approaches to this problem is to strip out all HTML elements it doesn't consider to be valid. This typically includes textarea by default.You can add to the valid elements in tinyMCE by adjusting the config slightly. Make sure you include all the relevant attributes you might need"
Since I can’t ask my site visitors to add the code every time they post a snippet of a code, so I wrote a plug-in for tinymce. This plug-in works only on tinymce 2.X. I will work to provide support for tinymce 3.X very soon. To get it working you need first to download SyntaxHighlighter and then follow the installation steps. Then follow extract the attached file into the tinymce plugins folder. Then in the tinymce init function make sure you include the Bold lines.
<script language="javascript" type="text/javascript"> tinyMCE.init({ mode : "textareas", theme : "advanced", theme_advanced_toolbar_location : "top", auto_resize:false, extended_valid_elements: "textarea[name|class|cols|rows]", remove_linebreaks : false, width:720, plugins : 'preview,CodeHighlighting' , theme_advanced_toolbar_align : "right", theme_advanced_buttons1_add : " fontselect,fontsizeselect,zoom", theme_advanced_buttons2_add : "preview,separator,forecolor,backcolor", theme_advanced_buttons3_add_before : "tablecontrols, CodeHighlighting " });</script>
This is the popup screen for the CodeHighlighting plugin.
Hope this helps | Go |