首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端和内部应用程序设计之间的web服务中介

客户端和内部应用程序设计之间的web服务中介
EN

Stack Overflow用户
提问于 2009-02-10 15:55:17
回答 1查看 140关注 0票数 0

我正在创建一个wcf web服务,它将接受许多连续的请求,web服务将需要保留这些请求,直到内部应用程序(它将每隔几秒钟轮询web服务)向web服务发出请求,以确定是否存在任何请求,如果存在,则检索它们。然后,内部应用程序将向web服务发送回响应,web服务将把响应传递回初始调用者。

即:

客户端-1)请求-> Web服务<-2)请求-内部应用

客户端<--4)响应- Web服务<-3)响应-内部应用

我正在尝试设计web服务的实现,并试图思考如何实现接受请求的机制,直到内部应用程序发出数据请求,并且web服务等待来自内部应用程序的响应。

我主要关心的是:

1)如果在内部应用程序发出请求之前有数千个请求进入,该如何保存这些请求?

2)如果内部应用程序死了,大量的请求堆积起来怎么办?(我需要让这些请求超时)

3)如何将初始请求与客户端以及来自内部应用程序的响应进行连接?

4)客户端将等待并等待响应。

WCF消息队列在这种情况下会有帮助吗?web服务是否能够在内部管理消息队列,例如,当消息进入时,web服务会将消息添加到队列中,类似地,当内部应用程序发出请求时,web服务从队列顶部抓取消息并将其传递给内部应用程序,并等待来自内部应用程序的响应并将其传递回客户端?

这有可能吗?

如果同时有2000个客户端请求进来,因为客户端将同步等待响应,那么上述场景是否可行?我是否能够将原始请求与从内部应用程序线程返回的响应进行匹配,以便将响应返回给客户端?

消息队列方法看起来是不是有点过分了?我可以将请求保存在某个静态字典中吗?

你还有其他的建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-02-10 16:57:29

首先,坦率地说,轮询类型的架构听起来非常不适合实时请求处理。如果可以将请求直接转发到将要处理它们的应用程序,这将是无限可取的。你给自己打开了一大堆额外的问题,你甚至将你最好的情况下的响应时间限制在“几秒钟”,这是糟糕的。

但。假设您无法对体系结构做任何事情,那么将消息排队以供内部应用程序检索不是问题。内存中的队列结构可以处理这一问题(只需将队列的大小限制为几千,如果队列已满则返回错误)。您真正的瓶颈将是Web服务上打开的请求的数量。如果每个请求的最小打开时间为“几秒”,我就看不出指定的体系结构如何能够处理每秒数千个请求。服务器的设计并不能让那么多的请求保持打开状态。那些能够每秒处理数千个请求的应用程序会在几毫秒内响应每个请求,然后将其清除。如果每个请求都打开了几秒钟,它就会影响到你的服务器--假设你的服务器本身不会在重压下崩溃,那么请求就会排队,其中90%的请求会超时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/532889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档