2010-09-02 73 views
7

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

  1. 该技术是最好的dotnet的剩余,同时使用,WCF,Webservives,远程或其他?

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

  3. 我应该阅读什么东西来完成这些任务?

  4. 在搜索时我发现了诸如java中的中间件而不是dotnet中的东西。是什么原因?

回答

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)),它根据服务器负载将请求转发给两个或更多服务器。显然这只有在您可以复制服务器实例时才有效。

如果把服务器忙可以工作,但没有保证要超过代理的队列容量太大的可能性,你又来了存储队列中间件...

0

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

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

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

+0

谢谢你,我会看到你的建议。你能比较一下这个类型解决方案的.net和java吗?我可以去java世界如果有优势来解决这种类型的场景,你推荐的任何东西 – kebede 2010-09-03 09:48:02

5

简答:从听起来如果它,如果你只是想缓冲你的服务器过载,你可以逃脱处理请求异步。 WCF本地支持MSMQ。 MSMQ支持DTC,因此可以事务性地放置和删除消息。

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

  • Queing技术(中间件消息)MSMQ(备选方案包括IBM的WebSphere MQ,兔MQ等)
  • XA /酸/ TP监视器 - 微软DTC
  • EAI - 微软的BizTalk整合(这里有很多其他的供应商)
  • ESB - 微软有BizTalk。 您还可以查看服务虚拟化的MS托管服务引擎(MSE)。这是被禁
  • 对于RESTful的集成,WebAPI
  • BPM/BPEL - 再次,MS具有BizTalk。还可以包含业务级别的监控和报告
  • 正如您所描述的那样,操作方面包括管理,监控,负载平衡,调节,SLA服务协议等。
  • 对于Web服务(和WS扩展)WCF。这里有大量的配置选项,这些配置选项通常会在切换协议之间抽象出更改代码的需要。

而这仅仅是表面文章:)

+0

感谢这个简短的回答。如果您提供一些阅读材料以便开始使用它,这将非常有帮助。 – Richie 2014-11-28 05:33:22

+0

@Richie - 中间件和集成的主题真的很大 - 我花了我的职业生涯做这件事,但仍然不知道它的一半。如果您有任何具体问题,请向SO发布新问题。 – StuartLC 2014-11-28 05:39:36

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 & REST。队列可以很容易地在数据库中实现。如果它不足以查看WCF & MS MQ。如果您不喜欢MS MQ,请查看Amazon SQS。如果它不足以查看BizTalk。

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

+0

你为什么说“我不相信你只能读一些书并实施它,否则实施的结果将远离生产要求。”?该体系结构已经修复,因为独立客户端和服务器已经存在,并且需要软件中间件。毫无疑问,该架构应该是什么。问题在于中间件的功能,而且推荐哪些技术是复杂的?功能是负载均衡,事务处理,安全检查,临时存储,中央日志记录。 – kebede 2010-09-15 13:08:39

+0

预期的客户端数量超过5000个,大数据处理是必须的。 – kebede 2010-09-15 13:25:50