C# 什么';使用共享模型应用程序的好处是什么

C# 什么';使用共享模型应用程序的好处是什么,c#,asp.net,rest,asp.net-web-api2,C#,Asp.net,Rest,Asp.net Web Api2,我不熟悉ASP.NETWebAPI,只是一个关于共享模型应用程序的问题。我正在读一本Web API书,下面是书中的图片: 书上说: 第一幅图(本机应用程序)中的隐含假设是,模型状态是持久存储的,需要访问模型的所有应用程序都将通过数据存储来访问模型,数据存储通常是某种数据库。这种方法的问题是,数据库擅长管理数据,但没有方法以对应用程序有意义的方式一致地强制执行授权或日志记录等功能。例如,可以记录特定的SQL查询,但不能记录用户执行的导致查询的wha应用程序功能 我有点困惑,为什么不可能知道是哪

我不熟悉ASP.NETWebAPI,只是一个关于共享模型应用程序的问题。我正在读一本Web API书,下面是书中的图片:

书上说:

第一幅图(本机应用程序)中的隐含假设是,模型状态是持久存储的,需要访问模型的所有应用程序都将通过数据存储来访问模型,数据存储通常是某种数据库。这种方法的问题是,数据库擅长管理数据,但没有方法以对应用程序有意义的方式一致地强制执行授权或日志记录等功能。例如,可以记录特定的SQL查询,但不能记录用户执行的导致查询的wha应用程序功能


我有点困惑,为什么不可能知道是哪个函数生成了SQL,我的意思是,如果我们可以有一个像GetData方法这样的通用方法来生成所需的SQL,并且MVC控制器或Web API控制器都只调用GetData方法来生成SQL,那么我们当然可以知道哪个控制器调用了GetData方法,我们不能吗?那么为什么我们还需要添加一个额外的层呢?

这是哪本书的?如果两个(MVC、API)控制器都调用“GetData”方法,该方法生成完全相同的SQL查询,则您无法知道MVC或API控制器是否查询了数据。只有查看数据库日志,您才知道有人叫GetData,但不知道是谁。但可能还缺少一些上下文。@monty这本书是Adam Freeman的专家ASP.NET Web API 2,面向MVC开发人员。但是,如果第二张图中有一个额外的web API控制器层,为什么我们可以知道MVC或API控制器是否查询了数据?如果没有进一步的上下文(书名为thx,我将去阅读),我假设作者实现了登录控制器。然后,日志将告诉您调用了哪个控制器加控制器方法。通过这种方式,可以将信息量扩展到自定义要求(例如,添加用户调用控制器的信息…),而不是只告诉您发送/接收/执行了哪些SQL命令的DB