在两台不同的服务器上以两种不同的语言开发 Web 服务和网站是一种好习惯吗?例如,现在我创建了一个运行在 Glassfish 和 Ruby on Rails 表示层上的 Java Web 服务,这些表示层运行在同一台服务器上。
我想将 Web 服务留在同一台服务器上,但使用在 Passenger 中运行的 Ruby 1.9。
这是个好主意吗?我没有网络应用程序架构的经验。
在两台不同的服务器上以两种不同的语言开发 Web 服务和网站是一种好习惯吗?例如,现在我创建了一个运行在 Glassfish 和 Ruby on Rails 表示层上的 Java Web 服务,这些表示层运行在同一台服务器上。
我想将 Web 服务留在同一台服务器上,但使用在 Passenger 中运行的 Ruby 1.9。
这是个好主意吗?我没有网络应用程序架构的经验。
如果您编写一个使用和生成 XML 的合同优先 Web 服务,您可以与任何可以以适当格式发出 HTTP GET 或 POST 请求的客户端通信。SOAP 或 REST,没关系。
我编写了以 XSD 开头的 Java/Spring Web 服务。一个 Yahoo UI RIA 客户端采用 WSDL,创建一个 HTTP POST 来发送请求文档,并在一个漂亮的数据网格中显示 XML 响应。
从技术上讲,是的,您肯定可以做到这一点。这是使用 WS 的优势之一。它们是可互操作的。
但是,如果其他人要维护它并且仅在两个平台(RoR 或 Java)中的一个方面具有专业知识,我会考虑这个想法。最好总是问:-)
就系统的架构而言,是的,这是一个“好的做法”。好的,我的意思是它实现了目标,没有伤害,并强制分离关注点。
我一直在开发具有类似结构的架构。用户界面是 .NET 并使用 Java Web 服务。然后,该 Web 服务负责与持久性媒体、第三方组件等的所有交互。
我想说在任何系统中,您都应该努力从业务逻辑中抽象出您的用户界面逻辑。这只是很好的关注点分离。使用 Web 服务来做到这一点只是实现该目标的一种方式。如果您将在系统的其他用例中重用这些业务服务,我建议您使用 Web 服务。
还有一件事; 在过去 8 年中在 UI 和 WS 上使用了两种不同的技术之后,我了解到大多数挑战是组织性的,而不是技术性的。例如,很难找到同时具备维护应用程序所需的两种技能的新开发人员。你最终不得不找到一位专家,然后对他们进行另一种技术的培训。
这取决于它们的相似程度。
如果您的 Web 服务基本上在功能上反映了您的网站 - 那么重用现有代码并因此在同一台服务器上使它们成为相同的东西是很有意义的。
注意 - 这与纠缠层不同,因为您的视图仍然与您的业务逻辑分开。
从 Ruby-on-Rails 的角度来看,“Web 服务”和“网站”通常可以互换,因为它们是完全相同的代码,只是视图模板不同(网站的 html,Web 服务的 xml) . 如果您从一开始就考虑使用 RESTful 架构进行构建,那么您可以通过最少的重复和正确解耦所有应用程序层来实现这一点。