Architecture 如何做出适用于任何应用程序的体系结构决策

Architecture 如何做出适用于任何应用程序的体系结构决策,architecture,selection,Architecture,Selection,我真的被今天可用的各种技术困住了。例如,我可以选择一个Java框架;我在市场上有很多选择——ApacheWicket、Tapestry、Click、Struts、Seam、Spring、grails、play框架。然后是数据库、ORM、缓存、JavaScript框架等。 这里的任何小错误都会在开发或维护阶段产生严重影响,我觉得这可以通过专家决策来解决 我想向这里的专家学习,他们在这样一个架构决策阶段是如何做出决定的。作为一个通用的模式,当从零开始执行任何Web应用程序开发时,选择框架和相关的技术

我真的被今天可用的各种技术困住了。例如,我可以选择一个Java框架;我在市场上有很多选择——ApacheWicket、Tapestry、Click、Struts、Seam、Spring、grails、play框架。然后是数据库、ORM、缓存、JavaScript框架等。 这里的任何小错误都会在开发或维护阶段产生严重影响,我觉得这可以通过专家决策来解决

我想向这里的专家学习,他们在这样一个架构决策阶段是如何做出决定的。作为一个通用的模式,当从零开始执行任何Web应用程序开发时,选择框架和相关的技术堆栈时,要考虑的重要决策点是什么? 例如,如果我正在为一个社交网站做架构决策,我应该如何列出各种技术,对其进行分类,评估并筛选最终的技术堆栈

我正在寻找一个通用的模式或决策过程,可以帮助所有人。该过程应适用于任何应用。银行解决方案、社交网络或其他任何东西。请指出任何有帮助的书籍/资源

我查看了以下两个网站,它们显示了相关性,但没有准确回答我的问题


从列出所有可用技术开始,创建一个表,用一个值评估每个标准。例如,您的列可能是执行速度、开发速度、价格、可伸缩性等,而这些列是每个可用的供应商/技术选择。为您需要在堆栈DB、ORM、缓存等中进行的每个软件选择创建一个这样的表


然后看一看你的项目,选择你最看重的标准。例如,有些项目需要便宜,不需要太多的扩展,而另一些项目可能成本很高,但需要很强的可扩展性。然后,从每个表中选择最符合这些要求的选项。瞧!这是您的堆栈。

+1您走的是正确的道路。关键在于确定最初的标准是什么,以及它们的相对权重/重要性。@oneworld,这个答案可能会对你有所帮助:@AdrianK是的,也许制作关于技术能力的明确表格有点过分,但你可以将其视为一个象征性的步骤-了解每种技术的优缺点,然后写下最初的标准,认真思考什么是适用的。非常感谢AdrianK和Tim的回答。这里的链接和信息对我的案例非常有用。谢谢: