我应该如何规划系统重写的架构?

时间:2010-01-06 21:57:41

标签: .net architecture rhino-mocks solid-principles

我打算重写一个我之前在其中的一部分工作的当前系统。我这样做是为了学习练习。下面是旧系统的描述,新系统的基本架构,我想要遵循的一些最佳实践,我想要实现的目标和我的问题。

让我解释旧系统:
1. SQL Server数据库(未规范化)
2. Palm Application(将数据输入数据库)
3. Web Service 1(Palm Application发送数据以便进入数据库)
4. Web应用程序(将数据输入数据库) - 我创建了这个 5. Web服务2(Web应用程序1发送数据以便进入数据库) - 我创建了这个 6.网站(直接向CRUD数据和打印报告)

让我解释一下新系统的架构概念:
1。 UI Web应用程序解决方案 - 替换旧网站 2。 UI Web应用程序解决方案 - 替换旧的Web应用程序和Palm应用程序 3。 Web服务解决方案(使用WCF) - 替换旧的Web服务1和Web服务2.
4。业务对象解决方案 - 业务对象,对数据访问解决方案的代码调用以及对业务逻辑解决方案的代码调用将放在此处。
5。业务逻辑解决方案 - 业务规则将放在此处 6。数据访问解决方案 - 将数据发送到数据库或从数据库获取数据的代码将放在此处 7。数据传输对象解决方案 - 用于传输信息,如下所示: 7.1。 Web服务解决方案的UI解决方案。
7.2。来自业务对象解决方案的Web服务解决方案。
7.3。数据访问解决方案的业务对象解决方案。

让我解释一下新系统的最佳实践概念:
1。 Web服务解决方案的单元测试 2。业务对象解决方案的单元测试 3。业务逻辑的单元测试 4。数据访问解决方案的单元测试 5。单一责任原则
6。开/关原则
7。 Liskov替代原则
8。接口隔离原则
9。依赖倒置原则

新系统目标
我希望能够生成包含单元测试的干净代码,并在学习设计模式,WCF,TDD,Rhino Mocks,Expression Blend 3,Visual Studio 2010和TFS 2010的同时围绕整个系统进行集成测试。我也希望将此系统用作未来学习新语言的参考,例如Rails。

问题
1。根据我的说法,是否有人对我的架构有疑问?有什么更好的想法吗? 2。我是否应遵循未列出的某些最佳做法? 3。我列出的某些最佳做法是否应该遵循?

谢谢你的时间!

4 个答案:

答案 0 :(得分:4)

好吧,我对你的系统大小一无所知,但首先要确保你没有遇到2nd system effect

答案 1 :(得分:1)

我会找到一个更好的'学习'(和更现实的)项目:使用系统并重构它以提高质量。这通常是一种更好的学习体验,因为它总是从头开始。

我认为能够改进/重构系统是日常软件开发人员更常见的绿色领域项目要求。

答案 2 :(得分:0)

架构的主要目的是支持需求,因此在不知道此特定实例中的需求/用例的情况下,我无法确定您的架构是否良好。

话虽如此,您基本上已经描述了一个3层分层应用程序,这通常是一种明智的方法。但是,我不会把它分解成这么多解决方案(我已经有了一个UI,业务和数据层解决方案,其中包含单独的项目)。

我不确定为什么需要“数据传输解决方案” - 为什么需要一个单独的库来处理层之间的数据传递?他们应该能够自己从堆栈中呼叫到另一个。

答案 3 :(得分:0)

首先,我认为你的方法很酷。 你有时间和预算吗? 商人的工作可能是告诉你:你不是。 现在它变得更加严肃:你需要做的是在架构方面逐步清理系统。对这些事情将缓解他们生活的团队成员提供服务(我希望你并不孤单)。 在更改之前编写的单元测试,将帮助您不间断地保持业务需求。 你的计划非常好,但我担心你无法用大爆炸达到它!据我所知,这只发生了10 ^ 100年。 做得好!