我正在为简单的操作开发我的财务应用程序。但我需要能够记录对我的记录所做的任何更改。我使用C#ASP.NET作为我的应用程序代码,使用MS SQL 2014作为我的数据库。
我的问题是:哪个更好?
应用层:在代码中编写一个方法,在DB中的历史表中创建记录?
数据库层:写入触发器/过程,在DB中的历史表中创建记录?
我主要担心的是性能 - 应用程序安装在我家的IIS服务器上,因此我需要对其进行微调,以便对我的用户来说不会延迟,并且不会在我的服务器上放置大量工作负载
答案 0 :(得分:0)
这与偏好和可维护性有很大关系。
为了可维护性,我总是采用分层方法,我自己。
以下是一个例子。
假设您在整个代码中分散了SQL插入和更新。然后,有一天,您的数据库会以这样的方式发生变化,您必须查找每个插入和更新中的每一个,并逐个更改所有这些内容。
为了论证,您还可以创建一个执行所有这些插入和更新的函数,并且每次从您的应用程序调用该特定函数。这会起作用,但可能会变得混乱,因为你最终会为不同的表格,视图等结束很多这些功能......
现在假设您使用了分层方法。然后,您只需找到执行所有更新的类并插入到一个特定的表中,然后在那里进行更改。应用程序的其余部分可能甚至不需要知道这种变化。
表现(在我看来)不是真正的因素。制作一个物体并不昂贵,但几乎不可测量。所以我会说采用分层方法。