wireless broadband internet options

Related Articles
AT&T unsure about bidding in 700MHz auction 19 October 2007
AT&T hasn't decided whether it will bid for the highly desirable 700MHz band because it doesn't know if it can build a profitable business, given the open-access rules set for the wireless spectrum by the U.S. Federal Communications Commission in July.Calling the rules "interesting," AT&T's CEO Randall Stephenson said the company is hard at work crunching numbers and analyzing business scenarios, but hasn't reached a conclusion yet."Is there a business model there? I'm not sure if there is or not," he said Friday at the Web 2.0 Summit, where he answered questions from conference chair John Battelle and from audience members.The FCC conditions, which include open-access rules on a third of the spectrum, have been a major source of controversy.The winner of 22MHz of spectrum must allow any wireless devices to connect to the network, permitting wireless telephone customers to use handset devices from other carriers. The winning bidder also can't block or slow down wireless and Web content from competitors.Some telecom carriers wanted no conditions, while some consumer advocacy groups and Google wanted the FCC to require that winning bidders also resell the spectrum at wholesale rates to competitors, something the FCC didn't adopt.The FCC is scheduled to auction 62MHz of spectrum in the 700MHz band beginning in January. The spectrum is ideal for long-range wireless telephone and broadband services, with signals that travel up to four times farther than in higher spectrum bands."It's a huge opportunity. It's beachfront property. When it comes to buying spectrum, it's the best you're going to find for a long time," Stephenson said.Data consumption on wireless networks is growing fourfold year over year, so a company such as AT&T needs to bulk up on spectrum to keep up with the demand, he said."It's very obvious we're going to have to add to our spectrum holdings," he said.That's why AT&T earlier this month reached an agreement to buy 12MHz of high-speed wireless spectrum in the 700MHz band from Aloha Partners for $2.5 billion."It's the first time, I think, that we've ever paid $2.5 billion for a company that had no revenue," Stephenson said.The Aloha spectrum covers 196 million U.S. residents, including 72 of the 100 largest markets in the United States.In other matters, Stephenson said he was very satisfied with the iPhone deal between his company and Apple."I'm not sure I could have asked for much more out of it than what we got," he said.Asked to comment on the decision to use the slower EDGE network for the iPhone, Stephenson said it was a request from Apple CEO Steve Jobs."He wanted a broad ubiquitous data network. The EDGE network is the only data network that covers the entire United States," he said. The situation will improve as AT&T upgrades markets to 3G, he said.Stephenson acknowledged that AT&T's directory assistance business is being challenged by ad-supported options from Internet companies such as Google."We better get our advertising-supported [directory assistance] model up fast," he said, adding that AT&T is building such a service internally.On a lighter note, he said he's "envious" of Google and the success it has had with its business model. "It's a great gig if you can get it," he said.(Grant Gross in Washington, D.C. contributed with this story.)
 
Update: MetroFi, Microsoft launch Portland Wi-Fi 05 December 2006
(InfoWorld) - Portland, Oregon, became the latest city to launch a municipal wireless network, starting a free, ad-supported service featuring localized content and services from Microsoft Corp.'s MSN. The network, being built by MetroFi Inc., went live in a few central neighborhoods on Tuesday and is intended eventually to provide Internet access in 95 percent of the city's indoor and outdoor spaces. Cities and counties around the U.S. want to build wireless networks to promote business and tourism, provide Internet access to residents who can't get or afford wired broadband, or add another choice to the usual options of cable or DSL (Digital Subscriber Line). Municipalities in some other countries, including Taipei, are also part of the trend. Traditional carriers have opposed city-owned networks. But many municipalities, including Portland, are simply contracting with private service providers to build, own and operate their systems. Portland's is the first service to feature local content from MSN. It will appear on a special MSN home page for Portland that will always appear after users start up the service. When they first try to use the network, users will see a MetroFi page that asks them three anonymous demographic questions, such as whether they are male or female. Then the network will remember the client device's MAC (media access control) address, and the next time the user goes on the network, there won't be any questions, according to MetroFi. There are no plans now for services or ads that use the subscriber's physical location in the city. MetroFi has built municipal wireless networks in several cities, including Aurora, Illinois, and Cupertino, Santa Clara, Sunnyvale, San Jose, Foster City and Concord in the San Francisco Bay area. It uses mesh technology in which a Wi-Fi access point can reach the Internet partly through other access points rather than needing a direct wired connection. The service in Portland will deliver speeds comparable to DSL, according to the company. To pay for the service, banner ads about 1 inch (2.54 centimeters) deep will appear continuously at the top of the user's screen, Van Haaften said. MetroFi has already secured a handful of local sponsors and plans to add more over time. The City of Portland will act as an anchor tenant, with public-safety and other employees using the network for improved connectivity in the field. MetroFi may offer the city a special grade of service, Van Haaften said. The service became available Tuesday in Pioneer Courthouse Square and in much of the Buckman, Lloyd and Kerns neighborhoods. The network, using access points mounted on street light poles, is scheduled for completion by mid-2008. To improve reception inside homes, MetroFi recommends indoor modems from Ruckus Wireless Inc. that can amplify the signal from the service. Microsoft probably sees the project as a testbed for involvement in future municipal networks, said Craig Settles, a municipal network consultant in Oakland, California. Building ad-supported municipal networks is an inherently risky business, and having Microsoft involved might raise the profile of MetroFi networks in various cities, he said. The key to making the current Microsoft portal valuable will be producing content and services that are useful to local residents and business, Settles said. Microsoft could apply those lessons in other cities. But it might also go further and, for example, offer services over the network that are available only on Windows Mobile devices, he said.
 
ASP.NET MVC Preview 4 Release (Part 1) 14 July 2008
The ASP.NET MVC team is in the final stages of finishing up a new "Preview 4" release that they hope to ship later this week.  The Preview 3 release focused on finishing up a lot of the underlying core APIs and extensibility points in ASP.NET MVC.  Starting with Preview 4 this week you'll start to see more and more higher level features begin to appear that build on top of the core foundation and add nice productivity. There are a bunch of new features and capabilities in this new build - so much in fact that I decided I needed two posts to cover them all.  This first post will cover the new Caching, Error Handling and Security features in Preview 4, as well as some testing improvements it brings.  My next post will cover the new AJAX features being added with this release as well. Understanding Filter Interceptors Action Filter Attributes are a useful extensibility capability in ASP.NET MVC that was first added with the "Preview 2" release.  These enable you to inject code interceptors into the request of a MVC controller that can execute before and after a Controller or its Action methods execute.  This enables some nice encapsulation scenarios where you can easily package-up and re-use functionality in a clean declarative way. Below is an example of a super simple "ScottGuLog" filter that I could use to log details about exceptions raised during the execution of a request.  Implementing a custom filter class is easy - just subclass the "ActionFilterAttribute" type and override the appropriate methods to run code before or after an Action method on the Controller is invoked, and/or before or after an ActionResult is processed into a response. Using a filter within a ASP.NET MVC Controller is easy - just declare it as an attribute on an Action method, or alternatively on the Controller class itself (in which case it will apply to all Action methods within the Controller): Above you can see an example of two filters being applied.  I've indicated that I want my "ScottGuLog" to be applied to the "About" action method, and that I want the "HandleError" filter to be applied to all Action methods on the HomeController. Previous preview releases of ASP.NET MVC enabled this filter extensibility, but didn't ship with pre-built filters.  ASP.NET Preview 4 now includes several useful filters for handling output caching, error handling and security scenarios. OutputCache Filter The [OutputCache] filter provides an easy way to integrate ASP.NET MVC with the output caching features of ASP.NET (with ASP.NET MVC Preview 3 you had to write code to achieve this).  To try this out, modify the "Message" value set within the "Index" action method of the HomeController (created by the VS ASP.NET MVC project template) to display the current time: When you run your application you'll see that a timestamp updates each time you refresh the page: We can enable output caching for this URL by adding the [OutputCache] attribute to the our Action method.  We'll configure it to cache the response for a 10 second duration using the declaration below: Now when you hit refresh on the page you'll see that the timestamp only updates every 10 seconds.  This is because the action method is only being called once every 10 seconds - all requests between those time intervals are served out of the ASP.NET output cache (meaning no code needs to run - which makes it super fast). In addition to supporting time duration, the OutputCache attribute also supports the standard ASP.NET output cache vary options (vary by params, headers, content encoding, and custom logic).  For example, the sample below would save different cached versions of the page depending on the value of an optional "PageIndex" QueryString parameter, and automatically render the correct version depending on the incoming URL's querystring value: You can also integrate with the ASP.NET Database Cache Invalidation feature - which allows you to automatically invalidate the cache when a database the URL depends on is modified (tip: the best way to-do this is to setup a CacheProfile section in your web.config and then point to it in the OutputCache attribute).  HandleError Filter The [HandleError] filter provides a way to declaratively indicate on a Controller or Action method that a friendly error response should be displayed if an error occurs during the processing of a ASP.NET MVC request.  To try this out, add a new "TestController" to a project and implement an action method that raise an exception like below: By default when you point your browser at this URL, it will display a default ASP.NET error page to remote users (unless you've gone in and configured a <customErrors> section in your web.config file): We can change the HTML error displayed to be a more friendly end-user message by adding a [HandleError] attribute to either our Controller or to an Action method on our Controller: The HandleError filter will catch all exceptions (including errors raised when processing View templates), and display a custom Error view response when they occur.  By default it attempts to resolve a View template in your project called "Error" to generate the response.  You can place the "Error" view either in the same directory as your other Controller specific views (for example: \Views\Test for the TestController above), or within the \Views\Shared folder (it will look first for a controller specific error view, and then if it doesn't find one it will look in the shared folder - which contains views that are shared across all controllers). Visual Studio now automatically adds a default "Error" view template for you inside the \Views\Shared folder when you create new ASP.NET MVC Projects starting with Preview 4: When we add a [HandleError] attribute to our TestController, this will by default show remote users an html error page like below (note that it picks up the master page template from the project so that the error message is integrated into the site).  You can obviously go in and customize the Error view template to display whatever HTML and/or friendlier customer error message you want - below is simply what you get out of the box: To help developers, the default Error view template provided by the new project template in Visual Studio is written to display additional error stack trace information when you are browsing the application locally: You can turn this off either by deleting the code from the Error view template, or by setting <customErrors> to "off" inside your web.config file. By default the [HandleError] filter will catch and handle all exceptions that get raised during the request.  You can alternatively specify specific exception types you are interested in catching, and specify custom error views for them by specifying the "ExceptionType" and "View" properties on [HandleError] attributes: In the code above I'm choosing to display custom error views for SqlExceptions and NullReferenceExceptions.  All other exceptions will then use the default "Error" view template. Authorize Filter The [Authorize] filter provides a way to declaratively control security access on a Controller or Action method.  It allows you to indicate that a user must be logged in, and optionally require that they are a specific user or in a specific security role in order to gain access.  The filter works with all types of authentication (including Windows as well as Forms based authentication), and provides support for automatically redirecting anonymous users to a login form as needed. To try this out, add an [Authorize] filter to the "About" action in the HomeController created by default with Visual Studio: Declaring an [Authorize] attribute like above indicates that a user must be logged into the site in order for them to request the "About" action.  When non-logged-in users attempt to hit the /Home/About URL, they will be blocked from gaining access.  If the web application is configured to use Windows based authentication, ASP.NET will automatically authenticate the user using their Windows login identity, and if successful allow them to proceed.  If the web application is configured to use Forms based authentication, the [Authorize] attribute will automatically redirect the user to a login page in order to authenticate (after which they'll have access): The [Authorize] attribute optionally allows you to grant access only to specific users and/or roles.  For example, if I wanted to limit access to the "About" action to just myself and Bill Gates I could write: Typically for all but trivial applications you don't want to hard-code user names within your code.  Instead you usually want to use a higher-level concept like "roles" to define permissions, and then map users into roles separately (for example: using active directory or a database to store the mappings).  The [Authorize] attribute makes it easy to control access to Controllers and Actions using a "Roles" property: The [Authorize] attribute does not have a dependency on any specific user identity or role management mechanism.  Instead it works against the ASP.NET "User" object - which is extensible and allows any identity system to be used. AccountController Class I mentioned above that the [Authorize] attribute can be used with any authentication or user identity management system.  You can write or use any custom login UI and/or username/password management system you want with it. To help you get started, though, the ASP.NET MVC Project Template in Visual Studio now includes a pre-built "AccountController" and associated login views that implement a forms-authentication membership system with support for logging in, logging out, registering new users, and changing passwords.  All of the views templates and UI can be easily customized independent of the AccountController class or implementation: The Site.master template also now includes UI at the top-right that provides login/logout functionality.  When using forms-based authentication it will prompt you to login if you are not currently authenticated: And it displays a welcome message along with a logout link if you are authenticated on the site: Clicking the Login link above takes users to a Login screen like below that they can use to authenticate: New users can click the register link to create new accounts: Error handing and error display is also built-in: The AccountController class that is added to new projects uses the built-in ASP.NET Membership API to store and manage user credentials (the Membership system uses a provider API allowing any back-end storage to be plugged-in, and ASP.NET includes built-in providers for Active Directory and SQL Server).  If you don't want to use the built-in Membership system you can keep the same AccountController action method signatures, View templates, and Forms Authentication ticket logic, and just replace the user account logic within the AccountController class.  For the next ASP.NET MVC preview release we are planning to encapsulate the interaction logic between the AccountController and the user identity system behind an interface - which will make it easier to plug-in your own user storage system (without having to implement a full membership provider) as well as to easily unit test both it and the AccountController. Our hope is that this provides a nice way for people to quickly get started, and enable them to have a working end to end security system as soon as they create a new project. Testing TempData One last improvement to touch on in this first preview 4 post is some improvements being made on the Controller class that allow you to more easily unit test the TempData collection.  The TempData property allows you to store data that you want to persist for a future request from a user.  It has the semantic of only lasting one future request (after which it is removed).  It is typically used for MVC scenarios where you want to perform a client-side redirect to change the URL in the browser, and want a simple way to store scratch data. With previous ASP.NET MVC Previews you had to mock objects in order to test the TempData collection.  With Preview 4 you no longer need to mock or setup anything.  You can now add and verify objects within the Controller's TempData collection directly within your unit tests (for example: populate a controller's TempData property before calling its action method, or verify that the action updated the TempData after the action returned).  The actual storage semantics of the TempData collection is now encapsulated within a separate TempDataProvider property.  Conclusion Hopefully the above post provides a quick look at a number of the new features and changes coming with ASP.NET MVC Preview 4.  My next post on ASP.NET MVC Preview 4 will cover the new AJAX functionality that has been added, and demonstrate how to take advantage of it. Hope this helps, Scott
 
Visual Studio 2008 and .NET Framework 3.5 Service Pack 1 Beta 12 May 2008
Earlier today we shipped a public beta of our upcoming .NET 3.5 SP1 and VS 2008 SP1 releases.  These servicing updates provide a roll-up of bug fixes and performance improvements for issues reported since we released the products last November.  They also contain a number of feature additions and enhancements that make building .NET applications better (see below for details on some of them). We plan to ship the final release of both .NET 3.5 SP1 and VS 2008 SP1 this summer as free updates.  You can download and install the beta here. Important: SP1 Beta Installation Notes The SP1 beta released today is still in beta form - so you should be careful about installing it on critical machines.  There are a few important SP1 Beta installation notes to be aware of: 1) If you are running Windows Vista you should make sure you have Vista SP1 installed before trying to install .NET 3.5 SP1 Beta.  There are some setup issues with .NET 3.5 SP1 when running on the Vista RTM release.  These issues will be fixed for the final .NET 3.5 SP1 release - until then please make sure to have Vista SP1 installed before trying to install .NET 3.5 SP1 beta. 2) If you have installed the VS 2008 Tools for Silverlight 2 Beta1 package on your machine, you must uninstall it - as well as uninstall the KB949325 update for VS 2008 - before installing VS 2008 SP1 Beta (otherwise you will get a setup failure).  You can find more details on the exact steps to follow here (note: you must uninstall two separate things).  It is fine to have the Silverlight 2 runtime on your machine with .NET 3.5 SP1 - the component that needs to be uninstalled is the VS 2008 Tools for Silverlight 2 package.  We will release an updated VS 2008 Tools for Silverlight package in a few weeks that works with the VS 2008 SP1 beta. 3) There is a change in behavior in the .NET 3.5 SP1 beta that causes a problem with the shipping versions of Expression Blend.  This behavior change is being reverted for the final .NET 3.5 SP1 release, at which time all versions of Blend will have no problems running.  Until then, you need to download this recently updated version of Blend 2.5 to work around this issue. Important Update: If you previously installed a VS 2008 Hotfix, you must run the HotFix Cleanup Utility before installing the VS 2008 SP1 Beta.  Click here to download and run this. Improvements for Web Development .NET 3.5 SP1 and VS 2008 SP1 contain a bunch of feature improvements targeted at web application development.  The VS Web Dev Tools team has more details (including specific bug fix details) on some of the VS specific work here.  Below are more details on some of the work in the web-space: ASP.NET Data Scaffolding Support (ASP.NET Dynamic Data) .NET 3.5 SP1 adds support for a rich ASP.NET data "scaffolding" framework that enables you to quickly build functional data-driven web application. With the ASP.NET Dynamic Data feature you can automatically build web UI (with full CRUD - create, read, update, delete - support) against a variety of data object models (including LINQ to SQL, LINQ to Entities, REST Services, and any other ORM or object model with a dynamic data provider). SP1 adds this new functionality to the existing GridView, ListView, DetailsView and FormView controls in ASP.NET, and enables smart validation and flexible data templating options.  It also delivers new smart filtering server controls, as well as adds support for automatically traversing primary-key/foreign-key relationships and displaying friendly foreign key names - all of which saves you from having to write a ton of code. You can learn more more about this feature from Scott Hanselman's videos and tutorials here. ASP.NET Routing Engine (System.Web.Routing) .NET 3.5 SP1 includes a flexible new URL routing engine that allows you to map incoming URLs to route handlers.  It includes support for both parsing parameters from clean URLs (for example: /Products/Browse/Beverages), as well as support to dynamically calculate and generate new URLs from route registrations. This new routing engine is used by both ASP.NET Dynamic Data as well as the new ASP.NET MVC framework.  It will support both WebForms and MVC based requests.  ASP.NET AJAX Back/Forward Button History Support .NET 3.5 SP1 adds new APIs to ASP.NET AJAX to allow you to better control the history list of a browser (enabling you to control the behavior of the back/forward button of the browser). You can learn more about this feature in the article here and the screencast here. ASP.NET AJAX Script Combining Support .NET 3.5 SP1 introduces a new <CompositeScript> element on the <asp:ScriptManager> server control, which allows you to declaratively define multiple script references within it.  All the script references within the CompositeScript element are combined together on the server and served as a single script to the client, reducing the number of requests to the server and improving page load time for ASP.NET AJAX applications. The script combining feature supports both path based scripts and assembly resource based scripts, and dynamically serves up the combined scripts using the ScriptResources.axd handler. Visual Studio 2008 Performance Improvements HTML Designer and HTML Source Editor In February we released a HotFix roll-up that included a number of performance improvements and bug fixes for the VS 2008 Web Designer.  VS 2008 SP1 includes all of these fixes, as well as a number of additional performance improvements. Visual Studio 2008 JavaScript Script Formatting and Code Preferences Visual Studio has for several releases supported rich source code formatting options for VB and C# (spacing, line breaks, brace positions, etc). VS 2008 SP1 adds richer source code formatting support for JavaScript as well (both inline <script> blocks and .js files).  You can now set your Javascript coding preferences using the Tools->Options dialog: These preferences will be automatically used as you type new Javascript code in the source editor.  You can also select existing code, right-click, and choose the "Format Selection" option to apply your style preferences to existing JavaScript code.  You can learn more about this new feature here. Better Visual Studio Javascript Intellisense for Multiple Javascript/AJAX Frameworks VS 2008 includes Javascript Intellisense support in source view.  The intellisense support with the initial VS 2008 release works well with vanilla JavaScript as well as code written using the ASP.NET AJAX JavaScript type patterns.  JavaScript is a very flexible language, though, and many JavaScript libraries use this flexibility to full advantage to implement their features - sometimes in ways that prevented the intellisense engine from providing completion support. VS 2008 SP1 adds much better intellisense support for popular Javascript libraries (we specifically did work to support JQuery, Prototype, Scriptaculous, ExtJS, and other popular libraries).  You will get better default intellisense when you reference these libraries.  We are also looking at whether we can maintain additional intellisense hint files that you can download to get even better intellisense and documentation support for some of the more popular libraries. Below is an example of using a JQuery startup function with the VS 2008 SP1 JavaScript intellisense engine: Notice below how VS 2008 SP1 can now provide method argument completion even on chained JQuery selectors: Visual Studio Refactoring Support for WCF Services in ASP.NET Projects VS 2008 SP1 adds better refactoring support for WCF services included within both ASP.NET Web Site and ASP.NET Web Application Projects. If you use the refactoring support to rename the class name, interface contract, or namespace of a WCF service, VS 2008 SP1 will now automatically fix up the web.config and SVC file references to it. Visual Studio Support for Classic ASP Intellisense and Debugging Previous versions of Visual Studio included support for intellisense and debugging within classic ASP (.asp) pages.  The file and project templates to create classic ASP pages/projects hasn't been in VS for a few releases, though, and with the initial VS 2008 we incorrectly assumed this meant that people weren't still using the classic ASP support.  We heard feedback after we shipped that indeed they were.  With VS 2008 SP1 this support for classic ASP intellisense and debugging is back:   Visual Web Developer Express Edition support for Class Library and Web Application Projects The Visual Web Developer 2008 Express edition (which is free) is being updated in SP1 to add support for both class library and ASP.NET Web Application project types.  Previous versions of Visual Web Developer Express only supported ASP.NET web-site projects. Among other benefits, the support of class library and web application projects will enable ASP.NET MVC and Silverlight projects to be built with the free Visual Web Developer 2008 Express.  All of the above JavaScript, Dynamic Data, Classic ASP, and AJAX improvements work with Visual Web Developer Express as well. Improvements for Client Development .NET 3.5 SP1 and VS 2008 SP1 contain major performance, deployment, and feature improvements for building client applications.  Tim Sneath has a great blog post that talks about some of the client improvements here.  Below are more details on them: Application Startup and Working Set Performance Improvements .NET 3.5 SP1 includes significant performance improvements to the CLR that enable much faster application startup times - in particular with "cold start" scenarios (where no .NET application is already running).  Much of these gains were achieved by changing the layout of blocks within CLR NGEN images, and by significantly optimizing disk IO access patterns.  We also made some nice optimizations to our JIT code generator that allow much better inlining of methods that utilize structs. We are today measuring up to 40% faster application startup improvements for large .NET client applications with SP1 installed.  These optimizations also have the nice side-effect of improving ASP.NET application request per second throughput by up to 10% in some cases. New .NET Framework Client Profile Setup Package .NET 3.5 SP1 introduces a new setup package option for developers building .NET client applications called the ".NET Framework Client Profile".  This provides a new setup installer that enables a smaller, faster, and simpler installation experience for .NET client applications on machines that do not already have the .NET Framework installed. The .NET Framework Client Profile setup contains just those assemblies and files in the .NET Framework that are typically used for client application scenarios.  For example: it includes Windows Forms, WPF, and WCF.  It does not include ASP.NET and those libraries and components used primarily for server scenarios.  We expect this setup package to be about 26MB in size, and it can be downloaded and installed much quicker than the full .NET Framework setup package. The assemblies and APIs in the .NET Framework Client setup package are 100% identical to those in the full .NET Framework setup package (they are literally the same binaries).  This means that applications can target both the client profile and full profile of .NET 3.5 SP1 (no recompilation required).  All .NET applications that work using the .NET Client Profile setup automatically work with the full .NET Framework. A developer can indicate that the client application they are building supports both the .NET Framework Client Profile and the full .NET Framework by pulling up the project properties page for a client application within VS 2008 SP1.  Within the project properties page they can select a new checkbox that indicates it only requires those assemblies included in the .NET Framework Client Profile: VS 2008 will then ensure that the project can only reference those assemblies shipped in the client profile setup package (and it will generate a compile error if you try and use a type in an assembly not included in the client redist).  The compiled client application will then run on machines that have both the full .NET Framework installed, as well as machines that only have the .NET Framework Client Profile installed. If you have a machine that only has the .NET Framework Client Profile installed, and you try and run a .NET application on it that did not mark itself as supporting the .NET Framework Client Profile, then the CLR will refuse to run the application - and will instead prompt the end-user to upgrade to the full .NET Framework package.  This ensures that applications always run correctly - and that developers do not need to worry about missing assembly exceptions at runtime if a user tries to run an application that requires the full .NET Framework on a machine that only has the .NET Framework Client Profile installed. We believe that a large class of .NET client applications will be able to use this new .NET Client Profile setup to significantly speed up their installation, and enable a much more consumer friendly experience. New .NET Framework Setup Bootstrapper for Client Applications .NET 3.5 SP1 introduces a new "bootstrapper" component that you can use with client applications to help automate making sure that the right version of the .NET Framework is installed.  The bootstrapper component can handle automatically downloading and installing either the .NET Framework Client Profile or the full .NET Framework Setup Package from the Internet if your machine doesn't have either of them installed.  The boostrapper can also automatically handle upgrading machines that have a previous version of the .NET Framework installed.  For example, if your machine already has .NET 3.0 installed, and your application requires .NET 3.5, the bootstrapper can optionally download just the update files needed to upgrade it to .NET 3.5 (and avoid having to download the full .NET Framework setup download). The setup bootstrapper component can be used with both ClickOnce based setup packages, as well as with third party installer products (like Installshield).  The boostrapper optionally enables fully customized setup branding experiences (splash screens, custom setup wizard steps, etc) and should make it much easier to build optimized client setup experiences. ClickOnce Client Application Deployment Improvements .NET 3.5 SP1 includes several improvements for ClickOnce deployment of both Windows Forms and WPF applications.  Some of these improvements include: Support for the .NET Framework Client Profile (all ClickOnce features are supported with it) ClickOnce applications can now be programmatically installed through a ‘Setup.exe’ while displaying a customized, branded install UX ClickOnce improvements for generating MSI + ClickOnce application packages ClickOnce error dialog boxes now support links to application specific support sites on the Web ClickOnce now has design-time support for setting up file associations ClickOnce application publishers can now decide to opt out of signing and hashing the ClickOnce manifests as they see appropriate for their scenarios. Enterprises can now choose to run only Clickonce Applications Authenticode signed by ‘Known Publishers’ and block anything else from running FireFox browser extension to support Clickonce installations using FireFox browsers Windows Forms Controls SP1 adds several new Windows Forms controls - including new vector shape, Printing, and DataRepeater controls:   WPF Performance Improvements .NET 3.5 SP1 includes several significant performance optimizations and improvements to WPF.  Some of the specific graphics improvements include: Smoother animations Hardware accelerated rendering of Blur and DropShadow Bitmap Effects Text Rendering speed improvements - especially with VisualBrish and 3D scenes 2D graphics improvements - especially with z-index scenarios A new WriteableBitmap class that enables real-time and tear-free bitmap updates.  This enables custom "paint"-style applications, data visualizations, charts and graphs that optionally bypass the default WPF 2D graphics APIs. Layered window performance improvements SP1 also adds support for better data scalability in WPF.  The ListView, ListBox and TreeView controls now support "item container recycling" and "virtualization" support which allows you to easily achieve a 40% performance improvement with scrolling scenarios.  These controls also now optionally support a "deferred scrolling" feature which allows you to avoid scrolling in real time and instead wait until a user