我们的应用程序中有两个项目:
- Web UI 项目(aspx 页面)。
- WCF 项目。
这两个部分将进一步调用相同的 BL 和 DAL 层。这是架构:
网络项目:
WCF 项目(将使用 REST):
上面提到的业务对象和 DTO 示例:
public class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class UserDTO
{
public int UserID { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
是否值得为 WCF REST 层提供一个单独的数据传输对象 UserDTO.cs?我们已经将 User.cs 作为 Web 项目、BL 和 DAL 使用的业务对象。此外,在我们的 WCF REST 层中,我们仅将 DTO 用于输入婴儿车:
public MyResponse CreateUser(User user)
{
通过这种方法,我们通过一些映射器将 DTO 转换为业务对象(即 UserDTO 到 User.cs 对象),并将其传递给仅接受业务对象而不接受 DTO 的 BL 层。即,从 WCF 将业务对象传递给 BL 和 DAL 的角度来看,它的行为方式与 UI 将业务对象传递给 BL 和 DAL 层的方式完全相同。
使用 2 个单独的数据传输对象有什么实际优势吗?我问过这个问题是因为 IMO 这将是多余的,我们应该使用一个数据传输对象,即 Web 项目和 WCF 项目的业务对象。