`
冰火特蕾莎
  • 浏览: 20761 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

面向服务的体系架构-SOA

    博客分类:
  • SOA
阅读更多

   偶長期以來一直想寫一篇關於SOA的文字,但是遲遲没有動筆。
   偶今天感冒在家,終於可以有這個機會咯。

   面向服務的體系架構(Service Oriented Architeture,即SOA)在今天這個軟件業中,可謂是如雷貫耳,如日中天。其架勢直逼當年“面向對象”(Object Oriented ,OO)出道之時。偶們都知道,對象是現實世界中實體的縮影,面向對象編程,即面向現實世界中的實體編程。那麼“服務”又是什麼涅?如何面向“服務”去架構呢?這個東東雖然大家都聽說過,但是真正理解起來的想法可謂是千奇百怪哦。

   偶雖然也不能說真正讀懂SOA,但是偶覺得偶想象中的SOA,絕對是架構設計的巔峰之作。更為重要的是,SOA並不遥遠,近得唾手可得。

   從面向過程到面向對象到現在的面向服務,軟件的抽象程度逐漸提高,軟件的复用率也逐漸被人們作為重要話題一再提及,面向過程時期講的是函數的复用,面向對象時期講的是類和對象的重用。從零散的函數升級到了整體的對象級别,明顯是層次的進步。到了面向服務時代,就應該是組件級、或者說構件級的重用。
   然而項目中可能會出現千奇百怪,種類繁多的各種服務構件。有時候,被調者根本不知道誰會來調用,調用者也不知道應該去調用誰?(您可能覺得不太可能,但是偶可是深有體會的哦,偶要調用的組件可能還没有寫好,可能還只出現在計劃中,你根本不知道它會部署在哪台server中,是一個什麼樣的接口,但是偶這邊的業務也得進行了)。

   談到這裏,不得不引出所謂的服務中間件的概念了。其實這對偶來說是一個很陌生的概念,也是一個正在探索的概念。像ESB(SUN的openESB)和ogsi都可以作為中間件的基礎。偶覺得,既然要SOA,要分布式,就要進行得徹底一點。服務的使用和服務的提供應該圍繞着這個中間件來進行,我注册了(不一定要實現),你就可以使用。所以SOA應該不再是點對點式的服務提供和調用的關系。服務調用者不一定要知道服務提供者的接口細節,因為我只關注你在中間件上的服務注册信息而已。至於調用方式到底原則跨平台跨語言的Web Service,還是選擇皇家正統的EJB,那就看到底要把這個架構做到何種程度的松散耦合了。

   很多人看到這裏(如果能忍受偶的繁體文字和淩亂文筆堅持看到這裏的話)都覺得SOA是一個很亂很亂的東西咯。所以不得不再談談關於如何將這些亂七八糟的東西整合到一起來,即所謂的集成。
   要做應用集成,就看看以下幾種繼承的層次
   數據集成:說白了就是用同一個數據庫,同一些表啦。需要集成雙方知道對象的底細啦(數據庫都知道了,還不是底細?)
   方法集成:就是你調我的方法來獲取我的數據,你可以不用知道偶的數據庫設計結構啦。但是你必須綁定在我的方法上。
   業務集成:在應用系統之間建設業務集成總線,實現業務數據按照一定的規則在應用系統之間流動。這個好像有點SOA的感腳咯。
   表示層集成:通過注册表示層的url和唯一的一個門户系統,就可以把多個應用系統進行集成,偶們現在正是這麼做的,偶滴感腳:耦合程度很低,但是很多問題哦。
   B2B集成:跨組織的應用訪問,通過傳輸協議(HTTP)和數據描述(XML)為核心的技術路線,繼承程度不可能很高。但是雙方耦合程度也最低。

   如果涉及到SOA和應用集成的話,那麼傳統的一些架構模式可能不再適用了,像什麼MVC啦之類,因為最起碼,在你的架構裏,得多加一個層面“集成層”。

   綜上所述,偶要做出一個小小的,不算很嚴謹的結論啦(各位GGJJ,偶發現自己真是不擅長言辭,不要罵偶膚淺)。SOA是一個架構設計思想,而不是一種具體的技術,要實現SOA,首先得定出game rule。對於多個業務系統之間,這個rule必須保證是中立,不依賴於任何一方的。然後業務系統要想納入這個SOA的集群中,就必須依賴於制定這個rule的Service Manager,而非另外一個真正要被依賴的業務系統。彼此把接口暴露給Service Manager就可以了。
   SOA的要義就是:

   松散耦合
   位置透明
   規則中立

偶肯定地認為,在不久的將來,SOA必定會大行其道,成為改變軟件世界的一次革命。偶將成為SOA的忠實FANS,哈哈

分享到:
评论
1 楼 daquan198163 2009-11-06  
SOA不是据说已经快死了么?
ps:这位妹妹来自我国台湾省的吧?哈哈

相关推荐

    Java 代码实现了一个简单的文本编辑器-可运行

    Java 代码实现了一个简单的文本编辑器

    MATLAB实现基于Attention-LSTM的多特征分类预测(含完整的程序和代码详解)

    内容概要:本文详细介绍了如何使用MATLAB实现基于Attention机制的LSTM模型进行多特征分类预测。主要内容包括程序设计思路、代码实现、模型构建与训练、模型评估及可视化、以及简单的GUI界面设计。模型可以在多个领域应用,如金融数据分析、医疗诊断等。 适合人群:对深度学习和分类预测感兴趣的科研人员和开发人员,具备一定的MATLAB和深度学习基础。 使用场景及目标:适用于需要处理时间序列数据并进行分类预测的项目。目标是通过Attention-LSTM模型提高分类准确率,同时提供直观的可视化结果和友好的用户界面。 其他说明:文中提供了详细的代码实现和注释,读者可以通过实践加深对模型的理解。此外,还讨论了模型优化和未来的研究方向。

    基于Flask和SQLAlchemy 的简易仓库管理系统源码(期末课程设计).zip

    基于Flask和SQLAlchemy 的简易仓库管理系统源码(期末课程设计).zip 1.多数小白下载后,在使用过程,可能会遇到些小问题,若自己解决不了,请及时私信描述你的问题,我会第一时间提供帮助,也可以远程指导 2.项目代码完整可靠,谈不上高分、满分(多数为夸大其词),但难度适中,满足一些毕设、课设要求,且属于易上手的优质项目,项目内基本都有说明文档,按照操作即可,遇到困难也可私信交流 3.适用人群:各大计算机相关专业行业的在校学生、高校老师、公司程序员等下载使用 4.特别是那种爱钻研学习的学霸,强烈推荐此项目,可以二次开发提升自己。如果确定自己是学渣,拿来作毕设、课设直接用也无妨,但自己还是尽可能弄懂项目最好!

    民航网上订票系统 JAVA毕业设计 源码+数据库+论文 Vue.js+SpringBoot+MySQL.zip

    民航网上订票系统 JAVA毕业设计 源码+数据库+论文 Vue.js+SpringBoot+MySQL 系统启动教程:https://www.bilibili.com/video/BV11ktveuE2d

    JAVA项目报告-闹钟的设计与实现.pdf

    JAVA项目报告-闹钟的设计与实现.pdf

    毕业设计论文SpringBoot考试信息报名系统.docx

    毕业设计论文

    RJFireWall-maste真资源

    RJFireWall-maste真资源

    基于Java的简易学生管理系统开发与实现

    内容概要:本文档详细介绍了一种基于 Java 实现的学生管理系统的构建流程,涵盖 Maven 项目的搭建、主要 Java 类的设计(如 Student、StudentManager)及其功能实现(添加学生、删除学生、查询学生、列出所有学生)。项目使用 Java 标准库进行数据处理,并借助简单的文本文件完成数据的持久化保存。 适合人群:对 Java 编程有一定基础,特别是熟悉面向对象概念的初学者或进阶开发者。 使用场景及目标:适用于想要深入理解和掌握如何利用 Java 构建小型应用的开发者;本案例可用于个人学习、教学展示或者小规模学校的初步尝试。 其他说明:该文档不仅提供了详细的代码指导,还涉及到软件工程的基本方法论,有助于提升读者的实际开发能力和技术理解水平。同时,它也是一个良好的练习项目,帮助开发者提高问题解决能力和代码质量意识。

    SPI通信-STM32+RC522+OLED

    请结合我的博客看 https://blog.csdn.net/weixin_41011452/article/details/140422263?spm=1001.2014.3001.5501

    数据挖掘中决策树分类器的Python实现

    内容概要:本文档详细介绍了在CMPT459课程中的一项作业任务,即从零实现一个决策树分类器。该任务要求学生使用Python编程语言,在不借助第三方机器学习库的情况下(仅允许使用NumPy和pandas),基于提供的文件完成决策树的构建与应用。具体内容包括实现main.py, node.py 和 decision_tree.py三个核心文件,分别用于模型训练测试、节点定义以及决策树的主要方法如fit, predict, entropy等。此外,还要求提交一份实验报告,记录不同参数设置下模型的表现情况。 适合人群:适合具备Python编程基础,对数据挖掘及机器学习感兴趣的大学生或研究人员。

    C语言文件操作与输入输出

    c语言入门C语言文件操作与输入输出

    社区疫情管理系统代码springboot

    需要软件:eclipse/idea,maven环境,jdk1.8,mysql数据库 网页采用sprngboot+vue技术开发,java作为后台代码,技术用到springmvc, 所有程序保证可以运行,项目功能参考文章,如遇到运行不了请联系作者获取源码,源码制作不易, 希望多多支持给予好评。 二、项目技术 开发语言:Java 数据库:MySQL 项目管理工具:Maven 前端技术:vue+HTML 后端技术:SSM(Spring+SpringMVC+MyBatis) 前端框架:vue 三、运行环境 操作系统:Windows、macOS都可以 JDK版本:JDK1.8以上都可以 开发工具:IDEA、Ecplise都可以 数据库: MySQL5.7/8.0版本均可 小程序运行软件:微信开发者工具 Web应用服务器:7.x、8.x、9.x版本均可

    RJFireWall-mast-lio

    fast-lio

    基于 Stripformer 的快速图像去模糊的 PyTorch 实现.zip

    基于 Stripformer 的快速图像去模糊的 PyTorch 实现.zip

    三维重建-人体三维重建+姿态估计-优质项目分享.zip

    三维重建_人体三维重建+姿态估计_优质项目分享

    毕业设计论文SpringBoot考务报名系统.docx

    毕业设计论文

    数学建模竞赛论文撰写指南-基于厦门地区联合研习活动的实践分享

    内容概要:本文详细介绍了参加厦门地区数学建模联合研习活动所需撰写的论文参考框架,内容涵盖了论文的基本结构和每一部分的具体写作要点。从摘要、关键词、目录到各个章节的撰写要求,以及参考文献和附录的具体规范进行了全面指导,旨在帮助参赛队伍更加系统、科学地完成数学建模竞赛论文。 适合人群:即将参与厦门地区数学建模竞赛的学生及教师,尤其是初次接触数学建模的学生。 使用场景及目标:①作为参加数学建模比赛准备阶段的学习材料;②帮助参赛团队更好地理解和掌握数学建模论文的写作技巧与规范。 其他说明:文中强调了模型假设、模型建立与求解、模型检验、模型评价等多个环节的重要性,鼓励学生在实践中灵活运用,确保论文质量。同时,提供了参考文献的书写标准及具体案例,以便选手查阅并正确引用。

    高校学生编程能力提升的实践...-以“蓝桥杯”参赛实践为例

    【摘要】通过参与计算机编程实践项目,学生能将课堂习得的知识应用到实际项目中,编程实践是培养 学生解决实际问题能力的有效途径。“蓝桥杯”全国软件专业人才设计与创业大赛是提升学生编程能力 的有效平台,但在具体实践中却未能进行充分总结并形成一套可推广的做法。究其原因,与竞赛的机制 保障不健全、校内学科竞赛平台建设滞后、综合能力培养欠缺等有关。“蓝桥杯”试题具有实际意义和 应用背景,对教学内容和课程体系改革有一定的引导作用,参与“蓝桥杯”恰好能弥补上述不足。文章 以温州理工学院参赛学生为研究对象,从赛事组织、人员选拔、规则理解、硬件建设、培养机制和实践 基地建设等方面探究提升学生编程能力的实践途径,力争为工业和信息化领域建设培养中坚力量。 【关键词】“蓝桥杯”;程序设计;教学;人才培养;经验总结

    毕业设计论文SpringBoot网上水果超市.docx

    毕业设计论文

    深度估计-基于激光雷达+单目相机的自监督深度估计算法实现-优质项目实战.zip

    深度估计_基于激光雷达+单目相机的自监督深度估计算法实现_优质项目实战

Global site tag (gtag.js) - Google Analytics