Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何查找大型.NET应用程序中未使用的部分?_C#_.net_Obsolete - Fatal编程技术网

C# 如何查找大型.NET应用程序中未使用的部分?

C# 如何查找大型.NET应用程序中未使用的部分?,c#,.net,obsolete,C#,.net,Obsolete,考虑一个大型多层企业web应用程序和许多具有非常复杂功能的服务,这些服务大多在服务器端使用.NET(C#)编写,在客户端使用html和javascript编写,由数百个页面组成,服务调用(操作)的数量高达数千,托管在多台服务器上,开发时间超过15年。有些零件是非常新和现代的,其他零件是传统的 这个应用程序的某些部分已经过时,实际上没有人再使用这些部分了。无论这些是整个未使用的子应用程序、未使用的页面、文件、服务调用、方法,甚至是代码行,都无关紧要。旧部件不提供任何使用统计信息,但使用依赖项注入

考虑一个大型多层企业web应用程序和许多具有非常复杂功能的服务,这些服务大多在服务器端使用.NET(C#)编写,在客户端使用html和javascript编写,由数百个页面组成,服务调用(操作)的数量高达数千,托管在多台服务器上,开发时间超过15年。有些零件是非常新和现代的,其他零件是传统的

这个应用程序的某些部分已经过时,实际上没有人再使用这些部分了。无论这些是整个未使用的子应用程序、未使用的页面、文件、服务调用、方法,甚至是代码行,都无关紧要。旧部件不提供任何使用统计信息,但使用依赖项注入

在不更改实际源代码的情况下,如何根据对生产服务器的访问自动找出哪些部件未使用?因此,问题不是找到未引用/无法访问的代码。这是关于寻找用户不再实际使用的部件

一种选择是查看查询日志。这会发现未使用的页面,但很难(繁琐的手动过程)找出后台的哪些部分仅由这些页面使用

另一种选择可能是监视服务器上的文件访问。这有意义吗?这可行吗


还有一个想法是做一些类似于测试覆盖率工具的事情,但不是在测试期间。假设调试符号可用,是否可以在实时C#.NET应用程序中测量覆盖率(如执行的代码行数)。当你编码时,它会告诉你这些问题

不过,您也可以在事后检测问题。在菜单中,您将找到条目“ReSharper>Inspect>解决方案中的代码问题”。
它将创建一个报告,您将在“代码中的冗余”下找到它。

您可以使用ReSharper。当你编码时,它会告诉你这些问题

不过,您也可以在事后检测问题。在菜单中,您将找到条目“ReSharper>Inspect>解决方案中的代码问题”。
它将创建一个报告,您将在“代码冗余”下找到它。

如果不真正了解情况,很难给出答案。然而,我不认为有什么自动或简单的方法。我不知道最好的解决办法,但我可以告诉你我会怎么做。我首先从(IIS?)服务器收集所有日志文件(至少一年,代码可以一年使用一次)并分析这些文件。这将使您能够最好地了解哪些部件是外部调用的。你有那些日志吗

还要检查事件日志。有时会出现诸如“目录不存在”之类的消息,这可能意味着该服务已多年不起作用,但没有人注意到。并检查冗余应用程序,可能应用程序在多个服务器上处于活动状态

检查带有时间指示的内部表格以及最近输入的loginfo

检查文件上的日期和分析数据库可能会提供额外的信息,但我认为这不会真的有帮助

根据用户输入或应该过时的应用程序,列出所有您认为过时的应用程序

使用您的发现创建一个基于应用程序/代码过时概率的列表。根据您的列表,下一步可能是:

  • 删除冗余应用程序
  • 查找文件系统的数据模型中的更改,并检查这些更改是否仍然与代码匹配
  • 分析数据库中的无效查询。这可能表示数据模型已更改,导致应用程序停止工作。如果没有人注意到,则此应用程序或功能已过时
  • 在有疑问的代码中添加日志记录
  • 查看应用程序级别,从将调用标记为过时、注释/删除未使用的代码或重定向到(新)等效代码开始
  • 关闭应用程序并监视发生的情况。如果存在依赖项,则可以采取措施删除此依赖项或选择让应用程序运行
监控你行为的影响将有助于你解决问题。我希望这个答案能给你一些想法

--更新--

可能有可用的日志记录,但收集、阅读和口译可能既困难又耗时。为了便于监控,您可以考虑以下几点:

  • 监视数据库:您可以使用探查器工具,但是创建一个触发器来记录所有CRUD操作以及您需要的所有信息可能会更容易。创建一个程序,该程序可以读取数据库的方案,并按表、存储过程和视图过滤日志,以确定哪些未使用。我没有调查,但也许您也可以监视回滚和异常

  • 监视IIS。当然也有日志文件,但是你也可以考虑在网站上添加一个模块,在那里你可以编写自定义代码来监控你想要的任何东西。所有交通都经过模块。请看这里:。如果我没有弄错的话,您所要做的就是将模块添加到网站,并将网站配置为使用该模块。创建一个程序来过滤登录url、状态、ip、标识等,以确定使用了什么


我认为这对于第一次分析来说已经足够了。然后是解释日志。也许您将看到一种组合日志的方法,这样您就可以将请求链接到某些数据库操作,而无需查看或更改代码。只是一些想法。

在不真正了解情况的情况下,很难给出答案。然而,我不认为有什么自动或简单的方法。我不知道最好的解决办法,但我可以告诉你我会怎么做。我首先从(IIS?)服务器收集所有日志文件(至少一年,代码可以一年使用一次)并分析这些文件。这将使您能够最好地了解哪些部件是可用的