3.15.2008

Silverlight Feature Request

Lately I have given a lot of thought to producing a P2P web based application and have begun to research the possibilities. I wanted to have a P2P site where you could access open-source media and whatnot, without having to download and run any type of software to your *computer*. The original and still background idea behind this need was to develop a form of a distributed YouTube, in order to eliminate the need for significant storage and bandwidth requirements for the servers.

Since coming up with the idea and doing some research into the possibilities I have come up with some additional ideas, and with them problems.

First was how to implement a P2P website. Traditionally, the content on the website is retrieved from the server. I wanted to be able to have the embedded Flash, or whatever control, obtain the content from a P2p network. As far as I am aware there is no way to do this currently.

So I started to research different ways to accomplish this. The first thought that came to mind was to develop an ActiveX control. Obviously this has a number of drawbacks, primarily compatibility. I'm not aware of how Firefox handles ActiveX controls, although this might be something to look into. Although even if Firefox handles ActiveX decently, it won't work on anything but Windows.

Researching the ActiveX option I stumbled across something I had heard of, but didn't know much about, namely, Silverlight, the new Microsoft cross-platform-browser .NET control. Most of the excitement behind it is it's capability to develop user interfaces and media for the web. For the first version, this is basically the limit of its capabilities. Slated for the second version was being able to access a subset of the .NET framework from a Silverlight control. A few of the features included isolated storage and networking support, including support for sockets networking.

However, doing some more digging into the support for sockets, it appears that they are quite handicapped within Silverlight, understandably so for security reasons. Currently in the beta they are limited to a number of ports, they cannot listen for incoming connections, and they can only connect to the host where the control was downloaded from.

I can definitely appreciate the security concern of allowing a Silverlight control to run with unfettered networking capabilities. It would not be good, especially since I'm not aware of any procedure or capability for a Silverlight control to be signed or verified by the client, which is a feature which is available for Java Applets.

I certainly think a nice feature would be for the creation of signed Silverlight controls, which could then be given additional networking / local filesystem privileges on the client PC, perhaps to be controlled by some type of access lists. This would make it possible to develop powerful web based applications based on the .NET framework that would be cross-platform-browser capable.

It would also make my idea easier to implement.

No comments: