BusinessRx Community

Dedicated to the advancement of software, technology and the people who devote their lives to it.

Welcome to BusinessRx Community Sign in | Join | Help
in Search

BusinessRx Reading List

These blog entries are written by industry experts and leaders. We consider this content to be a good read for any software developer or web technologist.

Browse by Tags

All Tags » IIS7 » Silverlight » .NET   (RSS)

  • 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/year 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 configuration, nor require a streaming server to be installed, in order to enable.

    The downside of using a progressive video download approach, though, is that web-servers are by default designed to download files as fast as possible.  So when a user clicks to watch a video on your site, your web-server will attempt to transmit it to the client as fast as possible.  This is fine if the user decides to watch the entire video.  But if the user stops watching the content half way through the video (or navigates to a different page), you will have downloaded a bunch of video content that will never be watched.

    If the remaining un-watched video content is several megabytes (or even tens of megabytes) in size, you will end up over time spending a lot of money on bandwidth that is not benefiting your business/site at all....

    IIS 7.0 Bit Rate Throttling Module

    Last week the IIS team shipped a new free IIS 7.0 bit-rate throttling module that makes progressive video scenarios much cheaper in cost.

    The bit rate throttling module enables you to easily configure bandwidth throttling rules for any type of media content downloaded from an IIS web server (including .WMV, .MOV, .FLV and .MP3 files).

    Out of the box, the bit rate throttling module causes IIS to quickly transmit a burst of initial media content when a file is requested.  By default the rules are set to look at the mime-type and bit-rate encoding of the file, and send as fast as possible enough of the media file to play 20 seconds of it.  Once the video client has 20 seconds of the media to play, the IIS bit rate throttling module will then throttle down the transmit rate to equal the bit-rate encoding of the file.  It will then monitor whether the video player on the client ever closes or navigates to a different video, and automatically stop the remainder of the file being sent if the user goes away.

    For example, if you are playing a 35MB video file that is encoded at a bit-rate of 500 Kbps, IIS will send a 20 second burst of the video (20 seconds @ a 500Kbps encoding == 1.25MB of content) as fast as possible to start the video client playing, and then download the remainder of the video at a download rate of only 500 Kbps (enough so that the user always has 20 seconds of video cached on the client so that they never get buffered).

    If after a minute the user gets bored and either stops the video or navigates to a new page, IIS will detect that they went away and stop transmitting the remainder of the 35MB file.  Since IIS only downloaded 80 seconds of total video in this scenario (the 60 seconds that the user watched + the 20 second buffer window), only 5MB instead of 35MB of network bandwidth ended up being used.  30MB of bandwidth savings repeated hundreds or thousands of times a day can easily translate to thousands of dollars of bandwidth savings per year....

    IIS 7.0 Bit Rate Throttling Module Download and Installation

    You can download and learn more about the IIS 7.0 bit-rate throttling module here.

    Once installed, you can click the "Bit Rate Throttling" node in the IIS admin tool:

    And then configure whatever bit-rate throttling rules you want on a per file or per file-type basis:

    The below whitepapers describe how to enable and use it more:

    Also check out Mike's post here and Vishal's post here and here for more details.

    Hope this helps make your video scenarios more cost effective,

    Scott

  • MIX08

    MIX is a Microsoft web development conference we hold in Las Vegas each year. 

    MIX tends to be a pretty fun event, both because it covers cutting edge content (we used MIX07 to announce our Silverlight plans), and also because it tends to attract a really diverse set of attendees (including both those who use Microsoft technology today, and a large % of attendees who don't).  The conference structure includes a healthy blend of sessions and interactive panels, and the layout and organization is designed to facilitate great conversations.

    This year's MIX is being held March 5th-7th in Las Vegas.  Ray Ozzie and I are both giving keynotes the first day of the event, and Steve Ballmer and Guy Kawasaki will be doing a keynote the second day of the event.

    The conference (and especially my keynote) is going to cover a lot of new web technology.  Attendees will be able to attend sessions covering:

    • IE 8
    • IIS 7.0
    • ASP.NET (including ASP.NET 3.5, ASP.NET AJAX, ASP.NET MVC, and ASP.NET Dynamic Data) 
    • VS 2008 and Expression Studio
    • WPF
    • Silverlight 2
    • And much more....

    Channel 9 recently did an interview with me where I talked about some of these new technologies.  In Part 1 of the interview I talked about IIS7, and in Part 2 of the interview I talked about ASP.NET, WPF and Silverlight 2.

    Register Soon Or You'll Miss Your Chance

    MIX is held at a smaller venue then some of our larger events like TechEd and PDC.  This gives the conference a more intimate feel (which is fun).  It also means that it sells out each year, and once it is sold out it is really sold out. 

    Last year I received about 50 emails from people begging for tickets after it was full, and many people even flew to the event hoping to somehow be let in at the door (only to be unfortunately told they couldn't get in).  Unfortunately because of size constraints (and fire marshal restrictions) once it is sold out there really are no more tickets to be had.  Even my own team members get turned away if they haven't registered in time.

    This year's registration is filling up faster than any of the previous MIX conferences.  If you want to attend I highly recommend registering really soon to ensure you can go.  You can learn more about the event and register online here.

    Hope to see some of you there - it is going to be fun....

    Scott

  • .NET Web Product Roadmap (ASP.NET, Silverlight, IIS7)

    Last week we shipped Visual Studio 2008 and .NET 3.5.  This release is a big one for .NET, and delivers a ton of new capabilities and improvements for web, client, office and mobile development.

    Over the next few months we'll be delivering a series of additional products that build on top of this VS 2008 and .NET 3.5 foundation, and make .NET development even better.  Below is a road-map of some of the upcoming initiatives and releases for .NET web development that my team is currently working on for the months ahead:

    Releasing the Source Code for the .NET Framework Libraries

    We announced last month that we'll provide the ability for developers to download and browse the source code of the .NET Framework libraries, as well as enable integrated source debugging of them using Visual Studio 2008.  You can learn more about this in my blog post here.

    We are finishing up the final deployment of the source servers that host this now, and will be publishing instructions on how to enable the integrated debugging experience within Visual Studio 2008 shortly.  I'll blog detailed steps on how to turn this feature on once it is available.

    ASP.NET 3.5 Extensions Release

    VS 2008 and .NET 3.5 include a ton of new features for ASP.NET development.  We are planning to deliver even more ASP.NET functionality next year with a "ASP.NET 3.5 Extensions" release.  The first public preview of this will be available for download next week on the web.

    Next week's ASP.NET 3.5 Extensions preview release will include:

    • ASP.NET MVC: This model view controller (MVC) framework for ASP.NET provides a structured model that enables a clear separation of concerns within web applications, and makes it easier to unit test your code and support a TDD workflow.  It also helps provide more control over the URLs you publish in your applications, and more control over the HTML that is emitted from them.  You can learn more about it from Part 1 of my ASP.NET MVC Tutorial series.  I'm hoping to find time this weekend to write and post Part 2 of the series.
    • ASP.NET AJAX Improvements: New ASP.NET AJAX features in the ASP.NET 3.5 Extensions release will include better browser history support (back/forward button integration, and server-side history management support via a new <asp:history> server control), improved AJAX content linking support with permalinks, and additional JavaScript library improvements.
    • ASP.NET Dynamic Data Support: The ASP.NET 3.5 Extensions release will deliver new features that enable faster creation of data driven web sites.  It provides a rich scaffolding framework, and enables rapid data driven site development using both ASP.NET WebForms and ASP.NET MVC.
    • ASP.NET Silverlight Support: With the ASP.NET 3.5 Extensions release we'll deliver support for easily integrating Silverlight within your ASP.NET applications.  Included will be new controls that make it easy to integrate Silverlight video/media and interactive content within your sites.
    • ADO.NET Data Services: In parallel with the ASP.NET Extensions release we will also be releasing the ADO.NET Entity Framework.  This provides a new modeling framework that enables developers to define a conceptual model of a database schema that closely aligns to a real world view of the information.  We will also be shipping a new set of data services (codename "Astoria") that make it easy to expose REST based API endpoints from within your ASP.NET applications.

    Silverlight 2.0 Release

    Two months ago we shipped Silverlight 1.0 for Mac and Windows, and announced our plans to deliver Silverlight on Linux.  Silverlight 1.0 is focused on enabling rich media scenarios in a browser, and supports a JavaScript/AJAX programming model.

    Next year we will be releasing a major update of Silverlight that focuses on enabling rich Internet applications.  This release will include a cross-platform, cross-browser version of the .NET Framework, and will enable a rich .NET development platform in the browser.  Earlier this year we shipped an early Alpha containing some of the basic functionality of the release.  Our next public preview will add considerably to this feature set.  Some of the new .NET specific features in the next public Silverlight preview will include:

    • WPF UI Framework: The current Silverlight Alpha release only includes basic controls support and a managed API for UI drawing.  The next public Silverlight preview will add support for the higher level features of the WPF UI framework.  These include: the extensible control framework model, layout manager support, two-way data-binding support, and control template and skinning support.  The WPF UI Framework features in Silverlight will be a compatible subset of the WPF UI Framework features in last week's .NET Framework 3.5 release.

    • Rich Controls: Silverlight will deliver a rich set of controls that make building Rich Internet Applications much easier.  The next Silverlight preview release will add support for core form controls (textbox, checkbox, radiobutton, etc), built-in layout management controls (StackPanel, Grid, etc), common functionality controls (TabControl, Slider, ScrollViewer, ProgressBar, etc) and data manipulation controls (DataGrid, etc).

    • Rich Networking Support: Silverlight will deliver rich networking support.  The next Silverlight preview release will add support for REST, POX, RSS, and WS* communication.  It will also add support for cross domain network access (so that Silverlight clients can access resources and data from any trusted source on the web).

    • Rich Base Class Library Support: Silverlight will include a rich .NET base class library of functionality (collections, IO, generics, threading, globalization, XML, local storage, etc).  The next Silverlight preview release will also add built-in support for LINQ to XML and richer HTML DOM API integration.

    Previously we've been referring to this .NET-enabled Silverlight release as "Silverlight V1.1".  After stepping back and looking at all the new features in it (the above list is only a subset - there are many more we aren't sharing yet), we've realized that calling it a point release doesn't really reflect the true nature of it.  Consequently we have decided to change the name and refer to it as "Silverlight V2.0" going forward.

    We will be releasing a Beta of Silverlight 2.0 in Q1 of 2008.  This Beta will support a Go-Live license that enables developers to begin building and deploying Silverlight 2.0 applications.

    We will also be releasing a free Visual Studio 2008 tools update that provides great Silverlight 2.0 tools support within Visual Studio 2008, and enables developers to easily build Silverlight applications using any .NET language.  We will be supporting Silverlight development with both the Visual Studio 2008 Standard/Professional products, as well as with the free Visual Studio 2008 Express editions.

    I'm going to be starting a new blog tutorial series in a few weeks that discusses how to build Silverlight 2.0 applications, and show off the new features in more depth.  Stay tuned for more details soon.

    IIS 7.0

    Early next year we'll ship the final release of IIS 7.0 as part of the Windows Server 2008 release.  As I've blogged about in the past, IIS 7.0 is a major update of our web-server stack, and introduces a significantly new and improved extensibility, configuration and administration architecture. 

    One of the really cool things about IIS 7.0 is that it is all nicely integrated with the .NET Framework, and enables you to use any .NET language to extend and customize the server.  You can now easily do things in VB and C# that previously required writing a pretty gnarly C++ ISAPI.  The deployment, management and administration of web applications on the server is also now nicely unified across IIS and ASP.NET.

    We will also shortly begin sharing details of a new web application deployment framework for IIS that enables you to easily automate the deployment of web applications on either a single server or across a web farm of machines.  It will make it easy to version your web applications (including allowing you to quickly roll back to previous versions), as well as automatically provision them across multiple servers.  It also enables the full automation of deployment tasks (including via both command-line and PowerShell scripting APIs).  The combination of IIS7 with this web deployment framework will enable you to deploy and scale your ASP.NET server applications better than ever before.

    Summary

    Last week's VS 2008 and .NET 3.5 release was a huge step forward for .NET development.  The release not only delivered a ton of great new language, runtime and tool features, but even more importantly provided a really solid foundation that we'll be building upon in the months and years ahead.  Stay tuned to my blog for more details about each of the above releases.

    Hope this helps,

    Scott

  • October 25th Links: ASP.NET, ASP.NET AJAX, Visual Studio, Silverlight and IIS 7.0

    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

    • Cleanup Inactive Anonymous Users: ASP.NET 2.0 has support for an optional feature called "anonymous users" - which enables you to optionally track and store profile data for non-authenticated users visiting your sites (read K. Scott Allen's article here for more details on how this works).  Omar Al Zabir published this handy article that describes how to "clean up" this anonymous user data periodically to avoid storing it forever in your database.

    ASP.NET AJAX

    Visual Studio

    • Speed up Visual Studio 2005: Here are a bunch of useful suggestions for how you can speed up your VS 2005 IDE environment.  For other performance suggestions, please review my previous blog posts here and here.

    • SQL Database Publishing Wizard Now in VS 2008: One of the post-Beta2 features that we are adding for the final VS 2008 release is the inclusion of a SQL database publishing wizard inside Visual Studio.  This will be supported in both the free Visual Web Developer Express edition as well as the full Visual Studio, and provides an easy way to script out your database schema and data to .SQL files.  You can then copy these files to a remote hoster to deploy a database.  You can learn more about how this works from my earlier posts here and here which describes how to use a previous standalone tool with this functionality (all of this functionality is now built-in to VS 2008).

    • Convert Selected Text to a Label: Fons Sonnemans has a nice article that demonstrates a cool macro that can be used to automatically convert literal text in your .aspx files to a <asp:label> control.  A neat shortcut.

    Silverlight

    • Building Silverlight Application using .NET MIX UK Videos: The videos from the recent MIX UK conference are now live on the web and can be watched (for free) by anyone.  If you are interested in Silverlight I recommend watching my Building Silverlight Application using .NET (Part 1 and 2) talks.  You can download the slides + samples for my talks here

    • Silverlight Kids Doodler Sample: David Anson has published a neat sample that demonstrates how to build a neat Paint program in Silverlight.  Ideal for small children. :-)

    • Great Silverlight Tutorials: Gerard Leblanc has a great blog, and publishes regular blog posts on Silverlight.  Check out this list of some of some of his tutorials.

    IIS 7.0

    • Using LINQ with Microsoft.Web.Administration: Carlos from the IIS7 dev team has a really cool blog post that shows how you can use LINQ with .NET 3.5 to easily query and manipulate the new web server administration API introduced with IIS7.  For more information on this new API, you can also read an old post of mine here.

    Hope this helps,

    Scott

Powered by Community Server, by Telligent Systems
'