数据库逻辑应该如何存储在网站中?

时间:2010-08-23 07:24:43

标签: asp.net dataset sql-server-express

我是网络开发的新手,正在一个简单的社交网站上制作迷你项目。

我正在使用ASP.NET和C#& SQL Server 2008 Express。

我读过关于如何为数据库创建数据访问层(DAL)的文章。一种方法是创建强类型数据集&适配器通过Visual Web Developer提供的设计器工具。

所以,我已经创建了这个强类型的东西,所以这是我的DAL。 我还阅读了有关业务逻辑层(BLL)的文章,但对于这个项目,我想放弃这一层,并通过我的网站代码直接使用DAL。

然后,我读到了如何在Session变量中存储数据集是不明智的。我的第一印象是,登录后,我可以创建一个强类型数据集的实例,填充它,然后将其存储在会话对象中,以便在各个页面中使用。

那么,我应该怎么做呢?我应该在每个页面访问中创建和填充我的数据集实例吗? 我应该在每个页面退出时调用Update()吗?

请原谅我,如果我看起来像是在黑暗中感觉到,但我很困惑......即使经过大量的搜索。

修改 对于那些对细节感兴趣的人,我发表了评论,但也决定将其纳入此处:

但这是一个相对较小的网站。注册,登录,朋友邀请&朋友列表,朋友消息,个人资料页面。就这样。此外,这将是我长期开发的唯一网站,这就是为什么我不想让TOO陷入糟糕的做法

3 个答案:

答案 0 :(得分:0)

如果您构建业务层,则不会在代码中的任何位置重复代码(业务逻辑)。如果你最终直接从你的页面调用DAL,你最终可能会在应用程序的任何地方重复出现相同逻辑的块,并且会出现维护噩梦。

我不知道您的应用程序有多复杂,但在大多数情况下拥有业务层是有意义的。

让您的业务层负责更新您的数据,公开您的网页可以调用的方法。

如果您需要了解更多信息,请查看名为“High-Cohesion and Low Coupling”的原则

答案 1 :(得分:0)

你应该尽可能无国籍。在会话中存储大量内容会损害您的网站性能和可扩展性。

也许如果您能给我们一个具体的例子,我们可以为您提供有关可能解决方案的更多信息吗?

无论如何,尝试在空闲时间阅读这篇文章,这是一个有趣且语言不可知的(虽然它的例子在java和c#中)软件架构的视图: alt text http://ecx.images-amazon.com/images/I/511D6FdsbXL.jpg

答案 2 :(得分:0)

您可能对阅读这些文章感兴趣:http://www.asp.net/web-forms/data。我个人不再使用数据集,而是将存储库模式与自定义对象(域模型)结合使用,并使用 ORM 进行数据库对象映射(使用Linq to Sql ,实体框架或NHibernate)。

在Session中存储大量数据并没有真正完成。我建议您只在Session中存储少量数据,并在缓存对象中为所有用户共享所有内容。

我还建议你阅读这本书Domain driven design:tackling complexity in the heart of software作者Eric Evans。