Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

is service discovery feature ready? #18

Open
koo9 opened this issue May 8, 2017 · 11 comments
Open

is service discovery feature ready? #18

koo9 opened this issue May 8, 2017 · 11 comments
Labels

Comments

@koo9
Copy link

koo9 commented May 8, 2017

maybe I was reading something out of date on the internet but is the service discovery feature ready for production?
also would it be a good idea to add support for router port forwarding within the framework?

Great work!

@yallie
Copy link
Member

yallie commented May 8, 2017

Hello Kevin,

current version of service discovery doesn't work on some networks, so I guess not, it's not production-ready. Looks like my simple UDP-based implementation is not reliable. Sorry to disappoint you!

I myself don't use service discovery, and I don't have much time to experiment with another implementations, so I'd suggest that you look for some third party library dedicated to service discovery. Let me know if you find an open-source library that suits you, perhaps I can integrate it into Zyan for easier reuse.

Regards, Alex.

@koo9
Copy link
Author

koo9 commented May 8, 2017

WCF use service discovery, I will look into the code. as for port forwarding, open.nat seems pretty good. it's an open source UPnP lib for that.

@yallie
Copy link
Member

yallie commented May 8, 2017

Thanks for you links, Kevin!

OpenNAT looks great, I starred the project a while ago, but never used it myself. I don't think that integrating it with Zyan will make it any better. It has well-thought API, is distributed via Nuget and is supported by its author, so I guess it's just fine to be used on its own.

WCF service discovery looks pretty monstrous, it would be an overkill for my use case. Also, it seems to me that it uses the same idea with UDP broadcasting as my implementation (as I said, I'm not sure it works everywhere). Have you tried it yourself?

@koo9
Copy link
Author

koo9 commented May 8, 2017

yea, I end up using open.nat by itself. works great.

Used WCF discovery in the past, works well. went through some of the code. you are right. it's not a small implementation.

@koo9
Copy link
Author

koo9 commented May 20, 2017

hi Alex,

have you looked at Bonjour.NET? seem like it's a perfect solution for this.

@yallie
Copy link
Member

yallie commented May 20, 2017

No, I haven't. As far as I know, Bonjour is Apple's protocol which requires
installation of a third-party server that handles the clients' requests.
It's not a p2p solution that can easily be embedded in an application.
Unless someone has written a lib that implements a subset of the protocol.

P.S. I haven't found a library called Bonjour.NET. Please drop me the link!

@koo9
Copy link
Author

koo9 commented May 20, 2017

@koo9
Copy link
Author

koo9 commented May 20, 2017

The proposed solution for name-to-address translation on a local network uses Multicast DNS (mDNS), in which DNS-format queries are sent over the local network using IP multicast. Because these DNS queries are sent to a multicast address, no single DNS server with global knowledge is required to answer the queries. Each service or device can provide its own DNS capability—when it sees a query for its own name, it provides a DNS response with its own address.

@yallie
Copy link
Member

yallie commented May 20, 2017

Thanks for the links and for the explanation!

https://github.com/automaters/bonjour.net

This library seems to be abandoned. No documentation, the last commit is 7 years ago.

https://github.com/onovotny/Zeroconf

I don't see the documentation either, but at least, the project seems to be alive :)
Nonetheless, from the examples I conclude that it's only the client part of the code.
So it solves the problem of discovering the local resources published via bonjour service.
But does it support the server-side part, i.e. publishing the resources for discovery?

PS. I have a few lightweight service discovery libraries bookmarked:

https://github.com/simongh/Discovery
https://github.com/rix0rrr/beacon
https://github.com/AndyPook/ServiceDiscovery
https://github.com/Yortw/RSSDP

Haven't used myself any of them though.
Perhaps if you're researching the subject, you might find some of them useful.
All of them except for RSSDP implement custom protocols, RSSDP is a subset
of a standard protocol for local network resource discovery.

Cheers, Alex.

@koo9
Copy link
Author

koo9 commented May 21, 2017

http://www.nullskull.com/a/1551/clientserver-autodiscovery-in-c-and-udp-sockets.aspx

this is similar to your implementation. also works with xamarin forms.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants