C# 3层体系结构-如果我在web应用程序中将BAL/BLL层方法指定为静态,是否有任何问题?

C# 3层体系结构-如果我在web应用程序中将BAL/BLL层方法指定为静态,是否有任何问题?,c#,C#,我已经有了一个基于3层架构(UI、BAL/BLL和DAL)的网站。My all BAL layers方法是静态方法,它接受业务对象(实体对象)或一些其他参数(如字符串或int),并基于从数据库获取或向数据库插入数据 该网站每天点击量约为10万次,到目前为止,我还没有发现该架构中存在任何问题。我担心的是,如果由于我的BAL/BLL方法是静态的,点击次数会增加很多倍,那么可能会因为静态方法(静态方法或变量在服务器上的请求之间共享)而产生问题 我想知道的是,我的BAL/BLL静态方法真的会给我带来问题

我已经有了一个基于3层架构(UI、BAL/BLL和DAL)的网站。My all BAL layers方法是静态方法,它接受业务对象(实体对象)或一些其他参数(如字符串或int),并基于从数据库获取或向数据库插入数据

该网站每天点击量约为10万次,到目前为止,我还没有发现该架构中存在任何问题。我担心的是,如果由于我的BAL/BLL方法是静态的,点击次数会增加很多倍,那么可能会因为静态方法(静态方法或变量在服务器上的请求之间共享)而产生问题

我想知道的是,我的BAL/BLL静态方法真的会给我带来问题,什么时候访问者会增加,同时点击率会在那里,或者这会很好吗


很抱歉,我不是这方面的专家。

只要静态方法是线程安全的,您就可以使用静态方法。如果这些方法只使用/操作传递给它们的参数,那么它们是线程安全的。(只要传入的每个对象都是线程安全的,并且这些对象持有的每个对象都是线程安全的,…)等等。

线程安全不应取消选中。运行。

静态方法不稳定。 静态方法使应用程序不可伸缩。 如果不能使它们成为非静态的,请检查您的体系结构

我建议您使它们成为非静态的,在服务中转换BLL类,提取接口和公共模型。使用IoC容器注入正确的BLL服务。
将DAL设置为服务并将其注入。

My对象(正在传递给BAL/BLL)只有与数据库表对应的属性。除此之外,我几乎没有使用任何东西来传递BAL静态方法。然而,在my DAL中,从BAL调用的静态方法可能在整个类中全局使用很少的字符串变量。如果我的BAL是静态的,但是我的DAL不是静态的,并且不是线程安全的,这会产生问题吗?如果你只读取那些字符串变量,那么在这个上下文中它是线程安全的。感谢onof,为什么它是不可伸缩的?有什么问题吗?如果是Concurrent用户,多个用户会使用静态方法返回的相同数据吗?不会,但您不能测试层,不能重用组件和逻辑,不能运行单元测试、回归测试和性能测试。共享变量是危险的,因为您无法预测数据流。