7

我不知道这是不是一个愚蠢的问题!我在网上搜索了没有有用的点击。我是一个点网用户(C#)。我想开发一个服务器,它可能被称为中间件服务器(实际上我不确定),它执行以下任务,我有一个无法修改的服务器和许多客户端请求服务器并接收结果。我可以修改客户端。现在我想开发接收客户端请求的软件,检查服务器是否忙或服务器排队的任务数量,如果服务器忙,将客户端请求存储到临时数据库,获取排队的请求临时数据库并转发到服务器,然后接收结果并转发给客户端等。问题是

  1. 保留在 dotnet、WCF、Webservives、远程处理或其他中时,哪些技术最好使用?

  2. 假设有事务处理、负载平衡、日志记录、安全检查机制等任务,这个任务有多复杂?

  3. 我应该阅读哪些内容来完成这些任务?

  4. 在搜索时,我在 java 中找到了诸如中间件之类的东西,但在 dotnet 中却没有。是什么原因?

4

4 回答 4

5

简短的回答:从声音上看,如果您只是想缓冲服务器的过载,则可以异步处理请求。WCF 本身支持 MSMQ。MSMQ 支持 DTC,因此可以事务性地放置和删除消息。

中间件的更大主题是一个相当“模糊”的术语(如事务、ESB 等术语)。MS 在这个领域确实有产品。这包括:

  • 队列技术(面向消息的中间件)MSMQ(替代品包括 IBM Websphere MQ、Rabbit MQ 等)
  • XA / ACID / TP 监视器 - Microsoft DTC
  • EAI - Microsoft 有 BizTalk 用于集成(这里有许多其他供应商)
  • ESB - 微软有 BizTalk。您还可以查看用于服务虚拟化的 MS 托管服务引擎 (MSE)。 这个已经失效了
  • 对于 RESTful 集成,WebAPI
  • BPM / BPEL - 同样,MS 有 BizTalk。还可以包括业务级别的监控和报告
  • 操作方面 - 正如您所描述的 - 管理、监控、负载平衡、节流、服务 SLA 协议等
  • 对于 Web 服务(和 WS 扩展),WCF。这里有大量的配置选项,它们大多抽象出在切换协议之间更改代码的需要。

这只是表面上的:)

于 2010-09-02T06:59:33.847 回答
1

中间件是一个非常广泛的术语,您专门谈论的是代理:

http://en.wikipedia.org/wiki/Proxy_server

http://en.wikipedia.org/wiki/Proxy_pattern

当然,这也是一个中间件。

其他答案取决于您用于客户端-服务器通信的技术(Web 服务、REST、json,...?),您的服务器逻辑有多复杂,以及您必须处理多少请求,...

可能在您的场景中工作的最简单的事情是负载均衡器 ( http://en.wikipedia.org/wiki/Load_balancing_(computing) ),它根据服务器负载将请求转发到两个或更多服务器。显然,这只有在您可以复制服务器实例时才有效。

如果服务器繁忙,放置一个存储队列的中间件可能会起作用,但没有任何保证超过该代理的队列容量的可能性,然后你又去了......

于 2010-09-02T06:57:17.037 回答
1

对于#1:

请提供有关您的任务的其他信息: 1. 粗略估计客户端数量 5、100、10000、1000000 2. 将在客户端和服务器之间强制和返回的数据的估计大小 3. 客户端将在 Internet 或 Intranet 中工作的位置? 安检有什么限制吗?4. 客户端将是独立应用程序还是网络应用程序(如页面或页面上的小部件)?

对于#3:

如果您在#2 中提到的所有内容都必须作为任务的一部分来实现,那么我不相信您可以只阅读一些书籍并实现它。否则实施的结果将与生产要求相去甚远。我建议聘请建筑师或将其外包给经验丰富的团队。仅出于一般信息,我可以推荐阅读 - Martin Fowler 的“企业应用程序架构模式”。但仅仅阅读并不能代替经验。

对于#4:我相信.Net 也有中间件系统。有一些商业中间件系统可以使用 Java、.Net 和 C++。

IMO Microsoft 选择了其他方法,然后是 Java 社区。他们提供了允许您构建所谓的“中间件”的框架。首先查看 WCF 和 REST。队列可以很容易地在数据库中实现。如果还不够,请查看 WCF 和 MS MQ。如果您不喜欢 MS MQ,请查看 Amazon SQS。如果还不够,请查看 BizTalk。

PS Java 和 .NET 平台非常庞大,您可以在两者上构建您想要的任何东西。从 .NET 跳到 Java 或从 Java 跳到 .Net 是没有意义的,只是因为您认为平台中遗漏了某些东西。

于 2010-09-09T19:55:33.777 回答
0

在 .NET 中,推荐的中间件服务器方法是使用通过 COM+ 提供 .NET API 的 企业服务。

COM+ 为 .NET 应用程序提供了您提到的所有功能(在第 2 点中)。

WCF 取代了远程处理,但完全是关于互操作性的。虽然它确实提供了安全性和事务性功能,但这些功能是针对 2 个端点之间的通信,而不是您的应用程序对象。

于 2010-09-02T06:58:00.083 回答