我们正在使用服务器组件扩展现有应用程序(带有SQL Server的.NET)。该组件扮演两个角色:它执行后台任务(长时间运行的计算和类似任务的cron作业),并通过为本地网络上运行的应用程序提供API来充当应用程序服务器。
问题是:用于实现应用程序服务器位的技术(在.NET世界中)。要求如下:
实际上,此应用程序服务器的最大任务(目前)是提供文件,并允许上传这些文件的修订版。
我花了相当多的时间浏览网络,并提出了以下可能的方法/技术列表:
基于此,看起来好像是WCF。
问题1:我是否遗漏了以上列表中的一些重要技术/缺点/优势?
问题2:那些在该领域具有专业知识的人是否同意WCF是实现上述要求的方式?
问题3: WCF的效率怎么样?看到诸如this one之类的问题让我想知道不是面向连接不会成为性能问题。该帖子描述了在一段时间不活动后响应时间如何增加到数百毫秒的数量级。此外,为每个请求创建SSL握手似乎效率很低。
答案 0 :(得分:1)
使用您自己的协议不是未来的证明,因为您是唯一可以支持它的人。这也是必要的工作量。
WCF是一个久经考验的框架,几乎可以满足您的任何服务需求。您可以创建单个服务(类/接口)并根据您的要求以不同方式公开它,这意味着相同的服务可以是外部客户端的Https外部端点,tcp.net内部端点和REST端点都在同一个时间只有一些额外的配置。
WCF已经存在了很长时间,它不会去任何地方。最重要的是,网络上有大量的支持/信息。
答案 1 :(得分:0)
Pure TCP有更多缺点:您可能需要创建自己的主机。重新部署怎么样?需要先关闭并停机。
在我看来,下一步将是测试WCF配置并找出是否可以延迟延迟。显然,100毫秒不能“正常”。对于连接池,我希望通常的网络延迟加上少量的CPU时间来处理请求。可能< 1毫秒。
如果你可以让WCF工作,那么所有其他要点都没有意义,因为除了性能要求外,WCF显然是最好的选择。
答案 2 :(得分:0)
忘记Web服务,它们太慢了。
我会在UDP或TCP之上使用我自己的协议。它速度快,重量轻,易于扩展。您只需要很好地记录您的协议。 套接字通信是一种标准!
WCF我从未使用过。