C# 建筑/设计模式问题

C# 建筑/设计模式问题,c#,asp.net,architecture,linq-to-entities,C#,Asp.net,Architecture,Linq To Entities,昨天我和我的朋友就我开发的这个电子购物网站的架构进行了讨论。请注意,为此我使用ASP.NET。他非常惊讶地获悉,我没有将添加到购物车的项目保存在ArrayList或其他通用列表中,而是使用LINQ to实体将它们直接插入数据库。我是否可以只通过此web应用程序而不使用n-tire,或者我是否应该按照我朋友的建议去做,即使用执行更新、删除等操作的方法。。我非常感谢您的反馈,因为这对我来说是一个非常重要的难题。谢谢大家! 我认为有两件事需要考虑: 你能做的最糟糕的事情之一就是过度设计,在不需要的时候

昨天我和我的朋友就我开发的这个电子购物网站的架构进行了讨论。请注意,为此我使用ASP.NET。他非常惊讶地获悉,我没有将添加到购物车的项目保存在ArrayList或其他通用列表中,而是使用LINQ to实体将它们直接插入数据库。我是否可以只通过此web应用程序而不使用n-tire,或者我是否应该按照我朋友的建议去做,即使用执行更新、删除等操作的方法。。我非常感谢您的反馈,因为这对我来说是一个非常重要的难题。谢谢大家!

我认为有两件事需要考虑:

你能做的最糟糕的事情之一就是过度设计,在不需要的时候创建一个N层系统。如果不需要一个数据访问层,就不要把它放进去

找出对系统的需求,如果需要扩展,则必须分层设计系统,并使用更具可扩展性的数据访问方法以及获取/更新数据的服务

其次,当用户向购物车添加物品时,是否应该将这些物品放入数据库。我认为这不一定是个问题。访问数据库的成本很高,尤其是当您只需在客户端/会话端将其存储到


话虽如此,我个人喜欢使用数据访问层,我发现它使代码更干净,并使您标准化访问和更改数据的方式。不是每个类/方法都能够临时更改数据,而是必须通过DAO层中定义良好的一组接口来完成,您可以控制、审计等。通过使用DAO层,它还可以帮助设施模拟,这在测试中是非常宝贵的

N-Teir开发参考:


  • 让我确保我理解:当项目被添加到购物车中时,您会立即将其持久化,而不是等到会话完成后再将其作为单个工作单元来执行。您不关心此处的事务,因此必须具有会话id和某种标志,以指示是否购买了某个项目。当客户表示要购买时,您的程序将查询与该会话关联的所有项目,并将其所有购买的标志作为单个工作单元进行更新

    这是正确的总结吗

    您已经选择了如何处理将购物车作为单个工作单元提交的问题。我认为做事的方式不止一种,你的方式是可以辩护的

    但我不同意关于过度工程的评论。分层体系结构并不难构建。它将持久性逻辑集中在一个定义良好的包中,您可以单独测试并将其放在一边


    分层方法有很多优点。所有的开发都是一个通过将大型问题划分为更小、更易于管理的问题来管理复杂性的问题。我们使用对象和包来实现这一点。随着系统的发展,我认为这是一种更好的方法。这是客户机/服务器不像15-20年前那样广泛使用的原因之一。

    感谢您的回复。你能给我推荐一个好的教程或者一个解释了N层架构和BLL和DAL之类的东西的网站吗?