我已经看到了在控制台应用程序、windows服务等中自托管WCF服务的示例、示例代码等。
我的问题是,这将如何在生产中工作?它将是有效的吗?它会变得更大吗?
我不确定它是如何工作的,所以另一个问题是,它会是单线程的吗?多线程?我需要管理多线程吗?应用域名?
由于与应用程序相关的原因,我更喜欢使用命令行和windows服务进行托管。
发布于 2011-02-15 02:55:20
宿主WCF端点的Windows服务对于不会经常受到攻击的小型服务来说很好;您不必与IIS打交道(这可能是一个真正令人头疼的问题)。但是,只有一个监听程序在监听,所以对于可能会同时从多个地方受到攻击的服务,不建议使用IIS (为此使用IIS;它会设置一个可以处理多个并发请求的应用程序池)。此模型适用于两台机器之间的一对一互操作;您可以将服务主机设置在某个仓库中的"set and forget“机器上,并调用它来执行简单但自定义的任务,如重新引导、日志转储等。
避免让任何用户应用程序(控制台或其他)托管服务端点,除非是最初的概念验证测试。除了单监听程序的缺点之外,用户应用程序必须在登录用户(而不是服务用户,他们作为Windows启动的一部分“登录”)的上下文中运行,并且必须具有自定义的“保持连接”监视;对于服务,可以告诉Windows在它崩溃时只需重新启动它,同时它不会影响用户应用程序崩溃,只是为了防止该程序关闭整个操作系统(并询问用户是否要报告崩溃)。
发布于 2011-02-15 02:42:04
我的问题是
它将是有效的吗?它会变得更大吗?
是的,是的。但对于真正大规模的应用程序,您仍然应该考虑IIS (+WAS)。
,所以另一个问题是,它会是单线程的吗?多线程?
这是由配置决定的。
发布于 2011-02-15 15:35:40
它会很高效吗?
这取决于服务实现,取决于它在特定时间范围内能够管理的最大请求数。效率是一个相对的衡量标准:假设您的服务能够处理20条消息/秒,如果您的需求是能够处理10条消息/秒,那么您的服务是高效的。但如果要求是30,那么它就不是。
它会扩展吗?
再说一次,它与托管无关。你的服务是无状态的吗?如果不是这样,它们可能不会有太大的伸缩性,因为负载平衡是不可能的。
它会是可管理的吗?
可能不会:-您需要让用户登录到服务器才能运行应用程序-它不会随服务器自动启动-它不能在故障时自动重新启动-它不会主动创建服务的实例-它不提供(没有自定义代码)检查服务健康状况的方法
单实例?多线程?
如果您的服务不能在每个客户端的调用之间维护状态,则将其配置为“每次调用一个实例,无多线程”->无并发,高吞吐量
如果您的服务确实维护状态,则将其配置为“每个会话一个实例和多线程”,以允许客户端执行并发调用。小心并发问题,保护您的资源。
如果您的服务不维护每个客户端的状态,而是为所有调用保存一些全局数据,请考虑“每个服务一个实例和多线程”。请记住可能的并发问题。在这种情况下,您可能会使用“每次调用一个实例”,并将全局存储保留在服务之外。
https://stackoverflow.com/questions/4995916
复制相似问题