Grapevine Implementation Without HttpListener #28
Replies: 2 comments 10 replies
-
Hi @scottoffen - Kestrel is quite heavy and from what I gather pulls a lot of dependencies in. I have a reference implementation of a TCP-based HTTP listener that constructs a context (not compatible with the
This uses a TCP library I've built which gives explicit socket read/write control and exposes events. If you feel there would be value in implementing something that replaces the objects that are exposed in the |
Beta Was this translation helpful? Give feedback.
-
In preparation for this, I've taken all of the code that doesn't depend on Other implementations can include Grapeseed to get all of the Most of this is already available in 5.0.0-rc.7, the rest will be completed in the next release. Once a 5.0 release is published, I'll begin looking into alternate implementation that don't wrap |
Beta Was this translation helpful? Give feedback.
-
User @gustavotoyota asked back on GV4 if there was a version of Grapevine that didn't depend on
http.sys
orHttpListener
. There isn't...yet. I'm designing GV5 in such a way that an implementation could be built that doesn't have that dependency, and user @jchristn has offered a possible solution.The .NET team has been clear that
HttpListener
is maintenance-only/obsolete, and their suggested alternative is to use Kestrel. I haven't looked closely enough at Kestrel to see if it would conflict with two of the primary goals of Grapevine, specifically simple and embeddable. And I don't want Kestrel to do the routing, that's the whole point of Grapevine.So, if someone is looking for something that handles routing for
HttpListener
, look no further than Grapevine. But for those who want all the yumminess of Grapevine, but either don't care what it runs on top of or specifically don't or can't useHttpListener
because of it's limitations, I'd like to explore options.To do this, we'd need to create implementations of
IRestServer
andIHttpContext
that are not dependent onHttpListener
, while still providing the same basic feature set of listening on a port/ports for incoming requests, and asynchronously handing that request/response object off to the rest of Grapevine. Oh, and the certification stuff for SSL.Thoughts? Comments? Ideas?
Beta Was this translation helpful? Give feedback.
All reactions