I need to produce a web service that looks to the client side like a file system. I will need the client to be a able to:

* load files
* save files
* access meta data about files
* use username/password

The reason I don't want to just host static content is that:

* some of the content will be virtual.
* some of the meta data will be non standard.
* I will need to add custom hooks, access controls and error handling.
* there are plans to do some processing/filtering of the on-the-wire data so I need to be able to add in custom code on both ends.

If it makes any difference, all the content is of the same type and will be deserialized/serialized on load/saves.

Is there a standard way of doing this? Is there a better way of doing this?

---

*edit:* I have bean playing around with Visual Web Developer and it allows remote calls (via SOAP, it think) give code like this:

```
public class HelloWorld : System.Web.Services.WebService
{
    [WebMethod]
    public string HelloWorldMethod(int x)
    {
        return "Hello World" + " " + (x * 2).ToString();
    }
}

```

That gets about 90% of what I want. the rest is having a single instance of that serve an entire subdirectory (and getting the path), getting IIS to handle all my security and a few other nuts and bolts.