【问题标题】:What are the advantages of Web Services over dynamic HTML?与动态 HTML 相比,Web 服务有哪些优势?
【发布时间】:2011-06-14 18:29:45
【问题描述】:

我想知道使用应用程序服务器(例如 glassfish)而不是通过动态 html 页面(例如 PHP)提供内容有什么优势。我想了解“网络服务”的优势,而不仅仅是一个网站,因为我正在开发一个在线商务网站,我想知道从直接 Apache 切换到类似的东西的一些经验法则玻璃鱼。

【问题讨论】:

    标签: php web-services web dynamic-html


    【解决方案1】:

    Application Servers 与 Java 世界中的 Glassfish 类似,通常指的是一种软件,它除了实现网络服务器外,还可以在 Java Enterprise Edition 规范的上下文中运行您的 Java(或其他基于 JVM 的语言)网络应用程序。所以它基本上只是一个花哨的 Apache,用于用 Java 编写的 Web 应用程序。 经验法则:如果您决定使用 Java 或在 Java 虚拟机上运行的其他语言,并且需要或想要使用任何 J2EE API,则使用应用程序服务器。

    由于 HTML 页面通常是人类可读的信息表示,因此 Web 服务以机器可读格式提供信息,以便机器可以使用 HTTP 协议相互交互。代替一般的 Web 服务概念,Webservice 一词主要用于使用 SOAP 协议进行通信。由于 web 服务不是特定于语言的,因此使用 PHP、Java 或 Ruby On Rails 或其他任何方式来实现 web 服务都没有关系。决定是否要提供一种与 Web 应用程序交互的方式,而不仅仅是通过用户操作的 Web 浏览器。

    【讨论】:

    • 我明白了.. 那么是否有必要将接口公开才能被视为 Web 服务?
    • 好吧,我的意思是,如果我有一个私有接口,并且我对其进行编程,而不是实现,这仍然被视为 Web 服务吗?还是仅仅是公开可用的 API?
    • Web 服务通过 HTTP 进行通信(有例外,但它是常用协议),因此本质上提供了一个公共接口(尽管您可能只是在内部使用它)。如果您谈论的是 Java 接口,那么它们当然必须是公开的。
    【解决方案2】:

    当您开发 Web 服务时,您是在编写一个接口,而不是一个实现。当您开发的页面推送只有您的应用程序了解如何使用的数据时,例如专有的 html 页面,您所做的恰恰相反。

    从更广泛的角度考虑您要完成的工作——您是否将在多个地方、技术等方面实施和重用此服务。这是您的关键。

    【讨论】:

    • 然而,这完全主要与您决定使用的技术无关。您可以在 Apache 上使用 PHP 进行编程,就像您可以在 Glassfish 上创建笨拙的网页一样。
    【解决方案3】:

    考虑什么风格的网络服务。

    您是否将 Soap 与 REST 进行比较?

    REST Web 服务与网页非常相似,因为它使用 HTTP 的所有内置功能。 SOAPrest 服务需要阅读和消化它所需的基础设施。

    Glass fish 将您与特定环境联系在一起,这意味着具有出色的可扩展性且无忧无虑,但实际上通常并非如此,需要昂贵的资源来构建和维护代码。 (更不用说基础设施和许可证)

    我建议使用一个非常简单的层来生成您的 Web 服务。 eg:PHP 和一个小的rest 框架工作,mabee 类似于代码点火器的修改版本。由于 rest 是无状态的,因此很容易扩展。只需添加更多的 apache web 服务器,直到奶牛来到 hiome.. err.. 或者直到你的数据库被破坏.. 但成功总是有它的问题。为什么不使用云上的 REST 实现。在 amazon 上安装一些微型实例 Web 服务器,添加一个抽象的关系数据库,然后就可以使用了。

    但正如本次讨论中的其他人所指出的,您不受语言的限制。更好地决定你的服务是什么。 REST 或 SOAP。休息服务可以用 Python、Java、Pearl PHP 等构建。SOAP 休息服务可能用 Java 构建,所有很酷的工具都在那里......这可能意味着玻璃鱼。

    【讨论】: