问题标签 [service-discovery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - 具有消息安全性的 WCF 服务发现
我有一个基于 WCF 的客户端-服务器应用程序,我使用 ServiceDiscovery 从客户端查找服务器。在关闭安全性的开发过程中,发现工作正常,但是当我们基于证书打开消息安全性时,ServiceDiscovery 停止工作。
当我搜索解决方案时,我发现了这篇 MSDN 文章http://msdn.microsoft.com/en-us/library/dd456791%28v=vs.110%29.aspx其中说;
使用消息级别安全性时,必须在服务发现端点上指定 EndpointIdentity,在客户端发现端点上指定匹配的 EndpointIdentity。有关消息级别安全性的详细信息,请参阅 WCF 中的消息安全性。
我一直在搜索、阅读和编写代码,但我似乎无法将其纳入工作代码。有任何想法吗?
原始服务器代码的摘录:
原始客户端代码的紧凑提取:
linux - Could I use avahi to publish service across subnetworks?
Avahi is usually used for service discovery. I want to make a service discoverable from a different subnetwork, could I use avahi to achieve this?
For example, the service host ip is "192.168.1.100" with mask "255.255.255.0", so it's in 192.168.1.X subnetwork. Another host ip is "192.168.2.100" with mask "255.255.255.0". Could I use avahi to let this host discover the previous service host?
python - Python 服务发现:通过本地网络发布服务
我在其中一台本地网络机器上运行了一个“服务器”python 脚本,它等待客户端连接,并将一些工作交给他们。服务器和客户端代码都已编写好,并且按预期工作......
问题是,这台服务器可能在本地网络中的任何机器上运行,所以我不能在脚本中硬编码地址......我立刻想知道我是否可以让机器宣传它的存在,并且客户端可以响应到那个。使用标准库在 Python 中是否可行?不幸的是,我真的没有时间下载扭曲或龙卷风并了解它们,所以我需要一些简单的东西。
我试图更多地考虑它,并意识到我可以拥有一个静态 IP 机器,服务器可以在其中注册/注销,客户端可以从那里查找服务器。有点像洪流追踪器,我想。如果我不能轻松地使用服务广告方法,则必须这样做。
c# - Windows 8.1 是否更改了 SSDP 发现?
我在我的 Windows 8 应用程序中使用 SSDP实现了发现,一切都很好。我昨天更新到 8.1,现在发现不再起作用。现在,当我打电话时,await socket.GetOutputStreamAsync(multicastIP, SSDP_PORT)
我得到一个 System.Exception: No such host is known。(来自 HRESULT 的异常:0x80072AF9)。
有没有其他人遇到过这个?8.1 中有什么东西被锁定了吗?
更新 1/23:看起来可能是我的 proj 文件损坏的问题。我能够创建一个新项目并且发现再次起作用,但过了一会儿我又开始遇到异常。我仍然不确定是什么导致了这种情况,以及这是我的开发环境有问题还是 Win 8 发生了变化。
即使我关闭并重新启动,当我再次启动项目时,它仍然会引发异常。
更新 1/24:似乎是我的网络适配器的问题。我对这些东西不太了解,但是我的 WiFi 适配器是桥接的,当我从桥接器上取下它时,它又可以工作了。
也许比我更聪明的人能够解决这个问题。
soa - 两个服务如何在没有静态地址的情况下相互发现?
假设我有两个服务需要共享和/或交换数据。两个实例彼此分离,它们不知道另一部分的位置。
现在,为了让他们能够共享和/或交换数据,他们需要相互连接。
他们如何在不需要明确配置 IP 地址的情况下找到彼此?换句话说:它们如何自动检测到彼此?
基本上,我有两个想法:
拉:您需要在他们注册的地方有一个中央服务。然后您可以向该服务询问服务的地址,然后该服务返回这些数据。虽然这可行,但它的缺点是它只会将问题转移到下一个级别:如果我有该服务的多个实例,并且我不希望它们提前相互了解怎么办?
推送:每个服务广播自己的地址,以便其他服务知道。每项服务都会不时重复此操作。缺点:这在互联网上几乎不起作用。
知道如何以智能的方式解决这个问题吗?
PS:如果您要这么说,我正在寻找一种无需中央 DNS 服务器即可处理动态 IP 的方法。
c# - 发现 - ProbeMatch 响应被丢弃
我使用 onvif 相机,但发现有一些问题。
使用如下非常基本的发现代码,我得到了我们网络上大多数设备的回复,但有一些被丢弃了。我添加了跟踪日志记录,我可以看到发现客户端丢弃的消息以及描述
DiscoveryClient 删除了带有 messageId='uuid:xxx' 和 relatedTo='uuid:xx' 的 ProbeMatches 消息,因为相应的 Find 操作已完成或相关的值无效。
查看跟踪中的相关值以及 MS 网络监视器中的值,它们似乎完全相同,而被丢弃的那些在前几个回复中,所以我认为它们不是在操作完成之后。
我还运行了 sourceforge 上的 onvif 设备管理器,这有同样的问题,但使用不同的设备,以前有没有人遇到过这个问题或者有任何想法可能导致它。
cluster-computing - 在 CoreOS 上使用 etcd 进行服务发现时如何处理陈旧数据?
我目前正在修补 CoreOS 并基于它创建一个集群。到目前为止,在单主机上使用 CoreOS 的体验还是相当流畅的。但是在服务发现方面,事情变得有点模糊。不知何故,我没有得到整体的想法,因此我现在在这里寻求帮助。
我想做的是让两个 Docker 容器在第一个依赖于第二个的地方运行。如果我们谈论的是纯 Docker,我可以使用链接容器来解决这个问题。到现在为止还挺好。
但是这种方法不能跨机器边界工作,因为 Docker 不能跨多个主机链接容器。所以我想知道如何做到这一点。
到目前为止我所了解的是,CoreOS 处理这个问题的想法是使用它的etcd
服务,它基本上是一个分布式键值存储,可以在每个主机上通过 port 本地访问4001
,所以你不必处理(作为 的消费者etcd
)具有任何网络详细信息:只需访问localhost:4001
即可。
所以,在我的脑海里,我现在有这样的想法,这意味着当一个提供服务的 Docker 启动时,它会在本地注册自己(即它的 IP 地址和它的端口)etcd
,并etcd
负责在整个网络。这样,例如,您将获得键值对,例如:
现在,当另一个 Docker 容器需要访问 aRedisService
时,它会从它们自己的本地获取 IP 地址和端口etcd
,至少在信息已通过网络分发后。到现在为止还挺好。
但是现在我有一个我无法回答的问题,这已经让我困惑了几天:当服务出现故障时会发生什么?谁清理里面的数据etcd
?如果没有清理,所有客户端都会尝试访问不再存在的服务。
目前我能想到的唯一(可靠)解决方案是使用etcd
的 TTL 功能来处理数据,但这需要权衡:要么您的网络流量很高,因为您需要每隔几秒发送一次心跳,否则您必须忍受陈旧的数据。两者都不好。
我能想到的另一个“解决方案”是让服务在出现故障时自行注销,但这仅适用于计划中的关闭,不适用于崩溃、停电……</p>
那么,你如何解决这个问题?
wcf - 通道工厂如何获取 wcf 服务元数据
有时客户端不会添加 wcf 服务引用,而是通过通道工厂与 wcf 服务建立连接。我想详细了解当我们使用通道工厂或添加服务引用时,wcf 服务如何在客户端获取 wcf 服务元数据。我在谷歌上搜索了很多内容并进行了深入的撰写,但没有找到。所以请将我重定向到正确的文章,该文章详细讨论了客户端的 wcf 服务发现。
wcf 服务添加引用和通过通道工厂创建代理有什么区别?
我猜当我们使用通道工厂创建 wcf 代理时,然后每次运行应用程序时,然后每次创建代理时。所以我认为这个过程比添加服务引用要慢,因为当我们添加服务引用时,代理只创建一次。
我们什么时候应该去使用通道工厂。请告诉我渠道工厂何时是最佳选择的情况。谢谢
algorithm - 发现服务和领导者选举算法
我一直在做一些研究,以增强我的项目的内部发现服务。我们在集群中有许多节点负责发现服务,高度可用。为了访问某些服务,每个客户端应用程序都会向集群中的所有这些节点发送多播消息。所有节点都响应客户端,并且第一个响应定义了一个特定节点以供进一步工作。这是一个开销,我正在考虑使用某种领导者选举算法,其中只有一个领导者响应客户。为这项任务使用这样的算法是否合理?
ios - 使用 cocoahttp 广播服务器可用性
我当前的项目需要 iPhone 连接到 cocoahttp 服务器。目前,用户必须输入服务器的 ip 才能使设备进行通信。有没有办法让服务器广播它的可用性,以便手机可以看到它并选择它?
理想用例:电话显示可用服务器列表 用户选择服务器 服务器 ip 或机器名称存储在 plist 文件中