scottoffen / grapevine-legacy

Embedding A REST Server In Your Application Should Be Simple
http://scottoffen.github.io/grapevine-legacy/
Apache License 2.0
209 stars 51 forks source link

Can Grapevine work without http.sys? #214

Closed gustavotoyota closed 3 years ago

gustavotoyota commented 4 years ago

Since I don't have admin rights, I can't use a library that depends on http.sys or HttpListener.

jchristn commented 4 years ago

Not trying to advertise here, but if the Grapevine team is interested in a webserver in C# that isn't using http.sys, I have a project that may help.

scottoffen commented 4 years ago

At this time, Grapevine.Server is a wrapper for HttpListner. I don't anticipate that changing in the foreseeable future.

I'm open to suggestions.

jchristn commented 4 years ago

Hi @scottoffen - one of the libraries I released for enabling creation of RESTful web platforms is called Watson (https://github.com/jchristn/Watson). It has the same limitation being based on HttpListener. As a result I created a separate project (identical to Watson) but gutted the HttpListener components and instead rolled my own HTTP implementation directly on TcpServer; it's called HttpServerLite and it can be found here: https://github.com/jchristn/httpserverlite. I'd be happy to help in any way I can, because as you already know, having the limitations of http.sys can be a P.I.T.A.

On another note, congrats on your success thus far with Grapevine!

Cheers, Joel

scottoffen commented 3 years ago

@jchristn I'm finishing up Grapevine 5 now (it's in beta). While the limitations of http.sys have not been a barrier for me, Grapevine 5 makes it possible to create just such an implementation, while leaving the existing HttpListener-based implementation intact. If this is something people would find useful, I'm open to making it happen.

@gustavotoyota I'm not sure of the value of doing this in Grapevine 4. Grapevine 5 targets netstandard2.0, netstandard2.1, and net5.0. Is there a reason you would need it to target a lower framework version?

jchristn commented 3 years ago

Hi @scottoffen I've only encountered those limitations with users wanting to use my library WatsonWebsocket on Windows 7 (which doesn't support websockets). I had intended to port WatsonWebsocket over to HttpServerLite, which doesn't use http.sys, but to your point, it doesn't use the existing HttpListener implementation (though it certainly could).

I had also heard that HttpListener was going to be deprecated (thankfully that did not happen in .NET 5) which would of course accelerate the need for a non-http.sys implementation (see https://github.com/dotnet/platform-compat/issues/88)

I'm happy to collaborate in whatever way would be most beneficial if you're open to it! Feel free to email me at joel dot christner at gmail. Cheers, Joel

scottoffen commented 3 years ago

Cool. I'll close this issue for now, and defer this for Grapevine 5.