One year ago it became clear that Infovark had outgrown the Windows Communication Foundation (WCF).
We’d decided to use WCF because we wanted Infovark to provide web services, and we liked the fact that we could deploy WCF to client machines. Since WCF is built directly on top of HttpListener, a core part of the Microsoft .NET Framework, we wouldn’t need to use System.Net or Microsoft IIS.
But we’ve struggled with WCF for a variety of reasons. First, we wanted to use a REST model for our web services, and WCF’s support for REST architectures lags behind its SOAP support.
Second, there’s no easy way to return HTML from WCF. We tried transforming our XML with XSLT and returning the XHTML results as a Stream. This works, but the programming experience is frustrating.
Last, because of the previous two reasons, we were left with a website that was way too rigid and programmer-like. It didn’t feel like an organic website. The tool we’d picked was forcing us to compromise on our website design goals.
Infovark’s primary mission is to help human beings, not other computers. That means that the look and feel of the web interface should be our number one priority. Awesome web services are nice to have, but happy users are more important.
So for the past few months, we’ve been hunting for an alternative web server. We can’t use IIS because its footprint is too heavy. Most IT departments won’t allow us to install IIS on client machines.
We could use Apache. It has a nice embeddable version, but interacting with it via C# is tricky. We’d prefer something a little more Microsoft-native.
That basically leaves us with one commercial option and two open source options.
(If you know of other web servers worth investigating, please let us know in the comments!)
More important than picking an alternative web hosting framework for Infovark is the timing of the switch. We don’t want to impede future development.
As a stopgap, we might try plugging in the Spark View Engine to replace our current XML-XSLT-XHTML rendering path. Who knows? If it improves our web development flow, we might be able to keep our WCF base after all.
5 Comments
Simon Russell
You have most of the parts of a good webserver already — HTTP.SYS (HttpListener). There’s really not that much more to go on top of it, and if you want some code, I have some I wrote a while ago (I think).
01 Dec 2009 06:12 pm
Dean
Hey Simon, send your code to us! It’ll save us having to start from scratch.
02 Dec 2009 09:12 am
Using Spark View Engine with C# WebServer « Infovark Underground
[...] mentioned that we were looking for an IIS alternative that we could embed within our Infovark client [...]
Sebastien Lambla
You should’ve looked at OpenRasta.
15 Apr 2010 10:04 am
Dean
Hey Seb, Thanks for the reminder. I actually did look at OpenRasta. I should have included that in my list of IIS alternatives. It’s been highly recommended to us.
We decided to investigate C# WebServer instead because it appeared to have more documentation and samples at the time. (Though I see you’ve put forth a lot of effort on that front recently!)
Though to tell the truth, I think we’ll ultimately abandon our idea to embed a web server on the client machine, bite the bullet, and just build our user interface in WPF.
15 Apr 2010 11:04 am
Leave a Comment