C# Windows服务在多台机器上运行?

3

我正在尝试创建一个WCF服务,并将其托管在Windows服务中。这个Windows服务将部署在多台机器上(根据负载情况而定)。将有一个业务层,它将排队“作业”,并将每个作业传递给其中一个空闲的Windows服务。

我有点困惑如何实现这一点。我是否需要编写WCF和托管Windows服务,然后将它们安装到所需的任何机器上?然后从将调度作业到这些服务的层面,我该如何告诉它要发送到哪台机器(通过WCF服务接口)?这是我最困惑的部分。

3个回答

4
我曾经完成过这样的事情。你所描述的是正确的(尽管在分布式环境中保持节点同步并防止它们互相干扰可能有些棘手)。
要定位端点,我建议使用WS-Discovery,如http://msdn.microsoft.com/en-us/library/ee354381.aspx所述。如果您没有使用.NET4,您仍然可以使用服务或端点行为自己实现发现。

谢谢回复和其他人的意见。我用DCOM和C++做了很多这样的事情,但这是我第一次尝试使用.NET和WCF。从阅读中,我可以看到您创建了一个WCF服务,然后创建了一个主机。但似乎主机不必驻留在同一台机器上。这是真的吗?我正在考虑创建一个WCF服务和一个主机,它们都驻留在每台机器上,然后我的客户端通过指定其servicehost构造函数中的机器来调用其中任何一个(或者无需回到我的笔记)。 - Jonnster
不,主机和WCF服务必须在同一台计算机上运行。将主机视为main()方法,而将WCF服务视为在该方法中运行的一组对象。 - NateTheGreat
谢谢。这正是我所想的,但我在网上读到了一些不同的建议。那让我感到困惑,所以感谢您澄清了这个问题。 - Jonnster

2

与任何其他WCF服务一样,您的服务将公开端点。客户端将简单地发送到这些端点,就像平常一样。

也许您不熟悉代理构造函数的重载?有一些重载接受一个端点地址,允许客户端选择要使用哪个服务端点。


1

你在谈论一个NLB解决方案。


+1. 这是动态 NLB 集群的典型问题。只需在您的中央节点上安装 NLB 软件(有几个选项可供选择)。每次向集群添加或删除节点时,您的“业务层”都必须重新配置 NLB 集群。 - seva titov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接