我有这样的场景,我的3层应用程序与服务的MVC表现层服务层:业务逻辑exception.example
我有一个创建,例如操作,如雇员的电子邮件必须这套员工是独一无二的。该操作通过服务在MVC表示层中执行。
如何管理意图创建其电子邮件已在其他员工的数据库中注册的员工?
我想在2种选择:
1)具有查询是否有与新员工给予相同的电子邮件的员工的另一操作。
2)在服务CreateEmployee中为重复电子邮件抛出异常。
我认为这是我认为最适合或最适合该问题的问题。 我建议1)选项,因为我认为这是一个验证问题。 但是2)选项只需要调用服务,因此它的(?)效率更高。
您认为如何?
谢谢!
我的意思是从表示层创建一个员工。 我真的很喜欢解决这个问题的观点。 我还没有想过,CreateEmployee也必须查询重复,这真的是一个问题。因为如果我认为在2个事务中ExistsEmployee和CreateEmployee可以严格执行第一个可能成功,但第二个不可以,因为在中间另一个员工可能已经创建,例如由另一个用户创建。 谢谢! – gonzalomelov
您的服务层应该提供幂函数来执行指定的数据操作。表示层一旦将输入验证为合理的,就应该简单地调用服务层。如果有业务规则输入是坏的,服务层应该报告 - 例如重复的电子邮件地址。表示层应该知道如何处理指定的失败情况(即每种异常类型)。 –
我明白了。 我会按照你所说的去提升服务层幂等的功能性,我已经忘记了或者没有真正理解它。 非常感谢! – gonzalomelov