Architecture 对项目的架构做出决策;你的决策过程是怎样的?
我们中的许多人都是从零开始设计和开发系统的,他们都曾遇到过这样的情况:必须对项目的体系结构做出艰难的决策。在构建一个架构合理、可扩展的系统时,您(或您会)在哪里划定“下一步”的界限 我已经建立了一个大规模的网站,它在架构上已经崩溃了。有一个包含前端代码的web层,然后是处理实际工作的业务层和数据层。不同层次的逻辑分离共存于同一台物理机器上。通过使用web服务层/层,可以存在物理分离,甚至是简单的逻辑分离。由于各种原因,它没有以这种方式实现。这个决定是对还是错只是意见的问题。从我的观点来看,我还遇到过一些相对简单的应用程序设计过度的情况 当设计一个新项目的架构时,你考虑的因素有哪些?您是否有一个经常使用的一致的项目设计,您是从一开始就是n层的,还是在每个项目进入时进行评估Architecture 对项目的架构做出决策;你的决策过程是怎样的?,architecture,scalability,n-tier-architecture,Architecture,Scalability,N Tier Architecture,我们中的许多人都是从零开始设计和开发系统的,他们都曾遇到过这样的情况:必须对项目的体系结构做出艰难的决策。在构建一个架构合理、可扩展的系统时,您(或您会)在哪里划定“下一步”的界限 我已经建立了一个大规模的网站,它在架构上已经崩溃了。有一个包含前端代码的web层,然后是处理实际工作的业务层和数据层。不同层次的逻辑分离共存于同一台物理机器上。通过使用web服务层/层,可以存在物理分离,甚至是简单的逻辑分离。由于各种原因,它没有以这种方式实现。这个决定是对还是错只是意见的问题。从我的观点来看,我还遇
重复这些经历,我常常想知道,处于相同地位的其他人如何证明和做出这些考虑。我相信我们每个人都会有不同的观点,但我相信理解这些观点背后的思维过程会很有启发性。我使用-它都是内置的。给定问题的正确架构完全取决于问题。您的问题过于笼统,无法提供真正的答案,只能说我尽可能简单地保持体系结构,以考虑所有已知和预期的需求,但不简单 编辑: 对于“典型”业务解决方案,以下是我考虑的一些因素:
- 用户界面
- 它能基于网络吗?用户交互要求是什么
- 如果一个经典的web界面还不够,我可以使用更具交互性的技术,比如Sliverlight吗
- 如果必须是厚客户机(是的,仍然存在证明这一点的场景),那么部署挑战有多严重?小用户群,大用户群?我需要包括自动更新吗?是否需要强制执行
- 业务层
- 我是否有需要物理上独立的业务层的性能/可伸缩性考虑?(我的业务层在逻辑上总是分开的,如果需要的话,也很容易在物理上分开。我有时在部署Windows时考虑到这一决定,但这是一个沉重的框架,并不总是合适的)
- 我的业务规则有多简单或复杂?随着时间的推移,它们可能会有很大的发展吗?是否值得合并一个规则引擎,例如
- 是否存在异步处理要求?我需要工作队列系统吗
- 是否有可与之连接的外部系统?他们提供什么类型的接口?Web服务、COM+、XML over HTTP、专有、DB、批处理文件等
- 数据持久性
- 考虑到任何预先存在的平台选择/约束,我可以选择哪些ORM
- 广泛使用存储过程会使我受益吗?是否会有DBA来维护存储过程并随着时间的推移对其进行修改?如果没有DBA,我只在性能真正需要的地方使用存储过程。如果有DBA,则更广泛地使用存储过程将使DBA能够灵活地管理独立于应用程序的物理体系结构(但与所有增加的复杂性一样,这是有代价的)
- 横切
- 安全要求是什么?是否存在要与集成的现有机制(Active Directory/LDAP/…)?我是否需要支持基于角色的安全性
- 运营监控要求是什么?“报告此错误”功能?简单日志记录