SOA特征简介与Web扩展服务的前景展望

云计算:从基础架构原理到最佳实践之:云计算基础架构与组件 作者:禅与计算机程序设计艺术 1.背景介绍 云计算作为当今经济社会发展趋势的重要组成部分,其带来的革命性变化正在改变着人们的生活方式。随着人工智能、机器学习等新型科技的发展和不断提升,云计算将会成为下一个十年至百年的关键发展方向。 但是,在实现云计算的过程中,如何合理地划分云服务类型、 阅读详情

什么是面向服务的体系结构(SOA)?

面向服务的体系结构(SOA)表示您可以如何使用 Web 服务的大图景。Web 服务规范定义了实现服务以及与它们的交互所需要的细节。然而,面向服务的体系结构(SOA)是一种用于构建分布式系统的方法,采用 SOA 这种方法构建的分布式应用程序可以将功能作为服务交付给终端用户,也可以构建其他的服务。面向服务的体系结构(SOA)可以基于 Web 服务,但是它可能改为使用其他的技术来代替。在使用面向服务的体系结构(SOA)设计分布式应用程序时,您可以将 Web 服务的使用从简单的客户端-服务器模型扩展成任意复杂的系统。

因而,单个的软件资产成为开发其他应用程序的基本构件。您可以通过与新的代码和遗留代码一起使用的共同交互方式来减少系统的复杂性(CBDi 的 Lawrence Wilkes 开玩笑说,面向服务的体系结构(SOA)可以代表“节省我们的资产(Save Our Assets)”)。有一种标准的方法可以用于表示这些软件资产和与它们交互;现在人们关注的重点已经转移到基于这些构件的应用程序装配上来了。

虽然在这里讨论的是用于业务应用程序的面向服务的体系结构(SOA),但是面向服务的体系结构(SOA)同样也可以用于其他的分布式系统,比如网格计算和高级 Web 服务规范(例如,Web 服务分布式管理(WS-DistributedManagement)、Web 服务信任(WS-Trust)以及 UDDI)。

什么是服务?

在面向服务的体系结构(SOA)中,服务(service)是封装成用于业务流程的可重用组件的应用程序函数。它提供信息或简化业务数据从一个有效的、一致的状态向另一个状态的转变。用于实现特定服务的流程并不重要,只要它响应您的命令并为您的请求提供高质量的服务就可以了。

通过定义的通信协议,可以调用服务来强调互操作性和位置透明性。一个服务表现为一个软件组件,因为从服务请求者的角度来看,它看起来就像是一个自包含的函数。然而,实际上,服务的实现可能包括在一个企业内部的不同计算机上或者许多业务合作伙伴拥有的计算机上执行的很多步骤。就封装的软件而言,服务可能是一个组件,也可能不是一个组件。如同类对象,请求者应用程序能够将服务看作是一个整体。

Web 服务是以使用 SOAP 消息(它是用像 HTTP 这样的标准协议上的 WSDL 来描述的)的调用为基础的。使用 Web 服务的最佳实践就是与外部的业务伙伴通信。

松耦合

服务请求者到服务提供者的绑定与服务之间应该是松耦合的。这就意味着,服务请求者不知道提供者实现的技术细节,比如程序设计语言、部署平台,等等。服务请求者往往通过消息调用操作——请求消息和响应——而不是通过使用 API 和文件格式。

这个松耦合使会话一端的软件可以在不影响另一端的情况下发生改变,前提是消息模式保持不变。在一个极端的情况下,服务提供者可以将以前基于遗留代码(例如,COBOL)的实现完全用基于 Java 语言的新代码取代,同时又不对服务请求者造成任何影响。这种情况是真实的,只要新代码支持相同的消息模式。

明确定义的接口

服务交互必须是明确定义的。Web 服务描述语言(Web services Description Language,WSDL)是受到广泛支持的方法,用于描述服务请求者所要求的绑定到服务提供者的细节。服务描述的重点在于与下面几部分交互所用的操作:

服务
调用操作的消息
构造这种消息的细节
关于向何处发送用于构造这种消息的处理细节的消息的信息
WSDL 不包括服务实现的任何技术细节。服务请求者不知道也不关心服务究竟是由 Java 代码、C#、COBOL,还是由某种其他的程序设计语言编写的。它可以描述使用 HTTP 的 SOAP 调用。由于它的扩展机制,它也可以定义其他类型的交互,比如通过 JMS 提交的 XML 内容、直接方法调用、由管理遗留代码的适配器处理的调用(CICS),等等。

WSDL 的通用定义允许开发工具创建各种各样类型的交互的通过接口,同时隐藏它是如何由应用程序代码调用服务的细节。例如,如果服务是以多种交互类型公开的,Web 服务调用框架(Web Services Invocation Framework,WSIF)通过允许运行时决定调用高质量服务的最优方法来使用这种能力。

无状态的服务设计

服务应该是独立的、自包含的请求,在实现时它不需要从一个请求到另一个请求的信息或状态。服务不应该依赖于其他服务的上下文和状态。当需要依赖时,它们最好定义成通用业务流程、函数和数据模型,而不是实现构件(比如会话密钥)。当然,请求者应用程序需要服务调用之间的持久状态,但是这不应该与服务提供者分开。

这里有一个定义会话的错误方法的示例:


Requester: “What is Bruce’s checking account balance?"
Provider: “$x"
Requester: “And what is his credit limit?"
Provider: “$y"
 

 

提供者被要求记住请求之间 Bruce 的帐号,这就在服务实现中引入了复杂性。无状态的服务设计将重新定义会话,如下所示:


Requester: “What is Bruce’s checking account balance?"
Provider: “$x"
Requester: “What is Bruce’s credit limit?"
Provider: “$y"
 

 

服务粒度

操作的粒度是一项重要的设计要点。对于外部的消耗推荐使用粗粒度的接口,而细粒度的接口可能用于企业内部。粗粒度接口可能是特定服务的完整处理,例如 SubmitPurchaseOrder,在这里消息包括定义订购单所需的所有业务信息。细粒度接口可能具有用于以下方法的不同操作:CreateNewPurchaseOrder、SetShippingAddress、AddItem,等等。

虽然细粒度的接口为请求者应用程序提供了更多的灵活性,它同样也意味着交互的模式可能随着不同的服务请求者而不同。这可能使对于服务提供者的支持更加困难。粗粒度接口保证服务请求者将以一致的方式使用服务。面向服务的体系结构(SOA)不要求使用粗粒度接口,但是推荐使用它们作为外部集成的最佳实践。服务编排可以用来创建运行由细粒度操作组成的业务流程的粗粒度接口。

服务质量需要考虑的问题

面向服务的体系结构(SOA)设计将跨越计算机系统,并且还可能跨越企业边界。您不得不考虑在使用 Internet 时安全性功能和需求以及如何链接伙伴的安全域。Internet 协议并不是为可靠性(有保证的提交和提交的顺序)而设计,但是您不得不确保消息被提交并被处理一次。当这不可能时,请求者必须知道请求并没有被处理。

例如,您可能需要考虑您所部署服务的度量、可靠性以及响应时间,以便确保它们在承诺的范围之内。当您设计使用来自其他业务伙伴的服务的系统时,您就不得不考虑面向服务的管理来以协作方式管理伙伴之间的服务。

轴承故障诊断——领域知识 幅域分析、频域分析及轴承方面的领域知识 阅读详情

相关推荐

反无人机技术实战解析:从探测到拦截的全方位防御策略

本文深入解析了反无人机(C-UAS)技术的全链条防御策略。从雷达、无线电频谱、光电等多维度探测技术,到数据融合与威胁评估,再到无线电干扰、导航诱骗及物理拦截等核心拦截手段,系统阐述了如何构建从探测到拦截的实战化防御体系,为关键设施、大型活动等场景提供定制化空域安全解决方案。

weixin_29230649的博客 403

面向服务的体系结构扩展 Web 服务的前景,第 1 部分

面向服务的体系结构扩展 Web 服务的前景,第 1 部分 面向服务的体系结构的特征 级别:初级2004 年 4 月 现在的 Web 服务实现往往是简单的,通常类似于客户端-服务器模型。然而,平台中立的交换是受支持的,这就使一系列不同的客户端实现可以与作为服务器函数的新代码或遗留代码进行交互。许多文章都介绍了使这样的应用程序直接实现的技术。现在是看一看我们能够如何使用它们的更大图景的时候了。

1181

Matlab Arduino 硬件支持包安装 MATLAB_Support_Package_for_Arduino_Hardware

Matlab Arduino硬件支持包离线安装

weixin_43283734的博客 2841

SOA教程之:SOA的优点和缺点

事物的特点决定了自身所持有的优点和缺点。首先我们应当关注soa的特点。soa的的特点: 根本独立性 使用开放的标准 平台中性,不受平台限制 跨平台 组合性 扩展性 重复使用性 抽象性SOA的优点:1. 简单化系统的开发:由于soa具有组合性,可以利用现有的SOA资源,根据同样的开放标准,在不受平台限制的基础

偷乐岛 1万+

树莓派4B+红外传感器:手把手教你DIY一个能走黑线的智能小车(Python代码全解析)

本文详细介绍了如何使用树莓派4B和红外传感器DIY一个智能循迹小车,包括硬件配置、GPIO连接、Python代码实现及优化算法。通过动态PWM调速、状态机设计和赛道记忆算法,提升小车的循迹性能和稳定性。适合初学者和电子爱好者动手实践。

weixin_29188043的博客 269

神经网络基础概念总结(小白入门自用)

神经网络人工神经网络多层感知机激活函数反向传播算法损失函数权值初始化正则化方法 人工神经网络 人工神经元:人工神经元是人工神经网络的基本单元。模拟生物神经元,人工神经元有1个或者多个输入(模拟多个树突或者多个神经元向该神经元传递神经冲动);对输入进行加权求和(模拟细胞体将神经信号进行积累和树突强度不同);对输入之和使用激活函数计算活性值(模拟细胞体产生兴奋或者抑制);输出活性值并传递到下一个人工神经元(模拟生物神经元通过轴突将神经冲动输入到下一个神经元)。 人工神经网络:大量的人工神经元以某种链接方式得来的

qq_42011158的博客 648

SOA和Web Service的根本区别

SOA和Web Servcie的区别。它们有如下共同点: 都提供服务。 服务接口都是基于开发的。 服务接口和服务的具体实现都是分离的。 Web Service服务接口需要绑定具体实现服务的服务组件来实现服务,它对具体的服务实现完成了封装,实现了服务的透明化,客户端不需要知道服务是如何实现的,但是Web Service组件本身是知道服务是如何实现的,

持续改进 3274

Android SSL证书固定实战:原理、方案与避坑指南

SSL/TLS协议是保障网络通信安全的基石,其核心原理是通过非对称加密和数字证书实现身份认证与数据加密。在移动应用开发中,为了防止中间人攻击,证书固定技术应运而生,它通过将服务器证书或公钥的哈希值预置在应用内,强制校验服务器身份,从而大幅提升通信链路的安全性。这一技术对于金融、电商等高安全要求场景尤为重要。本文聚焦Android平台,深入解析SPKI固定、Network Security Configuration与OkHttp CertificatePinner等主流方案,并针对证书更新、调试兼容等常见痛

weixin_33935636的博客 403

看一下效果

Visio 2003 连接在线数据 <!-- 08日 MSDNPortal -->使用 Web 标准生成 ASP.NET 2.0 Web 站点 <!-- 08日 MSDNPortal

houbenbo的专栏 1164

docker安装部署openclaw详细教程(安装、卸载、问题处理)

摘要: 本文详细介绍了使用Docker部署OpenClaw本地AI智能体框架的全流程,包括代码下载、容器化安装、交互式配置及Token设置。Docker方案解决了环境配置复杂、依赖冲突等痛点,提供开箱即用的隔离环境。教程涵盖常见错误(如EACCES权限问题、网关启动失败、设备配对需求)的解决方案,并提供了完整的卸载指南。通过Docker部署,用户可快速构建安全、一致的AI智能体开发环境,实现大模型与本地工具的高效连接。

少说,多做 4004

超越防抖:索尼CXD5254GG芯片如何重新定义电子影像稳定

索尼CXD5254GG芯片通过融合6轴IMU与图像传感器数据,重新定义了电子影像稳定技术。其核心突破在于实时地平线校正、抑制果冻效应和镜头畸变校正,并搭载智能画质控制器提升画面细节。该芯片适用于广播制作、体育娱乐、安防监控和机器人视觉导航等专业领域,提供开箱即用的优化参数配置,大幅缩短开发周期。CXD5254GG不仅实现稳定成像,更通过姿态感知与智能优化,为专业影像应用提供了完整的稳定解决方案。

致力于lidar应用开发 114

CnOpenData 线上招聘网站信息数据

CnOpenData线上招聘网站信息数据库是一个覆盖中国主流招聘平台、时间跨度长、更新频率高的劳动力市场需求侧大数据集合。本数据库汇集了,为学术界和业界提供了一扇实时观察中国劳动力市场动态的窗口。

CnOpenData_wj的博客 2634

YOLOv8+SAM强强联合:用分割“喂“检测,复杂背景下作物AP从72%干到77.7%,杂草误检降60%

目标与背景高度相似:如农业(作物vs杂草)、工业(零件vs台面)、医学(病灶vs正常组织);遮挡严重的场景:如密集人群(人被遮挡)、森林(树木被枝叶遮挡);小目标密集场景:如无人机航拍(远处小目标易混背景)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 793

Directory.GetFiles之searchPattern一问

csdn .net blog 专家群正确回答此问题说明您对Directory.GetFiles之中的searchPattern的使用有较深的认识。假定在path之中有且仅有3个文件。其文件名分别是Blog.h, Blog.htm和Blog.html。试试看,您能不能正确得到下面3句指令的输出。 Console.WriteLine(System.IO.Directory.GetFiles(path,

dotnet.youkuaiyun.com 团队blog (测试) 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ASP.NET程序中常用代码汇总(五)

41.判断是否为数字  /**////   /// 名称:IsNumberic  /// 功能:判断输入的是否是数字  /// 参数:string oText:源文本  /// 返回值: bool true:是 false:否  ///     public bool IsNumberic(string oText)  {   try   {    int var1=Convert.ToInt32

dotnet.youkuaiyun.com 团队blog (测试) 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ASP.NET程序中常用代码汇总(三)

21.如何设定全局变量 Global.asax中  Application_Start()事件中  添加Application[属性名] = xxx;  就是你的全局变量22.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口?HyperLinkColumn有个属性Target,将器值设置成"_blank"即可.(Target="_blank")  【ASPNETMENU】点

dotnet.youkuaiyun.com 团队blog (测试) 9814

10天学会ASP.net之第一天

    Csdn dotnet blog 专家群我认为ASP.NET比ASP难很多,希望大家做好准备。难难在实现同一个效果有很多方法,大家或许会疑惑。十天学会系列教程会清晰的写出各种方法,让大家能少一点坎坷。在ASP里面,大家几乎都是使用VB,数据库嘛,也无非是SQL和ACCESS。     在ASP.NET里面,数据库还是这两个但是常用的语言多了一个C#,也是微软推荐的语言,为.NET平台定制的

dotnet.youkuaiyun.com 团队blog (测试) 9406

ASP.NET程序中常用代码汇总(四)

31. 当文件在不同目录下,需要获取数据库连接字符串(如果连接字符串放在Web.config,然后在Global.asax中初始化)在Application_Start中添加以下代码: Application["ConnStr"]=this.Context.Request.PhysicalApplicationPath+ConfigurationSettings.   AppSettings["C

dotnet.youkuaiyun.com 团队blog (测试) 8825

10天学会ASP.net之第二天

Csdn dotnet blog 专家群一、定义变量:string strExample; 字符串("aaa")char chrExample; 字符(a)bool blnExample; Bool型(true/false)DataTime datExample; 日期型("09/19/2002")int intExample; 整数(32位有符号整数)double dblExample; 浮

dotnet.youkuaiyun.com 团队blog (测试) 6668

体验.net 2.0 的优雅 -- 异步WebService调用

Csdn dotnet blog 专家群  quitgame在.net1.x中,异步WebService异步调用的一般方式为调用方法XX对应的BeginXX方法来完成,其过程类似于异步委托的使用。详情请点此了解。     在.net2.0中(准确的说是vs 2005中),异步WebService异步调用的方式的例子: void DoSomethingTest()         {        

dotnet.youkuaiyun.com 团队blog (测试) 6404

asp.net报表解决方法

Csdn dotnet blog 专家群    masey private string subTotal(int row ,int num)        {             string r = (row+1).ToString();         if( num == 0)//         {             return "=C"+r+"+F"+r+"-I"+r;  

dotnet.youkuaiyun.com 团队blog (测试) 6039

10天学会ASP.net之第三天

或许你会问,为什么需要WEB控件?WEB控间就好像VB里面的控间,可以在程序的任何地方引用,修改所有属性,有了它的配合才能完成代码分离。想一下,如果还是以前的HTML控间,我们当我们需要在某一个地方显示一段数据库的内容是不是只有用<%= %>这样势必在HTML包含了程序的代码块,就达不到分离代码和界面的目的了。     或许你还会问,为什么要代码分离那?原因很简单,不是每一个程序员都是合格的网页设

dotnet.youkuaiyun.com 团队blog (测试) 5698

Visual Studio 十个有用的小插件

csdn .net blog 专家群 hedonister<!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/m

dotnet.youkuaiyun.com 团队blog (测试) 5303
上一篇: 托管C++中函数调用的双重转换(Double Thunking)
下一篇: 关于soa的7个问题
dotnetgroup
博客等级 码龄21年 2粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值