Project Description |
NuGet Gallery Listing
Resuming Action Results for MVC provides a similar implementation as the standard FileResult ActionResult objects but with the intelligence to detect range requests and respond appropriately with no need to write a single extra line of code.
This project is a replacement for my
MediaStreamingMVC project. That project was an experiment in trying to solve a problem I'd seen posted on StackOverflow. In the time since I originally began that project I've become more familiar with MVC. Many of my design assumptions were unnecessary
and I saw many opportunities to simplify the project and make it behave more like ASP.NET MVC does. Unfortunately I saw no easy way to retain compatibility with the old library. Because of that I decided trying to update the existing project would lead to
an even bigger mess. Thus this project was born.
The old project will not disappear. While it is much larger and a bit more complicated, it does actually provide a little more functionality. The feedback I received from a few people seemed to indicate that functionality was not used but that doesn't really
mean nobody was using it.
My goals for this project are the same:
- Respond to requests from iOS devices (Apple iPhone, iPad, iPod Touch) and allow them to play streamed media
- Allow resuming-capable clients to resume downloads that were dynamically served
- Be easy to integrate and use in the ASP.NET MVC framework (assuming .NET 3.5 or greater)
I've added these additional design goals:
- Be as consistent as possible with the existing MVC functionality.
- Be as unobtrusive to the developer as possible; transparent even.
I believe this incarnation lowers the threshold of usage since it mimics the existing FileResult actions provided by MVC and completely handles -- without intervention -- the processing of requests, preconditions and handling the output. The initial
source check in was put through similar tests I used on the old library and it passed them all and even exceeded the performance in a couple areas. This is directly attributable to the streamlined design approach.
As always I am eager to get feedback on how the library is used, what can be improved, what are sticking points, etc.