[英]What's the best way to secure data between an PHP webservice and a Android/Java application
[英]What is the best way to parse data using same API between JEE Restfull webservice and Android?
我们有一个大型项目,由JEE模块,JAVA客户端应用程序,Android应用程序和其他自制Java项目组成。
由于项目的多样性,我们决定制作JEE,Java客户端应用程序和Android应用程序通用的Java库项目和Java实体项目,以限制项目之间的代码冗余。
刚开始时,我们在JEE服务器端只有Java客户端和Restfull Web服务,它们使用JAXB XML Binding API交换数据。 因此,很容易在实体项目中的类上使用JAXB批注(该批注设置为对Java Client项目和JEE项目的依赖)。 双方都可以轻松地使用相同的注释对XML数据进行编码和解码。
现在我们有了一个Android应用程序,我想使用相同的方式交换数据。 事实是,JAXB在Android上已“贬值”。 因此,我在Jackson库中发现有一个JaxbAnnotation
参数,用于获取与JAXB绑定的数据,但是我对解决方案的完全兼容性JaxbAnnotation
。
我还尝试使用JSON绑定,因为我看到JSON-B将成为JavaEE 8中的标准,但似乎它需要JavaEE API类,因此我认为将其添加到Android项目中并不是一件好事。
所以我的问题是:在JEE Restfull Web服务和Android应用程序之间使用相同的实体依赖关系(和相同的解析API)并限制实体对象的XML或JSON绑定注释的最佳实践是什么?
我希望您能很好地理解问题。
谢谢。
让我们将您的实体项目命名为entities-module
。 这个项目包含POJO
与注解的类JAXB
注释,比如: @XmlElement
, @XmlType
,等等。因为,像你这样写道,“JAXB是Android上的‘贬值’”你需要之间做出选择:读JAXB
通过其他工具注释或创建新定制的POJO
结构。
JAXB
批注 Jackson
库对JAXB
批注提供了良好的支持。 您需要做的就是使用jackson-module-jaxb-annotations
模块。 这很容易注册,如果您已经使用Jackson
进行JSON
序列化/反序列化,那么这是显而易见的选择。 如何做到这一点,您可以在SO: 使用JAXB和Google Android上找到有关此问题的阅读答案。
优点:
POJO
架构。 Restful API
发生更改,则可以使用下一个版本的entities-module
项目。 缺点:
Android
上启用 JAXB
问题。 JAXB
和Jackson
模块层有关的性能问题。 第二种选择是使用POJO
创建新模块,并使用更快,更小的库(如SimpleXML
。
优点:
JAXB
类构建应用程序没有问题。 缺点:
API
发生更改,则需要在几个模块中重复更改。 您需要查看上述pros and cons
清单,然后确定最适合您的。
我还要添加两个选项:
Jackson
注释替换JAXB
注释。 除了对JSON
支持外, Jackson
还具有非常好的XML
支持。 这将使您轻松支持API
JSON
和XML
格式。 另外,您可以在Android
上使用Jackson
库。 Android
应用创建新的JSON
API
。 通常, Android
应用程序上的UI
流程与Web App
上的UI
流程是不同的,无论如何,您最终都会想到这个想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.