我在董事会上进行了搜索,并且有一些线索与我要问的内容相关,但其他问题并不完全像我的情况。
我想实现一个服务(ejbs)和不同的客户端(其余的api,webservice,jsf托管bean以及其他一些客户端)将使用此服务。我的问题是:在这种情况下,数据验证应该发生在哪里?
在我的业务控制(ejbs)中执行此操作似乎是合理的,因为我不想为每个客户端实现一个验证器类型 - 但我不认为有人这样做...
最好的问候, 奥利弗
答案 0 :(得分:0)
一般建议是:向外部公开功能的每个组件都应验证它接收的输入。它不应该希望在所有情况下都能获得有效的输入。另外,正如您所说,它将验证保存在一个地方。
另一方面,当您双方都在您的控制之下决定对客户进行早期验证并记录预期/所需的有效输入数据时,这可能是一个合理的决定。 在设计关系数据库结构时遇到类似的问题 - 您可以使用各种约束来确保有效的输入数据,或者可以检查存储数据库中数据的组件的有效性。 而且,不要忘记,每当您在更深层中进行验证时,所有更高层都必须在验证失败时处理异常或错误消息。
关于您的具体问题,来自不同客户的相同服务的使用建议在服务中进行验证。