Background
I have a windows console app written in C# which needs UI. I started using WPF, but as I come from a web background, I want to use html, and some features of html5, including web sockets for real time communication with another application.
Initially, I’ll use a web browser as the UI, though I may later host a web browser in the main app. This bit doesn’t concern me at the moment.
After a lot of googling/reading, I’m going round in circles. It looks like WCF can be used to serve html, json based web services, and possibly web socket streams.
A lot of googled info relates to pre .NET 4.0 community projects. Even post 4.0 there are several NuGet packages which seem to me to overlap what is already in the framework. To a WCF noob, it’s all a minefield.
So, what areas of .NET 4.0 WCF and the various open source projects should I be concentrating my efforts on.
Requirements
I require a lightweight self hosted web server. It cannot be IIS based, as users will not have it installed. The server (or servers) must:
- Be able to server complete web pages, including html, linked images, css and js files. C# MiniHttpd does the job well, but is not based on http.sys. HttpListener seems to be the core of what I want, but I haven’t found a complete web server project based on it.
- [optionally] Be able to parse those pages through asp.net or razor
- Be able to respond to web service call via json. This bit I have a working example using System.ServiceModel. Is this the right way to go?
- Be able to work with the emerging Web Sockets standard. SuperWebSocket is actively developed, but doesn’t appear to be http.sys or wcf based.
Preferences
- I would prefer to stick to one basic stack for all 3 of my main requirements – and I suspect WCF may be that platform.
- I would prefer an http.sys based approach for all three requirements, so I can reserve the relevant url/port/namespace combinations and prevent conflicts with other web servers or services
Although other SO questions may help with individual aspects of my requirements, I need advice on a more holistic approach.
Ok, answering my own question feels wrong, but…
I have since found a great CodeProject article that provides an easy to use self hosted web server for serving the html, css, js and images, and serves the json requests.
Developing Web 2.0 User Interface for Self Hosted WCF Services using HTML5, CSS3 and JQuery
I still have to settle on a WebSockets solution, but the above project is as close to what I need as is possible at the moment. It doesn’t support rendering asp.net or razor, but these were my lowest priorities, as I’m happy to use only pure html and javascript for the front end.
I’ll try to post more specific questions in the future 🙂