ExtJS Direct和directjengine的关系

Relation between ExtJS Direct and DirectJNgine

本文关键字:关系 directjengine Direct ExtJS      更新时间:2023-09-26

我是ExtJS DirectDirectJNgine的新手。他们之间的关系把我搞糊涂了。我无法获得总览图片。

我所知道的是:ExtJS是一个专注于UI设计的JavaScript框架。它为程序员提供了大量的APIs。我可以毫不费力地调用这些api

来自官方网站:

Ext Direct是一种平台和语言无关的技术,用于将服务器端方法远程到客户端。Ext Direct允许在Ext JS应用程序的客户端和所有流行的服务器平台之间无缝通信

我的想法是:ExtJS Direct也是ExtJS团队为我们提供的api的一个子集。这些api可以方便我们调用服务器端方法。但是我想深入一点。

  1. 服务器端方法可以是任何语言方法,如JAVA、c++、PHP等。直接api处理所有支持不同服务器端语言方法的可能性?

来自官方网站:

directjengine (或简称DJN)是ExtJs的Ext Direct API的基于Java的实现。ExtJs可能是基于web的应用程序中最强大和最吸引人的ui之一,正如在这里以及许多其他示例中所看到的那样。directjengine使它更容易使用Java业务类的全部功能与这样一个强大的前端,使Java方法可以直接从客户端调用。

    由于ExtJS Direct已经实现了无缝远程方法调用的api。为什么directjengine需要实现这些ExtJS的直接api ?"ExtJs的Ext Direct API的基于java的实现"是什么意思?

我将服务器端添加到定义DirectJNgine:

directjengine 是一个开源库,提供了服务器端Ext Direct API的基于java的实现。

Ext Direct是一个javascript框架和驻留在客户端,让你调用任何服务器API。调用是通过HTTP 进行的——这就是为什么它不依赖于服务器语言。您将制定一个HTTP请求,而不是Java/PHP/任何其他请求。

服务器API处理HTTP请求,可以用Java、c++、PHP、。net等实现。其中一个Java实现是DirectJNgine。它运行在服务器上,响应Ext Direct调用。

在您的项目中,您可以使用Ext DirectDirectJNgine在客户端和服务器之间进行通信。它们不重叠,它们在网络的两端相互合作。

你会使用一些框架的表示层(ExtJS可能)和一些框架的服务器业务/存储/其他层(利用DirectJNgine它将是一个Java框架)。

Extjs需要知道URL,方法和可能操作的参数计数,这是由directjengine提供的。

API还负责ExtJS和JAVA之间的消息传递,即将传入的JSON对象转换为JAVA方法(带有方法名和参数的JSON传递给JAVA方法,它们可以在一次调用中包含多个操作)。并将JAVA方法的结果以JSON格式传回。

当我意识到一些奇怪的事情发生时,我对extdirectspring做了一些研究,想知道为什么。实际上,extdirect所做的是以json的形式(+可能通过其他媒介)向客户端提供服务器端方法的描述。

在客户端,您最终会得到从该json构建的对象,该对象知道如何调用服务器代码。在java (extdirectspring)实现中,这会在程序的命名空间中为每个用'ExtDirectMethod'属性装饰的java类创建一个静态变量。这个变量似乎总是第一个字母小写的类名。我有一点挖掘,这似乎是巧合-该名称来自spring中的bean名称,而不是由extdirectspring定义的。

在extdirectspring中,设置通过以太(通过servlet + spring)工作(还没有确切地了解它是如何工作的),并且预定义为响应api.js请求(以及其他事情)。然后返回分配给ext命名空间中的静态变量的配置对象。默认情况下,该变量名为REMOTING_API。

要让客户端知道服务器必须提供什么,您需要输入这样的调用:

Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);

在extjs启动后。