0

我正计划重写一个我以前参与过的当前系统。我这样做是一种学习练习。下面是对旧系统的描述、新系统的基本架构、我想要遵循的一些最佳实践、我想要实现的目标以及我的问题。

让我解释一下旧系统:
1. SQL Server 数据库(未规范化)
2. Palm 应用程序(将数据输入数据库)
3. Web 服务 1(Palm 应用程序将数据发送到数据库)
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.里氏替换原则
8.接口隔离原则
9.依赖倒置原则

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

问题
1.根据我的说明,有人对我的架构有疑问吗?有更好的想法吗?
2.是否有一些我应该遵循但未列出的最佳实践?
3.我列出了哪些不应该遵循的最佳实践?

谢谢你的时间!

4

4 回答 4

4

好吧,我对你的系统大小一无所知,但首先要确保你不会遇到第二个系统效应

于 2010-01-06T22:02:57.820 回答
1

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

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

于 2010-01-09T00:53:57.620 回答
0

首先,我认为您的方法很酷。你有时间和预算吗?商务人士的工作可能是告诉你:你不是。现在它变得有点严重了:你需要做的是逐步让系统在架构方面更干净。说服(我希望你并不孤单)团队成员这些事情会减轻他们的生活。在更改之前编写的单元测试将帮助您保持业务需求不间断。你的计划很出色,但我担心你无法一举实现它!据我所知,这种情况只发生了 10 ^ 100 年。干的漂亮!

于 2010-01-06T22:44:32.783 回答
0

架构的主要目的是支持需求,所以如果不知道这个特定实例中的需求/用例,我不能说你的架构是否好。

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

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

于 2010-01-06T22:32:52.160 回答