这更像是一个设计而不是实现问题。我们的数据库有一个VB.NET前端。当前的设计是使用元数据表上的表来强制执行“前端无SQL”策略。我认为我们所做的事情比硬编码更糟糕,因为我们现在有一些很好的STORED PROC意大利面条代码。我们有很多动态SQL用于构建表的完全限定名称,然后将其发送回另一个处理平面文本文件实际加载的STORED PROC。
ID DATA_TABLE_NAME DATA_TABLE_SCHEMA PTR_TABLE_NAME PTR_TABLE_SCHEMA
1 datatable DBO datatable_ptr DBO
因此,我们有一个类,它将获取数据表名称和表指针,并将其混合到VB.NET前端的类中,该类发送一个全名,如database.dbo.datatable,映射到database.dbo。 datable_ptr并使用全局临时表来加载平面文本文件。好吧有人在这个令人讨厌的元数据表中添加了一行,它让VB.NET FRONT END!必须有一个更好的方法来做到这一点,但我没有足够的经验来提出更好的通用解决方案。
程序员如何使用T-SQL和VB.NET强调代码重用和通用编程,同时保持代码的可读性和可维护性?有没有人对有设计模式的书籍或烹饪书籍提出一些建议,可以指出一些更可行的解决方案?
答案 0 :(得分:1)
在我开始提出解决方案之前,我认为我需要首先披露一些事情:
1)我仅有超过2年的专业编程经验
2)我是短视的,因为我只对每天使用的数据库有经验
3)我只与ONE(和当前)vb.Net/ TSQL公司合作。
那就是说,以下是我要做的事情:
1)您的经理很可能希望看到某种可量化的进展
2)您正在寻找一种实用的方法,以便如何处理这个问题(这个提出的解决方案提供的内容),这有利于所述可量化的进展。
3)你需要保持“前端没有SQL”的理念
4)你需要一些可扩展的东西,所以当35个以上的应用程序成为75个以上的应用程序时,你仍然可以。
解决方案:
1.创建一个新数据库,就像前端允许SQL一样(即'你想要的')
2.创建一个Web服务,它将充当前端(不能拥有SQL)和“您一直想要的”数据库之间的中间人。这将解决问题。数据库结构不需要进行模糊处理,因为它将从最终用户中删除两次。
方法:
1)最初,动态SQL可以“按原样”移动到Web服务。它可以留在那里,因为意大利面条的一部分被翻译。我们可以称之为“主要功能”,或“旧的做事方式”
2)为每个应用程序指定一个团队负责人(或每5个应用程序指定一个领导者等)。他们的责任在于创建他们的Web服务部分。您需要知道他们需要哪些表,并且他们需要知道创建Web服务时所需的格式
3)一次接受一个应用程序:
A)设置他们需要的数据库表
B)创建Web服务以将这些表与前端接口连接
C)从前端创建函数调用以访问Web服务。首先尝试与新数据库表接口的新函数,然后尝试使用Master函数与数据库接口,就像现在一样。
当应用程序切换到使用他们的“个性化”Web服务功能时,Master功能应该越来越少(即你 慢慢停止使用意大利面条存储程序)。此外,作为Web服务的创建(在此结束时可能会有尽可能多的贡献者 分散,工作可以很快地进行,并且由于主功能将是第一个启动和运行的东西, 作为一个整体的运作仍然可以照常开展业务。