正文:
如Brian所说,当公开API时,您应尽可能地致力于它,这意味着在最初发布后应尽可能少地更改。然而,要创建稳定的东西需要大量的前期工作,因此,如果您还没有准备好承诺API,则应尽可能将其内部化,并且出于这个原因,您可能希望将事物组合起来而不是分离它们。
但是,我不会根据5段描述为您的应用程序提供适合的架构建议。您需要做的是权衡拥有少量大型项目与拥有一堆松散耦合的小型项目之间的优缺点。我的意思是,您进行的规划越多,下游处理就越容易,前提是您坚持计划。
因此,与Brian的答案相反,我不建议您使整个系统“尽可能松散耦合”,只建议您将其松散耦合到必要程度。;) 如果滥用它,松散耦合的代码可能会引起与紧密耦合的代码一样多的问题。
见:
1.
许多小程序集与一个大程序集哪个更好?
2.
许多“小”程序集的具体缺点是什么?
最终,只有您知道您想要专注于每个“...能力”的程度,如可维护性、可扩展性、可靠性等。因此,请明确您的优先事项和目标,并相应地进行计划。
关于分支策略,您可以阅读TFS分支指南2.0,其中介绍了从基本到高级的各种分支策略。即使您不使用TFS,这也是一份很好的指南(我目前使用SVN)。由于我目前在1-4名开发人员的小团队中工作,所以我倾向于使用介于基本和标准之间的策略。我并不是在为您推荐这种策略,而是这对我们的团队效果最好。
关于在项目之间共享代码。在 SVN 中,我们可以使用“
externals”这个功能,这意味着共享文件将出现在几个文件夹中,因此当您更改一个副本并将更改提交到 SVN 时,所有其他副本将在下一次 SVN 更新时更新。但是,我不记得 TFS 是否有类似的功能。
请注意:小心 SVN 中的 externals…它们可能会引起问题。 ;)
我的建议是尽量避免共享 aspx、ascx 和 master 页面。通常它会带来比帮助更多的痛苦。而是尝试使用继承或其他替代方案来实现您的目标。
ASP.NET MVC 2.0 有一个称为“区域”的概念,您可以在其中独立地构建应用程序的子部分。据我所知,这些区域可以在与“主”应用程序不同的项目中维护。这听起来很像您所请求的内容,因此您可能应该进一步了解一下。
希望这有意义。;)