我正在使用带有telerik控件(v2009 q2)的asp.net对数据驱动的应用程序进行编程。
我有一个名为BLL的类,该类包含(几乎)静态类,这些静态类返回以某些id作为参数的不同对象。通常返回的对象组为列表。
我的问题是,始终使用静态方法在结构上有任何缺陷。我知道人们将他们的业务层和数据访问层作为不同的项目。作为项目的好处是什么?因此,我可以添加更多功能,或者只是那样整理。
提前致谢
最佳答案
使用静态方法作为输入方法并不是特别重要的事情。这实际上取决于您是否需要存储状态的工作区域,因为静态定义可能不允许您存储或分隔状态信息。幸运的是,从使用静态声明返回到成员声明通常比反向操作痛苦小。如果从此类方法返回的项仅负责状态,则您甚至可能不会遇到此问题。
单独的库/项目对于分区工作单元很有用。尽管您可能会看到带有静态成员变量的怪癖,特别是在多线程应用程序中,正如Dave Swersky提到的那样,但没有严格的要求将所有内容都分成不同的库。
拥有单独的库还为您带来以下好处:
由于项目边界通常与源代码控制边界重合,因此在开发过程中更好地分离变更,从而使更多的人可以在平台的整个表面上同时工作。
如果版面和接口兼容,可以在生产中单独更新的单独零件。
更好地组织行为,功能和角色对于每个层(无论是BLL还是DAL)在给定层上相交。一些开发人员倾向于根据允许用户对给定BLL中提供的项目进行操作的方式严格隔离组件。
但是,一些团体发现大型的整体库对他们而言更好。在这种情况下,有一些重要的好处。
对于旧组件和依赖项很少更改的项目,编译时间更快(对于C / C ++开发人员来说尤其重要!)。总的来说,不变的源文件可以提示并允许编译器避免重新编译整个项目。
单个(或少量)文件升级和管理,对于那些在给定位置减少对象数量非常重要的项目。对于提供供其他方使用的图书馆的人们来说,这是非常理想的,因为这样一来,人们不容易受到个别项目的发布或更新的干扰。
Visual Studio .NET项目中的自动名称空间布局,其中使用子文件夹会自动隐含将在新代码添加中出现的初始名称空间。并不是特别出色,但是有些人觉得这很有用。
通过数据库或服务器抽象分离BLL和DAL组。这在某种程度上是中间立场,但作为组织的一个层次,人们发现此层次对于长期发展而言更为舒适。这使人们可以通过存储或接收的位置来识别事物。但是,作为权衡,尽管可以通过#3进行管理,但各个项目可能会更加复杂。
最后,我注意到的一件事是听起来您已经实现了嵌套的静态类。如果其他使用您的工作的人处于没有智能感知或其他环境快捷方式的环境中,则他们可能会觉得使用此设置非常麻烦。您可能会考虑将某些级别的嵌套展开到单独的(或嵌套的)命名空间中。这也有利于减少声明感兴趣项所需的键入量,因为名称空间声明仅需要存在一次,而每次都需要存在静态嵌套项。您的同行会喜欢这样。
关于asp.net - 业务逻辑层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1759152/