Subject: Implementation of WEBDav protocol

From: "Sasa Vasiljevic" <[email-masked]>
Date: Fri, 22 Dec 2006 13:32:43 +0000

Hello every1

This is my first message to this group. I am quite new in this and I'm asking for help in primary directions. I will write a series of statements, some of them can be wrong, so please correct me if I'm wrong, or tell me that I have right in everything :).

OK, let's start...

WEBDav is a protocol. Microsoft has implementation of WEBDav protocol. On Microsoft's IIS server, WEBDav is implemented as Web Service extension in an ISAPI dll called httpext.dll. There are many other extensions, like ASP, ASP.NET, Exchange Server, FrontPage Server extension and so on. When HTTP server (in Microsoft's case IIS), get a request from client it tries to serve that request and generate some response. If it does not understand client's requests it passes request to registered and allowed web service extensions. It passes the request serial, one by one, to each of extensions. Each extension then examines client's request. If extension also don't understand the request it passes FALSE to HTTP server (IIS). HTTP Server then tries with another extension. Let's assume that client's request was some of WEBDav commands,
let's say MOVE. WEBDav understand that command and httpext.dll, executes the command and return TRUE. Client request is resolved and everyone is happy. The command caused that resource from web shared folder is moved from one to another collection (Folder) inside Web shared folder. Since httpext.dll returns TRUE to IIS, it then assumes that the request is handled and that there is no reason to send same request to the rest of registered and allowed web service extension.

I want to add another implementation of WEBDav. As a protocol WEBDav doesn't assume, what is the resource it targets. Microsoft's WEBDav implementation assumes that a target resource is a file system. My WEBDav implementation would have database as resource. So I have to implement another web service extension dll (httpext2.dll, for example).

If I am right to all of above statements then I have questions.

How IIS knows which of those two extensions, implementing same protocol, to deploy. As this is impossible to distinguish, does this mean that I have to prohibit Microsoft's implementation of WEBDav and enable mine? If not, what if Microsoft's implementation, by chance, succeeds in response to client request, but client meant to send request to me, not to httpext.dll? If httpext, understands command, but does not succeeds in making response, will IIS continue in delegating the job to another extension? Which of those two extensions will be called first?

Thanks in advance

Saša

Don't just search. Find. MSN Search Check out the new MSN Search!