ASP.Net on Windows CE

Summary: I've been asked this a number of times in the last few weeks, so I'll say for the record Windows CE does not currently have ASP.Net support nor is it on our plan of record.  We have a very good subset of ISAPI extensions, ISAPI Filters, and ASP Pages but we don't have a managed web server story.

Want to do it yourself?

Suppose you want to write your own ASP.Net for CE?  There's nothing stopping you though it would be tricky.  Some German college students asked me how to do this a few weeks ago, for the very curious here's my slightly polished response. 

The hardest part here is that you can't call managed code from within any native process.  So you can't write an ISAPI extension that just calls C# objects, since the ISAPI & Web Server are both running from within services.exe.

This means your options are:
1) Write a web server from scratch using C# that is ASP.Net smart.  I don't really recommend this unless you happen to have a C# web server to start out with.  The CE Web Server does bunches of stuff for you like HTTP parsing, user validation, SSL, etc etc etc which even if you started with C# would be a fair amount of work to re-invent.

2) Write an ISAPI extension that proxies HTTP requests on to another process written in C#.  The C# will then look at the HTTP headers, POST data, etc... and be the ASP.Net implementor and will return whatever data it wants to back to the ISAPI extension which in turn returns it to the client. 

You don't have to proxy the request in raw form exactly as it was received on the wire.  You can put it in some easy to use data structure that has the key fields already parsed out and then ship that across process.  If I were to implement this, I would go with this option. 

I was able to get the key portions of standard ASP in about 5000 lines of code (without going into the details ASP on the desktop is a bit bigger than this :), though in fairness it does a lot more too).  So if you carefully subsetted out the ASP.Net required for the scenario you could probably get a pretty good bang for the buck once you got the interprocess communication stuff down.

[Author: John Spaith]