gpt4 book ai didi

gwt - 二进制数据和GWT

转载 作者:行者123 更新时间:2023-12-01 14:33:52 25 4
gpt4 key购买 nike

关于二进制数据和GWT,已经有几个问题。阅读它们之后,我仍然不确定以下条件是否可行(不过我是一个完整的GWT初学者!):

我有一些非常复杂的数据文件,仅以二进制形式存在,我无法将它们转换为XML或JSON之类的东西。我有一个封闭的源库,尽管该库接受byte []并返回我可以使用的Java对象。为了使我的GWT应用程序运行,我“打印”了这些二进制数据文件之一,并将生成的byte []硬编码到我从GWT应用程序代码访问的.java文件中。一切正常。显然,这只是一个测试,在已部署的应用程序中,我无法对这些数据文件进行硬编码。我想将它们放置在我的GWT应用程序所在的目录中,并通过我的GWT应用程序“加载”它们。

我认为我可以使用GWT从服务器上“加载”文本文件,对吗?为什么我不能用GWT读取二进制数据?还是可以将二进制数据文件读取为文本,将字符串读取为byte []?我读了很多有关base64编码的内容,尽管我不太了解他们在说什么,但是GWT可以阅读它。我可以将服务器配置为以base64编码的形式提供这些二进制数据文件,然后通过GWT读取它们吗?

还是有其他解决方案?如果可以的话,我不想触摸任何JS代码。这就是为什么我开始使用GWT;)

谢谢你的帮助 :)

最佳答案

假设我们使用的是HTML 4。

GWT客户端无法“读取”文件。 GWT客户端是在浏览器上运行的javascript。浏览器安全性不允许您读取本地文件。您必须让servlet代理在服务器上为您读取文件。

设置文件的mime类型是因为您希望浏览器下载文件并调用本地PC来调用适当的软件-例如,pdf调用pdf阅读器或xls调用ms excel。与GWT Java或Javascript无关(启用下载除外)。

为什么需要GWT客户端读取二进制文件?如果这样做,您的体系结构可能是错误的。 “错”是一个不客气的词。也许,错位是一个更好的词。您的AJAX瘦客户端-服务器概念不正确。进入GWT门后,将桌面处理概念和习惯放到门口。

GWT是Java,但不是Java

我一直在提醒人们,GWT Java只是Javascript的更连贯的表示形式。使用GWT Java进行编码时,请始终记住您实际上是使用Javascript而不是Java进行编码。将所有Java源代码翻译成Javascript

因此,GWT编译器需要在源代码中提供所有Java类。 GWT编译器无法将Java字节码jar / class文件转换为Javascript。如果您的库使用字节码,或者您的源库在调用链的任何地方调用字节码库,则编译将失败。

服务器端和客户端GWT之间的混乱

GWT RPC有时会使GWT新手感到困惑。他们似乎没有意识到远程servlet是唯一编译为字节码的部分,因为它在服务器上运行。特别是在使用Vaadin的情况下,因为它们故意使服务器和浏览器之间的界限模糊。因此,GWT新手开始思考,“为什么我的字节码库仅在应用程序的某些部分起作用?”

ajax客户端服务器体系结构

GWT仅仅是一个启用Web的UI。您为什么不能在服务器上做任何您想做的事情,而让服务器反映它正在对UI进行或已完成的工作?为什么必须在浏览器上完成?

只需将您的GWT接口想象成一个强大的JSP。假设您正在编写一个JSP。您是否让JSP将二进制数据吸收到浏览器中并让JSP生成Javascript来分析那里的二进制数据?

我已经编写了复杂的统计分析,而我只是使用浏览器来反映服务器上正在执行的操作。工程师认为他/她正在他/她的PC上运行分析。生成图表/报告。但这一切都是通过调用SAS在服务器上完成的。

面向服务的模式/体系结构

您的服务器将提供服务。您的浏览器GWT客户端将请求这些服务。
打开一个文件,读取该文件,分析该文件,生成分析的视觉/模拟表示并将其传递给浏览器。只需将GWT浏览器客户端视为基于服务器的操作的显示监视器即可。 GWT是魔术师的窍门,可以帮助我想到这种错觉,以使工程师们感觉到他们正在本地PC上进行分析。当然,作为工程师,大多数人都知道浏览器实际上并没有在做这项工作。

当您的用户对分析感到满意时,请获得您的服务以生成结果的mime表示,以便浏览器可以下载该结果以调用mime映射的相应本地PC软件。

在服务器上执行此操作,然后将其反映在浏览器上。

进一步编辑:关于二进制数据...

网络应用程序中使用base64编码的动机是:身份验证 token ,图片,音频文件的传输-以便它们的二进制表示形式和顺序不会被字节序之类的体系结构细节所弄乱。

例如,请勿尝试编写浏览器应用来读取原始的二进制电子表格-在将任何二进制元素发送到浏览器应用之前,始终让服务器将其转换为XML或JSON(最好是JSON),其中任何二进制元素均应使用base64编码。或者,如果您的生活目标是攀登珠穆朗玛峰,请发明与架构无关的编码,代替base64来传输二进制数据。

如果用于浏览器的操作系统处理(例如音频,图片,pdf),则仅使用二进制信息。发送二进制数据仅由javascript例程处理没有意义。 javascript例程将不得不使用多余的处理时间来翻译它(除非再次,如果您生活中的目的是攀登...)。

关于gwt - 二进制数据和GWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11048223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com