我应该将全局常量和常用静态函数存储在 App_Code 内部还是其他地方?

问题描述 投票:0回答:1

我正在重组 ASP.NET Webforms 应用程序中的代码。我想知道将全局可访问的、常用的常量和静态函数存储在 App_Code 文件夹或我们在文件系统中处于同一级别的 Classes 文件夹中是否更有意义。

目前,我将常量和函数存储在 Classes 文件夹中的静态类中,位于基本命名空间中。

c# asp.net function constants organization
1个回答
1
投票

好吧,是的,app_code 是“一般”放置所有“库”代码的地方,以及您的典型通用代码例程的大杂烩(不需要也不保证是一个类)。

作为一般规则,我的助手类?是的,我也在 app_code 中转储(创建)它们。

但是要记住一个大弥天大谎:

事实证明,甚至使用网络应用程序,甚至使用已发布的应用程序?

你所有的表单等背后的代码都是预编译的,包括在 app_code 中“解析”该代码。

但是,请注意我是怎么说“解决”的。

一个大问题是 app_code 仍然可以而且通常会由 IIS 编译,而不是您的发布 + 编译过程!

实际上,这意味着说一些使用较新的 Roslyn 格式的代码?

好吧,某些类型的网络托管不允许发布 .exe 和 Roslyn 位和部分(或者更确切地说,它们不允许发布 .exe 和该额外系统)。但话又说回来,谁在乎,因为你使用的是发布,所有源代码都被剥离而不是发布,对吧?

好吧,“有点”。正如我所说,整个过程的一个例外是 app_code 文件夹。它可以并且将尝试由 IIS 编译。这通常意味着您的 Roslyn 代码将会失败。

app_code 将作为原始源代码发布。

那么,我现在做什么?

我将我所有的 app_code 移到了一个名为 MyCode 的文件夹中。

添加代码模块(那些静态类例程)时唯一的额外步骤是确保您右键单击代码文件夹,并确保将构建操作设置为编译。

这个:

所以,我来自 vb 领域,在此类应用程序中使用相当多的例程和子程序是很常见的,但它们不是需要创建“实例”才能使用的类。因此在 C# 中,当然,这种通用模块代码的“替代品”当然是静态类。

还有一个供参考: 作为一种使用、拥有和享受那个(那些)静态类的编码方法,这是一种假设的、所有的快乐和美好的。但是,您不能让每个用户可以更改的静态类的公共成员。

所以,我想数据库连接字符串可能没问题,但是不能使用那个/那些静态类中公共变量的任何上下文,因为它们在访问网站的所有用户之间共享。

因此,该静态类中那些方法(函数)的局部作用域变量 100% 没问题,但不能使用作用域为所有静态类的任何变量(如果它们与一个用户有关)。

© www.soinside.com 2019 - 2024. All rights reserved.