很抱歉这个非常复杂的问题,但这是我已经研究了一段时间的东西,这真的让我很沮丧。我觉得在当今时代,我们拥有一百万零一种实现服务的方法,即跨平台 (SOAP) 且易于构建(感谢 .NET、java 和其他框架)。然而,这些技术已经在社区中存在了 5-10 年,但我们(或者至少我是)不断地困扰着同样的问题:
- 识别(跟踪服务)——UDDI;例如,本月不得不提醒同事 3 次服务所在的位置,尽管事实上有一个讨论该服务的 wiki 和一个相同文档的 PDF 版本,该文档位于我们保存服务文档的存储库中.
- 可扩展性——开箱即用的集群;作为组织,我们花很多钱来支付我们的管理员,只是为了观察我们服务的使用情况并做出决策,比如,这个服务是否需要更多的 RAM、更多的 CPU、更多的接口?我如何对此进行负载平衡?
- 监控 - 错误记录等;我数不清有多少次我必须在服务上设置跟踪才能了解为什么会发生似乎只影响一个客户的错误,或者必须将逻辑编码到服务中以序列化异常,将异常记录到 dbs,优雅地失败等等。
- 部署——易于部署;这些都没有将 DLL 部署到 5 个负载平衡服务器
这些问题中的每一个都需要组织实施某种类型的定制解决方案。#1 的文档和 UDDI。#2 的虚拟化和负载平衡硬件/软件。#3 的跟踪、向数据库/日志等写入异常。#4的自定义部署软件。我为一个中型组织工作。我什至无法想象像 Sun、Google 或 Microsoft 这样规模的公司会如何解决这些困境。
也许我的愿景是不切实际的,但我梦想拥有一个框架本身,它位于管理上述所有内容的服务器集群之上。读到微软的 AppFabric 让我欣喜若狂,因为它似乎真的将 BizTalk 的一些功能扩展到了 WCF 服务实现者:缓存、托管、监控等。但是,从我所见,我仍然觉得它不存在实现我对一体化解决方案的梦想,该解决方案可帮助开发人员和组织编写可轻松跨集群扩展、轻松部署到集群中、可识别、甚至可能版本化的服务。
所以,我并不是说这篇文章是关于我的梦想的。我确实有一个问题。首先,我的梦想/想要完全不切实际吗?此外,有哪些可用的解决方案试图解决这些问题,而不将我们限制在开发服务的新的和更专有的方式(BizTalk)上?最后,关于完整的 SOA/ESB 解决方案,我们现在或未来在哪里看到了市场上的最大潜力?