DAL / BLL和客户/服务器:客户端是否应使用BLL或DAL对象进行演示?或者可能是另一层(数据传输对象?)

时间:2010-09-09 17:04:45

标签: architecture data-access-layer data-access bll

我正在编写客户端/服务器系统。服务器具有DAL / BLL设计。客户端负责呈现数据对象并提供对话框和向导,以允许用户更新这些对象(即添加/编辑用户)。

最初,我认为我只是让DAL对象拥有一个通用数据提供程序对象,以便客户端和服务器都可以使用它们。例如,当服务器使用数据对象时,数据库就是数据提供者;当客户端使用数据对象时,服务器就是数据提供者。

因此,在表示层更改对象,例如“user”:user-> setName(“Fred”),然后像这个用户 - > commit()一样提交它,commit方法调用数据提供程序的提交方法,然后对对象进行编码并将其发送到服务器。然后服务器用业务层对象“装饰”它并从那里继续。

我目前将其作为原型工作,在共享项目中定义DAL对象,客户端和服务器都使用它。然后服务器注入它的数据提供者(使用数据库),客户端注入使用服务器的数据提供者。

我想知道这是否合理?我一直想知道我是否需要另一层而不是让DAL对象直接暴露给客户端。也许是一个数据传输对象层,它会给我3层:数据访问对象,业务逻辑对象和数据传输对象。

感谢。

1 个答案:

答案 0 :(得分:1)

暴露“内部对象”(如使用/返回的对象)购买DAL并不是一个好主意。最好保持所有内部对象对客户端隐藏,并为客户端 - 服务器通信提供一整套对象。将一个对象转换为另一个对象可能会有一些额外的工作,但如果服务器和客户端不能一起升级,将使系统升级变得更加容易。