更改保存方法的哪一层?

时间:2015-06-24 12:29:49

标签: c# asp.net sql-server performance

我正在为简单的操作开发我的财务应用程序。但我需要能够记录对我的记录所做的任何更改。我使用C#ASP.NET作为我的应用程序代码,使用MS SQL 2014作为我的数据库。

我的问题是:哪个更好?

应用层:在代码中编写一个方法,在DB中的历史表中创建记录?

数据库层:写入触发器/过程,在DB中的历史表中创建记录?

我主要担心的是性能 - 应用程序安装在我家的IIS服务器上,因此我需要对其进行微调,以便对我的用户来说不会延迟,并且不会在我的服务器上放置大量工作负载

1 个答案:

答案 0 :(得分:0)

这与偏好和可维护性有很大关系。

为了可维护性,我总是采用分层方法,我自己。

以下是一个例子。

假设您在整个代码中分散了SQL插入和更新。然后,有一天,您的数据库会以这样的方式发生变化,您必须查找每个插入和更新中的每一个,并逐个更改所有这些内容。

为了论证,您还可以创建一个执行所有这些插入和更新的函数,并且每次从您的应用程序调用该特定函数。这会起作用,但可能会变得混乱,因为你最终会为不同的表格,视图等结束很多这些功能......

现在假设您使用了分层方法。然后,您只需找到执行所有更新的类并插入到一个特定的表中,然后在那里进行更改。应用程序的其余部分可能甚至不需要知道这种变化。

表现(在我看来)不是真正的因素。制作一个物体并不昂贵,但几乎不可测量。所以我会说采用分层方法。