首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >架构/设计模式问题

架构/设计模式问题
EN

Stack Overflow用户
提问于 2011-02-26 21:24:49
回答 2查看 352关注 0票数 2

所以昨天我和我的伙伴讨论了我正在开发的这个电子购物网站的架构。请注意,我使用ASP.NET来完成这项工作。他非常惊讶地了解到,我不会将添加到购物车中的商品保存在ArrayList或其他通用列表中,而是使用LINQ to Entities将它们直接插入数据库。我能不能只通过这个web app而不使用n-tire,或者我应该像我的朋友建议的那样做,有执行更新,删除等的方法。我非常感谢你的反馈,因为这对我来说是一个非常重要的难题。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-26 21:33:30

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

你能做的最糟糕的事情之一就是过度设计,在不需要的时候创建一个N-Tier系统。如果不需要数据访问层,就不要在其中添加数据访问层。

找出系统上的需求,如果您需要能够向外扩展,那么您必须按层设计您的系统,并使用可伸缩性更强的数据访问方法,以及获取/更新数据的服务。

其次,当用户向购物车添加内容时,是否应该将这些内容放入数据库中。我认为这不一定是一个n-teir问题。访问数据库的成本很高,特别是当您只能将它们存储在客户端/会话端直到..

话虽如此,我个人喜欢使用数据访问层,我发现它使代码更整洁,并使您标准化访问和更改数据的方式。不是每个类/方法都能够即席更改数据,它们必须通过DAO层中定义良好的一组接口来完成,您可以控制、审计等。通过使用DAO层,它还有助于方便模拟,这在测试中是无价的。

N-Teir开发参考资料:

  1. First just understand what you are trying to accomplish!
  2. What is N-Teir Architecture
  3. Asp.net Tutorial
  4. MSDN on Application Design (From N-Tier to .NET)
票数 4
EN

Stack Overflow用户

发布于 2011-02-26 21:43:56

让我确保我理解了:当商品被添加到购物车中时,您将立即持久化它们,而不是等到会话完成后才将它们作为单个工作单元来完成。您并不关心这里的交易,因此您必须拥有会话id和某种标志,以指示是否购买了商品。当客户表示他们想要购买时,您的程序将查询与该会话相关联的所有商品,并将所有已购买的标志作为一个工作单元进行更新。

这是一个正确的总结吗?

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5127153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档