哪些技术用于.net中的中间件服务器?

时间:2010-09-02 06:36:51

标签: .net middleware

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

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

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

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

  4. 搜索时我发现java中的中间件,但不是dotnet。是什么原因?

4 个答案:

答案 0 :(得分:5)

简答:从声音中,如果你只想缓冲服务器过载,你就可以异步处理请求。 WCF原生支持MSMQ。 MSMQ支持DTC,因此可以在事务中放置和删除消息。

中间件的较大主题是一个非常“模糊”的术语(如“交易”,“ESB”等术语)。 MS确实在这个领域有产品。这包括:

  • 排队技术(面向消息的中间件)MSMQ(替代方案包括IBM Websphere MQ,Rabbit MQ等)
  • XA / ACID / TP监视器 - Microsoft DTC
  • EAI - 微软有BizTalk进行集成(这里还有很多其他供应商)
  • ESB - 微软有BizTalk。 您还可以查看MS托管服务引擎(MSE)以进行服务虚拟化。 这已不存在
  • 对于RESTful集成,WebAPI
  • BPM / BPEL - MS再次拥有BizTalk。还可以包括业务级别监控和报告
  • 运营方面 - 如您所述 - 管理,监控,负载平衡,限制,服务SLA协议等
  • 对于Web服务(和WS扩展),WCF。这里有大量的配置选项,这些选项大多抽象出在切换协议之间改变代码的需要。

这只是表面上的问题:)

答案 1 :(得分: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)),它将请求转发给两个或更多服务器,具体取决于服务器负载。显然,仅当您可以复制服务器实例时才有效。

如果服务器正忙,那么存放一个存储队列的中间件可以正常工作,但是没有什么可以确保超过该代理的队列容量的可能性,那么你再去......

答案 2 :(得分:1)

对于#1:

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

对于#3:

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

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

IMO微软选择其他方法然后Java社区。他们提供了框架,允许您构建所谓的“中间件”。首先看看WCF&休息。队列可以在DB中轻松实现。如果不足以了解WCF& MS MQ。如果您不喜欢MS MQ,请查看Amazon SQS。如果还不够深入了解BizTalk。

P.S。 Java和.NET平台非常庞大,您可以在这两者上构建您想要的东西。从.NET跳到Java或从Java跳到.Net是没有意义的,只是因为你认为平台错过了某些东西。

答案 3 :(得分:0)

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

COM +将您提到的所有功能(第2点)提供给.NET应用程序。

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