我这里没有具体的问题,但我更多的是寻找关于我正在开始工作的新软件项目的一些指导。
以下是该项目的说明:
我正在重构用Visual Basic 6编写的Windows软件,并使用MS SQL Server作为数据库。代码与SQL查询紧密耦合,并引用旧的活动X控件。
该软件可以在独立模式下运行,在该模式下,它仅在一台计算机上运行一个实例,或者在分布式模式下运行,同时在多台计算机上运行所有这些实例都连接到共享数据源。
该软件的用户需要使用与客户端软件集成的各种USB设备。 (我假设这意味着该软件的新版本需要是桌面应用程序,而不能是基于浏览器的Web应用程序。)
该软件的新版本将更新为使用新技术,以使代码现代化并提高性能。
我希望新软件的架构既可以是逻辑3层,也可以使用适当的设计模式。虽然我是设计模式的新手,但似乎有机会在新版本的软件中使用抽象工厂,观察者和单例模式。
在一个非常通用的解释中,该软件有一个“员工”数据库表,用于存储有关员工的信息。客户端具有网格视图,允许用户查看存储在数据库中的员工信息,并通过网格视图对数据进行修改。客户端可以使用具有文本字段和下拉菜单的表单将数据添加到员工数据库。员工相关数据也可以由客户端的USB设备捕获,然后该数据也可以添加到员工数据库中。
就这与架构的关系而言,我猜测可能存在一个可观察的单例员工对象,该对象由数据显示对象(如网格视图对象)观察,并且这些数据显示对象由抽象工厂方法创建。 (这有意义吗?)
新软件将使用Visual Studio 2010在Visual Basic中编写。除此之外,没有其他技术已经确定。
我认为我们将使用与Windows演示基础相对的Windows窗体,但我不确定是否可能有一些我们想要的图像处理功能,最好用WPF完成。
从我读过的内容我喜欢Entity Framework和Linq,但我不确定它是如何与业务逻辑层一起使用上面提到的设计模式的。
另外,我试图了解我们是否可以使用Windows通信基础和Web服务。当软件在分布式模式下运行时,这是有意义的,但在独立的单机部署中没有多大意义。添加Web服务和使用IIS对于我们要完成的任务可能过度。我不知道。
所以这就是我正在研究的,以及我一直在阅读和研究的内容。我非常感谢您对此的看法以及您可以提供的任何指导。
谢谢!
答案 0 :(得分:3)
除了你在开发过程中会学到很多东西这一事实我可以给你以下建议:
在数据库中使用Stored Procedures进行数据库访问。这将防止并发问题,并允许事务。这意味着如果出现问题(用户计算机崩溃等),则不会丢失数据或数据完整性
将Windows窗体视为用户和数据库之间的“接口”。因此,它们不应包含跟踪数据的任何内容(让数据库执行此操作),它们只是收集和显示数据的一种方式
答案 1 :(得分:1)
我的经历非常相似。
我尝试将作为独立应用程序运行的VB6数据库项目导入VB 2005,代码非常难看。
我发现使用VB.NET(实际上是VB 2005)进行三层数据库应用程序非常有用的一本书是由Murach发布的 ADO.NET 2.0 with VB 2005 。让我快速上手,它提供了编写三层数据库应用程序(业务层,表示层和数据库访问层)的直接示例。
不能确定是否有更新版本的书,但我对那个版面的布局印象深刻。它还处理网络应用程序。
除此之外,我还做了一些代码生成,以简化我的项目的Object
类和数据库访问类的浏览。
答案 2 :(得分:0)
我相信这个项目真的会让你学习并获得很多经验。
就像eddy556所说,只使用表单作为接口。它的工作方式更好。
另外,如果您有任何问题,请不要犹豫。这就是我们StackOveflow团队无论如何都在这里。
祝你好运。