我正在开发一个ASP.NET中的电子贸易Web应用程序。
要购买任何东西,首先,用户必须登录。假设用户已登录并开始购物。当用户点击 btnBuy 时,我将此项添加到集合中。到目前为止,一切都运作良好。
假设用户购买了某些内容,bought means here, i added item chosen to the
购物篮 which contains all the items chosen
,然后关闭了网络浏览器。我想要做的是存储此数据,以便在用户返回时能够检索此数据。因此,用户可以选择离开的地方。
到目前为止,我想到了两个选项:
1 - )使用XML文件检索数据:我可以使用XML文件检索数据,但问题是当用户删除所选项时,我需要将所有XML文件解析为删除项目选择,嗯,我认为它是昂贵的。它使应用程序非常慢。
2 - )存储在数据库中:我想存储在数据库中,但我认为它也很昂贵。因为,每次用户选择或离开某些内容时,我都需要进行连接,请求,查询等。
你们有什么想法,最好的办法是什么?我在这里走在正确的轨道上吗?
谢谢。
答案 0 :(得分:1)
ASP.NET提供了基于 Manager模式的解决方案内置的此类存储:名为配置文件。 MSDN链接从哪里开始调查详细信息:http://msdn.microsoft.com/en-us/library/2y3fs9xs%28v=vs.100%29.aspx
可以通过System.Web.HttpContext.Current.Profile访问配置文件几乎在任何地方(当然在n层中适当)。基本对象的类型为 ProfileBase 。但你可以注射你的。还有 ProfileProvider (某些默认在APS.NET中可用作 SqlProfileProvider ),或者您可以注入您的。稍后您可以根据需要将提供程序更改为目标XML,DB ...(例如,在更适合的Web场中使用DB),并使用一些性能提示,如Cache。
来自web.config的此片段显示了如何将个人资料置于播放中。
<profile defaultProvider="ProjectProfile" inherits="MyLib.ProjectProfile, MyLib">
<providers >
<clear/>
<add name="ProjectProfile" type="MyLib.ProjectProfileProvider, MyLib" />
</providers>
</profile>
您甚至可以将其用于未登录的用户!这可以通过使用另一个web.config设置来完成:
<anonymousIdentification enabled="true" />
哪个支持任何用户的唯一Cookie
答案 1 :(得分:0)
简单的购物车解决方案是在用户的浏览器中使用cookie,因为存储的数据对用户或网站来说并不重要, 这是一个样本: http://www.codeproject.com/Articles/93639/Simple-Shopping-Cart-Basket-User-Control-using-ASP
您可以阅读有关cookie的更多信息:
http://msdn.microsoft.com/en-us/library/ms178194(v=vs.100).aspx
然而,通过使用cookie,您只能在用户使用相同的浏览器访问网站时访问数据,如果对您有用,您可以使用数据库解决方案,相信我的数据库比读取/写入xml快得多文件,您还可以在用户订单完成时清理数据库