Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 我应该如何规划系统重写的体系结构?_.net_Architecture_Rhino Mocks_Solid Principles - Fatal编程技术网

.net 我应该如何规划系统重写的体系结构?

.net 我应该如何规划系统重写的体系结构?,.net,architecture,rhino-mocks,solid-principles,.net,Architecture,Rhino Mocks,Solid Principles,我正计划重写一个我以前工作过的系统。我这样做是为了学习。下面是对旧系统的描述,新系统的基本架构,我想遵循的一些最佳实践,我想实现的目标和我的问题 让我解释一下旧系统: 1.SQL Server数据库(未规范化) 2.Palm应用程序(将数据输入数据库) 3.Web服务1(Palm应用程序向发送数据以进入数据库) 4.Web应用程序(将数据输入数据库)-我创建了这个 5.Web服务2(Web应用程序1向发送数据以进入数据库)-我创建了这个 6.网站(直接CRUD数据并打印报告) 让我解释一下新系统

我正计划重写一个我以前工作过的系统。我这样做是为了学习。下面是对旧系统的描述,新系统的基本架构,我想遵循的一些最佳实践,我想实现的目标和我的问题

让我解释一下旧系统:
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服务解决方案的用户界面解决方案。
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.我列出的某些最佳实践是否不应遵循


谢谢你抽出时间

我不知道您的系统的大小,但首先确保您不会遇到。

我不知道您的系统的大小,但首先确保您不会遇到。

体系结构的主要目的是支持需求,因此,如果不了解此特定实例中的需求/用例,我就无法判断您的体系结构是否良好

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


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

体系结构的主要目的是支持需求,因此如果不知道此特定实例中的需求/用例,我就不能说您的体系结构是否良好

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


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

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

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

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


我认为能够改进/重构一个系统是软件开发人员的日常需求,就像绿地项目一样。

我会发现更好的“学习”