【问题标题】:3 Tier Architecture - data tier just stores data only? [closed]3 层架构 - 数据层仅存储数据? [关闭]
【发布时间】:2011-11-27 10:55:55
【问题描述】:

数据层是否验证用户的任何输入?还是只存储数据?

示例 - 用户将电子邮件添加到他的个人资料中。

是这样吗?

表示层 - 验证电子邮件格式是否有效(客户端)

逻辑层

  • 验证电子邮件格式是否有效(再次?)
  • 设置电子邮件类型(即是主电子邮件?)
  • 检查允许存储电子邮件的记录限制

数据:

  • 存储电子邮件记录

逻辑:

  • 向表示层发送通知
  • 通过电子邮件发送通知

【问题讨论】:

  • 您是指层级(物理分离)吗?还是只是逻辑层?

标签: c# asp.net architecture software-design 3-tier


【解决方案1】:

注意:

数据层的任务是连接数据库并执行 CRUD 操作,如果你想应用额外的验证逻辑,而不是必须在逻辑层执行它

您的架构发生变化

表示层 -

  • 验证电子邮件格式是否有效(客户端)

逻辑层

  • 验证电子邮件格式是否有效(再次?) - 无需再次验证
  • 设置电子邮件类型(即是主电子邮件?)
  • 检查允许存储电子邮件的记录限制

数据层:

  • 允许连接数据库
  • 执行 CRUD 操作

数据存储即数据库

  • 存储电子邮件记录

返回

数据分析器

  • 通知正确插入的逻辑层数据

逻辑层:

  • 向表示层发送通知正确插入/更新数据
  • 通过电子邮件发送通知如果数据插入/更新正确,否则记录错误

【讨论】:

  • 他应该再次验证密码。可以绕过客户端验证(注意 ASP.NET 标记)
  • @jgauffin - 我认为在将数据传递给业务层之前,他可以利用服务器端验证并验证事情,而不是在客户端进行更多回复
  • 在数据层中设置“Created_DateTime”怎么样?
  • 确保电子邮件以“小写”形式存储在哪里?
  • 数据层应该确保存储有效数据还是不关心?它只是存储任何东西。
【解决方案2】:

每一层都有自己的一套与外界的合同。

你不应该做或不做某事,假设它可能已经在较早的层完成(如验证)

但是,DataLayer 不会验证电子邮件地址格式。它不是其职责的一部分。它甚至不应该了解电子邮件的外观,除非它是特定长度的字符串。

【讨论】:

  • Created_DateTime呢,这个应该在数据层创建吗?逻辑层搞砸了,邮件格式不对,数据层存储了无效数据怎么办?
  • 数据层的职责是存储和检索数据。验证格式是业务层的工作。
猜你喜欢
  • 2014-07-18
  • 2018-01-13
  • 1970-01-01
  • 2013-09-08
  • 2016-11-08
  • 1970-01-01
  • 2011-07-30
  • 2011-01-13
  • 2013-10-24
相关资源
最近更新 更多