域对象构造职责:我应该在服务层接口中使用域对象吗?

Nef*_*ron 1 architecture web-services ejb java-ee

在设计服务层时,我应该在接口契约中使用我的域对象吗?例如:

public void registerUser(String username,String realName)

VS

public void registerUser(用户用户)

域对象应该在客户端代码中构建还是在服务外观后面构建?

我正在使用EJB,我的客户端将是本地部署的Web应用程序,RMI客户端,也可能是Web服务客户端.

Car*_*ron 5

从技术上讲,使用一个或另一个没有问题:通过XSD的Web服务能够支持像Strings这样的原始类型和像User类这样的复杂对象.

现在,如果你的User类有20个属性,你只需要usernamerealName注册用户?在这种特殊情况下,最好使用您的第一种方法,因为需要更少的带宽是您不要强迫您的客户构建不需要的大型XML文档.

另一种情况是,您的User类根据JAXB规则生成复杂且高度嵌套的XML文档.这可能会为您的客户端以及复杂的客户端实现生成复杂的消息.如果是这种情况,您可以使用更简单的域类版本 - 可以使用一个或两个嵌套级别 - 作为DTO来简化消息交换.