SOA归根到底是什么?

关于此的好的、坏的想必你都已经了解得很多了。本篇文章会抛开商家们的流言蜚语,用一种简单易懂的方式来阐述面向服务编程。这会是你所看到关于SOA的独一无二的介绍。
在日常业务中有些事物并不时常改变,比如说美国加油站一直以来都在用加仑为单位销售汽油,餐馆依然使用菜单,牙科医生还是会每六个月就销售一次清洁用品。每种业务都会有一些方面不时常变动,而这部分往往占据了是业务的绝大部分。我们就称这些为核心业务功能(_core business functions)。
业务中的也存在一些常常变化的事物。价格、税率、货品分类、新产品、新市场策略、广告、新业务领域、新领域的客户等等。的确,为了生存,企业必定要变化,而且是快速的变化。不过,至关重要的是要那些变化影响不到核心业务功能。
软件开发人员早就明白变化快速的软件模块要与保持不变的部分相分离的道理。这项原则在独立的程序或系统之中有时称作是“共同封闭原则”。而运用在企业的信息管理系统之中就成了SOA。
SOA是把保持不变的核心业务功能剥离成一个个独立的服务的实践。这些服务是被多个展现层程序所调用的粉饰了的方法。展现层程序是那些容易变化的程序,用来展示数据给用户或是从用户处接收数据。
我们通过思考Internet上的商铺来帮助搞明白。客户通过浏览器来与商铺站点的展现程序相交互。展现程序解析了客户的操作,然后调用一些像是获取当前分类的数据或是为注册客户要求的服务。请注意,这些服务并不知道正在与web站点交互。他们就像是与厚客户端交互,或是3270的绿屏界面(3270是IBM的一种大型机系统,其上应用程序常以绿屏的终端形式出现,因而常称作“绿屏”应用程序)。他们只是简单返回那些web系统可能会用到的数据,并将其格式标准化。
SOA其实也就是这些了,其余部分就是一些细节。在最高的抽象层面上,SOA就是将频繁变化与不常变化的元素分离, 仅此而已。但为什么这一点会变得那么重要?
让我们再来看看Internet上的商铺。它展现给用户一个分类,从而使得用户能够将物品移入或是移出一个购物车,并且最终实现订购。这些内容的展现却很善变,市场人士喜欢令其时常变化。比如说,他们可能会想把购物车比作是边框上的滚动栏。他们想要或多或少的在产品列表上的附加说明。他们想要不同的配色,字体和布局方式。确实他们想要applets、JStart Clients、Ajax,以及无数其他的展现选择。可是所有的这些都与封装为服务的核心业务功能毫无关系。无论展现层的风吹雨打,这些获取分类以及注册流程却固定不变。这就是为何分离显得这么重要。它确保了信息处理在展现的飘摇不定中得到保护。
不过展现并非唯一易变的,业务功能也是一样。再次考虑下我们的商铺,或许在销售产品中需要增加一种优质红酒。而销售烟酒则需要验证消费者的年龄。假定我们有了能提供验证的Service。而每当有烟酒订单的时候,这个Service就会调用到。呼叫此service的决定并非来自于展现层,当然也不属于业务。而是某种特定手续所需的业务过程。业务过程变动就像是兔子跳动那样躁动不安。如果业务成长了,他们会为其业务流程增加更多的步骤以及分支。处理过程中需要调用到的那些服务无序改变,可是处理的过程却需要。因此,我们就需要将业务过程从展现层以及业务service中分离出来。如果它出现在单一的程序中,Smalltalk语言对这样的分离有个称谓,就叫做Mode-View-Controller。
值得注意的是,这么多的技术都殊途同归的与SOA有着关联。这是因为SOA并非什么特定的技术,而是某种将优化的业务功能于易变的过程与展现相解藕的方法学。这就是企业软件的MVC。
在我下一篇关于此的blog之中,我们会进入细节层面,并来关注这些服务是如何被构建的以及展现与过程的解藕是如何实现的。

(原文链接网址: http://blog.objectmentor.com/articles/2007/04/11/what-is-soa-really; Robert C. Martin的英文blog网址:http://blog.objectmentor.com/ 

作者简介:Robert C. MartinObject Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域内的资深顾问。他不仅是Jolt获奖图书《敏捷软件开发:原则、模式与实践》(中文版)(《敏捷软件开发》(英文影印版))的作者,还是畅销书Designing Object-Oriented C++ Applications Using the Booch Method的作者。MartinPattern Languages of Program Design 3More C++ Gems的主编,并与James Newkirk合著了XP in Practice。他是国际程序员大会上著名的发言人,并在C++ Report杂志担任过4年的编辑。


标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值