2

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

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

所以一个对象在表现层被改变了,比如一个“user”:user->setName(“Fred”),然后像这个user->commit()一样提交它,commit方法调用数据提供者的commit方法,然后对对象进行编码并将其发送到服务器。然后服务器用业务层对象“装饰”它并从那里继续。

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

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

谢谢。

4

1 回答 1

1

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

于 2010-09-09T21:14:46.140 回答