- 推荐序一:架构师真正要学会的事情
- 推荐序二
- 译者序 2.0
- 序
- 关于本书
- Part Ⅰ 什么是软件架构
- 第 1 章 什么是架构
- 第 2 章 架构的种类
- 第 3 章 软件架构是什么
- 第 4 章 敏捷软件架构是什么
- 第 5 章 架构对上设计
- 第 6 章 软件架构重要吗
- 第 7 章 问题
- Part Ⅱ 软件架构的角色
- 第 8 章 软件架构的角色
- 第 9 章 软件架构师应该编码吗
- 第 10 章 软件架构师应该是建造大师
- 第 11 章 从开发者到架构师
- 第 12 章 拓展 T
- 第 13 章 软技能
- 第 14 章 软件架构不是接力运动
- 第 15 章 软件架构要引入控制吗
- 第 16 章 小心鸿沟
- 第 17 章 未来的软件架构师在哪里
- 第 18 章 每个人都是架构师,除非他们有其他身份
- 第 19 章 软件架构咨询师
- 第 20 章 问题
- Part Ⅲ 设计软件
- 第 21 章 架构驱动力
- 第 22 章 质量属性(非功能需求)
- 第 23 章 处理非功能需求
- 第 24 章 约束
- 第 25 章 原则
- 第 26 章 技术不是实现细节
- 第 27 章 更多分层等于更高复杂度
- 第 28 章 协同设计是一把双刃剑
- 第 29 章 软件架构是对话的平台
- 第 30 章 SharePoint 项目也需要软件架构
- 第 31 章 问题
- Part Ⅳ 可视化软件
- 第 32 章 沟通障碍
- 第 33 章 对草图的需要
- 第 34 章 无效的草图
- 第 35 章 C4:语境、容器、组件和类
- 第 36 章 语境图
- 第 37 章 容器图
- 第 38 章 组件图
- 第 39 章 是否包含技术选择
- 第 40 章 你会那样编码吗
- 第 41 章 软件架构和编码
- 第 42 章 你不需要 UML 工具
- 第 43 章 有效的草图
- 第 44 章 C4 的常见问题
- 第 45 章 问题
- Part Ⅴ 为软件生成文档
- 第 46 章 代码不会讲述完整的故事
- 第 47 章 软件文档即指南
- 第 48 章 语境
- 第 49 章 功能性概览
- 第 50 章 质量属性
- 第 51 章 约束
- 第 52 章 原则
- 第 53 章 软件架构
- 第 54 章 外部接口
- 第 55 章 代码
- 第 56 章 数据
- 第 57 章 基础设施架构
- 第 58 章 部署
- 第 59 章 运营和支持
- 第 60 章 决策日志
- 第 61 章 问题
- Part Ⅵ 开发生命周期中的软件架构
- 第 62 章 敏捷和架构的冲突:神话还是现实
- 第 63 章 量化风险
- 第 64 章 风险风暴
- 第 65 章 恰如其分的预先设计
- 第 66 章 初识软件架构
- 第 67 章 问题
- Part Ⅶ 金融风险系统
- 第 68 章 金融风险系统
- Part Ⅷ 附录:技术部落 的软件指南
第 27 章 更多分层等于更高复杂度
我们在培训课程中学习的金融风险系统案例的关键功能需求之一是解决方案应该能够分发数据到企业局域网用户的一个子集。显然有很多种不同的方法来解决这个问题,其中最简单的是允许用户通过一个内部的Web应用程序访问数据。既然只有组织内用户的一个子集应该看到数据,任何解决方案对数据都需要某种形式的认证和授权。
鉴于最近围绕Web 2.0和富互联网应用的传言,培训班里有一个组认为允许通过微软Silverlight应用程序访问数据会很不错。他们已经想过构建一个ASP.NET应用程序,但又喜欢Silverlight提供的更多可能性,比如交互式地切割数据。他们这个决定的另一个驱动因素是Silverlight客户端可以“免费”提供,花费的时间“和构建一个ASP.NET应用程序是一样的”。“免费”是一个非常大胆的观点,特别是考虑到他们有效地向软件系统中添加了一个额外的架构层。下面是我画的他们设计的概况,用以说明增加的复杂度。
虽然我不认为Silverlight应用程序不难构建,然而小组没有指出的关键问题是数据从哪来。像往常一样,有一些选项;从直接访问数据数据库,到在中间层暴露一些数据服务。
小组已经考虑了在IIS(Internet Information Services,互联网信息服务)Web服务器上部署一些Windows通信基础(WCF,Windows Communication Foundation)服务,作为数据暴露机制,但这导致了更多的问题。
1.你需要向Silver客户端暴露什么操作?
2.你会使用哪些技术捆绑和协议?
3.你如何确保人们不能插入自己定制的WCF客户端并消费服务?
4.如何部署和测试?
5.其他。
非功能需求
在这个案例学习中,第三个问题很重要。数据只应该被一小部分人访问,我们确实不想暴露一个任何可以访问开发工具的人都能消费的Web服务。
大多数安全意识很强的组织会在自己托管的对外Web服务器和隔离区之间部署防火墙,但我也见过一些软件系统,同样是那些受保护的Web服务器随后去访问正常的企业局域网内部服务器上部署的未受保护的Web服务。假设我的笔记本电脑能连接到企业局域网,通常就没有什么能阻止我打开微软Visual Studio之类的开发工具,定位到服务定义(比如一个WSDL,Web Services Description Language,Web服务描述语言文件),以不正当用途消费Web服务。在这种情况下,必须考虑数据服务的认证和授权,Silverlight客户端也是如此。这需要对安全有全面的考虑。
时间和预算:没有什么是免费的
回到构建Silverlight客户端不会比构建ASP.NET应用程序更花时间的断言,其实这不可能,因为需要开发额外的数据服务来支持Silverlight客户端。在这种情况下,额外的富客户端层带来收益的同时,也要考虑到额外引入的复杂度。所有的架构决策都少不了权衡。更多的可移动部件意味着更多的设计、开发、测试和部署工作。不管厂商的市场炒作会怎么说,从来没有什么是免费的,你需要评估给设计增加额外层的优缺点,特别是如果它们产生了额外的进程间通信。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论