软件设计 - 三层架构

时间:2011-05-02 05:22:01

标签: c# asp.net design-patterns architecture

第3层 - 接口

第2层 - 业务逻辑(从用户获取输入,检查是否有效,发送到数据库功能)

第1层 - 数据库(创建,更新,获取记录等)


用户可以添加多个联系电话号码,如果是添加的第一个电话号码,系统会自动将该电话号码设置为主电话号码,用户可以自行更改主要电话号码。

当在数据库中创建第一个电话号码记录时,哪个层负责检查电话号码是否需要设置为主电话号码?

5 个答案:

答案 0 :(得分:5)

业务层。数据库应该存储数据,而不是制定决策。界面只与用户交互。业务层制定规则。

答案 1 :(得分:3)

当电话号码添加到用户时,您的业务逻辑应该处理它。您可以通过为其提供单元/集成测试来验证它是否有效。

答案 2 :(得分:2)

我想这取决于你的目标。因为它是您的业务层应该处理被验证/设置为主要的电话。数据库仍然需要以我认为的某种方式存储该信息。

但是在某些情况下,例如安全验证,您需要在接口,逻辑和数据库级别进行一些检查。是的,这是多余的,但我认为你会想要保证破坏你的界面或逻辑的黑客不会乱用你的基础数据。

答案 3 :(得分:1)

除了将值放入并获取值之外,N层应用程序中的数据层实际上不应该做任何事情。可以将其视为持久性服务。

除了UI代码之外,其他所有东西都进入了所谓的业务和/或逻辑层(你应该把这些东西分开来跟随像MVP,MVC或MVVM这样的东西)。

虽然这个简单的问题实际上会引发事务的问题,但是你的数据模型应该最终阻止这个问题,但是如果你不能完成作为原子单元的操作,总是有可能同时放置两个电话号码而且它们都是最终为主要(取决于应用程序和数据库之间的延迟)。为了优雅地处理这些情况,您至少需要考虑以有意义的方式传播这些问题的错误恢复(错误处理)。不要只是崩溃您的应用程序。

答案 4 :(得分:0)

只是为了添加上述答案,您可能需要考虑持久输入而不管其有效性。可以添加更多的开发(特别是如果你需要清理数据)但是根据你的应用程序它是值得的