为什么不同类型的软件架构在软件行业中很重要?

时间:2009-08-14 17:35:33

标签: architecture

当我读到软件架构(MVC,SOA等)时,我有一些问题:为什么需要这么多架构?这些架构有哪些优势?如何为项目选择合适的架构?我需要遵循的指导方针是什么?

我阅读了scottGu的博客,他指出MVC将有助于搜索引擎优化。这个架构将如何帮助SEO?

7 个答案:

答案 0 :(得分:3)

没有证据表明需要这么多架构。只是有太多人认为他们可以提出一个新的完美架构来解决所有世界问题。你们有标准委员会的人员,公司的研发部门,试图在科学界获得动力的大学部门不断发明......几乎任何东西都是真的。

我可能会因为让Joel过分而投降,但他一直在写出很棒的东西。阅读这篇文章,它将提供对正在发生的事情的深入了解。

Fire And Motion

  

想想数据访问的历史   来自微软的战略。   ODBC,RDO,DAO,ADO,OLEDB,现在   ADO.NET - 全新!这些是   技术要求?结果   一个不称职的设计小组   需要重新发明数据访问   该死的一年? (那可能是它,   实际上。)但最终的结果是公正的   掩护火。比赛没有   选择,但要花费他们所有的时间   移植和跟上他们的时间   不能花在写新功能上。看   密切关注软件领域。该   做得好的公司就是那些   谁最不依赖大公司和   不必花费他们所有的周期   追赶和重新实现   修复仅出现的错误   Windows XP。绊倒的公司   是那些花太多时间的人   读茶叶弄清楚了   微软的未来方向。人   担心.NET并决定   重写他们的整个架构   .NET因为他们认为必须这样做。   微软正在向你射击,而且就是这样   只是掩护火,以便他们可以移动   前进,你不能,因为这是   如何玩这个游戏,Bubby。你是   要支持Hailstorm?肥皂? RDF?   你支持它是因为你的   客户需要它,或者因为某人   向你射击,你感觉像你   必须回应?销售团队   大公司了解封面   火。他们进入他们的客户   说,“好吧,你不必购买   我们。从最好的供应商处购买。但是,做   确定你得到的产品   支持(XML / SOAP / CDE / J2EE)   因为否则你会被锁定   树干。“然后当小   公司试图出售   帐户,他们听到的只是听话   CTO鹦鹉学舌“你有J2EE吗?”   他们不得不浪费所有的时间   在J2EE中构建,即使它没有   真的做任何销售,并给他们   没有机会分辨   他们自己。这是一个复选框功能 -   你这样做是因为你需要   复选框说你有它,但是   没有人会使用它或需要它。和   这是掩护火。

答案 1 :(得分:1)

您指的是ASP.NET MVC,而不是一般的MVC模式。 ASP.NET MVC非常强调构建干净的描述性URL,并且可以轻松自然地开发包含干净自然URL的应用程序。

清晰且具有描述性的URL是搜索引擎优化的一大优势,因为典型的搜索引擎会将与网址匹配的文本评分为高。

看一下,例如在stackoverflow上这个问题的网址,如果它的网址是https://stackoverflow.com/q=1279226&page=1

,那么google排名就不会那么高

答案 2 :(得分:1)

一些随机的谣言:

(注意:我谈的是架构概念,而不是架构神器)

系统的体系结构是系统的整体设计和构成。架构始终存在,但您可能希望确保您的架构足够好。基本上,架构是作为开发过程的一部分完成的;前期,开发期间或意外。避免使用最后一个。

做一些前期架构的一个原因是找出你需要尽早做出哪些系统的决定(例如,由于互操作性),以及你可以推迟到实际需要时做出决定。

如果您在开发过程中不断关注您的架构,请确保您始终拥有干净的结构(并且在给出正确理由时不要害怕更改它),您的系统将更容易根据需要进行扩展和修改。

我发现两者的混合是好的,试图尽早找出必要的大决策,尽量延迟制作它们(但不能迟到!)当你有尽可能多的信息来建立你的基础时决定。早期架构对于确定最小工作系统所需的最小部件也很有用,该系统可随着要求变得清晰而增长。

此外,架构可以看作是一种沟通工具;通过使用众所周知的架构模式和隐喻,可以非常轻松地将您系统的意图和工作方式传达给其他人。一个结构良好的系统可以通过易于理解的层次来识别;你可以理解一个部分,而不必知道所有其他部分的细节。它基本上是系统的导游和道路标志:)

答案 3 :(得分:0)

我不是“建筑师”。

但是,MVC(在Web开发中)使每个页面看起来像是在Web上调用一个方法(简单的意义上说)。所以,如果你看一下这个问题的网址,它比一个带有question.aspx的网址更具可读性?id = 1279140。

如果我的理解是正确的,搜索引擎将能够轻松地从URL本身获取结果,而不必从本页的文本中选择内容:)

编辑:在旁注中,想象一下,如果大多数网站都有这样的网址 - 您可以输入amazon.com/code-complete或amazon.com/mcconell。我希望你得到我想说的话(一个聪明的网站,它可以在某种程度上理解你在寻找什么)。

EDIT2:感谢@bjelli的建议。我用asp.net MVC来说这个(特别是URL是REST风格的方式)。

答案 4 :(得分:0)

MVC与SEO几乎没有关系。它也不是真正的架构。分离某些类型的代码是有意义的。例如,如果为文章创建单独的模板,则可以重复使用它来显示多种文章。如果您为某种类型的文章制作单独的模型,则可以轻松地在不同页面上使用该类型。

答案 5 :(得分:0)

博客article you're referencing很好地论证了MVC的优势:

  

使用MVC的好处之一   方法论是它有助于强制执行   清洁分离之间的关注   模型,视图和控制器   在申请中。维持一个   清洁分离的关注使得   更容易测试应用程序,   由于合同不同   应用程序组件更多   明确界定和阐明。

     

MVC模式也可以帮助启用   红色/绿色测试驱动开发   (TDD) - 您实施自动化的地方   单元测试,定义和验证   首先是新代码的要求   在你真正编写代码之前   本身。

答案 6 :(得分:0)

我有两种方式可以理解你的问题。我会回答两个问题。

  1. 为什么有不同的建筑作品? 那么任何应用程序都有不同的领域和自己的挑战:UI,与其他系统的接口,持久性。它们在很大程度上是独立的和不同的,因此每个都有它们可以应用的一组架构模式。

  2. 为什么没有一个我们都使用的完美架构? 建筑是做出权衡的艺术。

  3. - 你想快速申请吗?

    - 支持数十亿条记录和数十万用户的人吗?

    - 一个易于安装?

    - 一个容易和快速发展的东西?

    - 和诺克斯堡一样安全吗?

    - 易于使用Google

    - 应该有99.999999%的可用时间吗?

    对于不同的目标,您需要不同的架构。在那个解决方案中,在另一个案例中将无法使用。