我不知道这是否是一个愚蠢的问题!我在网上搜索没有任何有用的点击。 我是一个点网用户(C#)。我想开发一个服务器,它可能被称为中间件服务器(实际上我不确定),它执行以下任务, 我有一个无法修改的服务器和许多请求服务器并接收结果的客户端。我可以修改客户端。现在我想开发接收客户端请求的软件,检查服务器是否繁忙或服务器上排队的任务数,如果服务器繁忙,则将客户端请求存储到临时数据库,获取请求排队的请求临时数据库并转发到服务器,然后接收结果并转发给客户等。问题是
在使用dotnet,WCF,Webservives,远程处理或其他技术时最好使用哪些技术?
假设有事务处理,负载平衡,日志记录,安全检查机制等任务,这个任务有多复杂?
我应该阅读哪些内容来完成这些任务?
搜索时我发现java中的中间件,但不是dotnet。是什么原因?
答案 0 :(得分:5)
简答:从声音中,如果你只想缓冲服务器过载,你就可以异步处理请求。 WCF原生支持MSMQ。 MSMQ支持DTC,因此可以在事务中放置和删除消息。
中间件的较大主题是一个非常“模糊”的术语(如“交易”,“ESB”等术语)。 MS确实在这个领域有产品。这包括:
这只是表面上的问题:)
答案 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个端点之间的通信,而不是应用程序对象之间的通信。