我主要是一名商业应用程序开发人员,我经常听到CQRS,ServiceBus,SOA,DDD,BDD,AOP等术语。我的问题是,这些模式/做法是否仅存在于“企业”世界中?与企业世界相反的是开源社区。像Digg,LiveJournal这样的高流量网站,每当有一篇文章提到他们如何构建/扩展他们的网站时,我听到的是他们使用的开源软件(Memcached,NoSQL)来扩展/简化他们解决软件问题的方式和他们很少提到上述条款。是因为它们不像企业级软件那么复杂(我怀疑它)?或者人们只是为了保住工作而制定这些条款/做法/模式?或者我是否对软件开发和互联网网站扩展之间的差异感到困惑?
此外,我觉得随着越来越多的模式/架构/实践,我所做的似乎是错误的,因为如果我愿意投入一些时间来学习和介绍一个更好/更好的方法有点同谋。我发现自己最终将无尽的重构/学习新方法而不做任何具体的事情。
答案 0 :(得分:4)
软件是软件,设计模式可以应用于任何软件项目,无论是开源还是闭源,业余爱好或企业级别。一些非常具体的事情可能只适用于某些利基市场,或者在某些利基市场中是必要的,这些市场可能由一个已经“发明”某些特定事物的封闭源供应商主导。
但主要区别在于关键字销售情况更好。
答案 1 :(得分:2)
架构是从需求中推断出来的。建筑设计模式的差异与要求不同。开源和企业是独立的术语,软件项目既可以是开源的,也可以是企业的,也可以是两者兼而有之。
根据我个人的经验,开源大部分都在设计中,因此企业往往过度设计。
答案 2 :(得分:0)
企业应用程序和开源不是互斥的。 EA意味着一组模式可以创建可以部署到大规模环境的健壮,可扩展的应用程序。
我可以想到许多遵循EA原则的开源项目。