假设您有一个Web应用程序,根据用户输入的某些数字,当他/她单击按钮时,您会给他另一个数字(简化)。所有数据都存储在SQL Server中。现在,我可以将所有必需的数据提供给业务访问层并在那里进行计算。或者在数据库中进行计算存储过程并将结果发送给应用程序。我非常喜欢后者,因为我发现它更容易。但有些人可能认为所有业务逻辑都必须位于应用程序的业务层中。我觉得如果应用程序中有任何业务逻辑,它属于业务层。但您不必在应用程序中拥有与数据相关的业务逻辑。
专家会推荐什么?
答案 0 :(得分:2)
如果我可以改写你的问题,我想你会问:“我应该把我的业务逻辑放在tsql还是c#中?”
就个人而言,我强烈推荐使用c#(或vb.net,如果你正在使用它)。作为一种编程工具,它为您提供比tsql更多的功能。当我说权力时,我的意思是能够编写易于理解,逻辑性良好,组织良好的自我记录代码,更重要的是,易于维护。面向对象的技术(如抽象类和接口)不仅允许您创建可重用的代码片段,还允许您实施易于跟踪的业务逻辑。这可以使用存储过程进行模拟,但最终会跳过箍来实现它,然后在出现问题时跟踪它。
代码存储库也构建为比SQL服务器更容易与VS集成,并且更改管理,甚至本地开发环境维护变得更加困难当数据集中的数据库太大而无法在本地运行而不是更新开发人员c#代码的本地工作副本。
当然,在单个开发人员场景中,当没有其他人可以使用此应用程序时,与开发人员使用tsql与任何其他工具的舒适度相比,协作和变更管理方面的考虑要轻松。
最后,仅仅因为c#提供了丰富的语言功能,并非每个人都使用它们。我可以(并且!!)编写1000行c#方法,就像我可以编写1000行存储过程一样容易。
希望这有帮助, 劳伦斯
答案 1 :(得分:1)
你可以做任何一件事。如果您想在不触及数据库的情况下分发数字,那么您需要在业务层中进行计算。业务层是一个好地方,因为它比存储过程更容易调试,并且可以进行单元测试。