![第七章中间件WebService和Saas_第1页](http://file4.renrendoc.com/view/571679ae29ff0446dc14694e581a8548/571679ae29ff0446dc14694e581a85481.gif)
![第七章中间件WebService和Saas_第2页](http://file4.renrendoc.com/view/571679ae29ff0446dc14694e581a8548/571679ae29ff0446dc14694e581a85482.gif)
![第七章中间件WebService和Saas_第3页](http://file4.renrendoc.com/view/571679ae29ff0446dc14694e581a8548/571679ae29ff0446dc14694e581a85483.gif)
![第七章中间件WebService和Saas_第4页](http://file4.renrendoc.com/view/571679ae29ff0446dc14694e581a8548/571679ae29ff0446dc14694e581a85484.gif)
![第七章中间件WebService和Saas_第5页](http://file4.renrendoc.com/view/571679ae29ff0446dc14694e581a8548/571679ae29ff0446dc14694e581a85485.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WebService
SAASWeb服务:从服务谈起产品有限,服务无限“应用基地化(applicationhosting)”——软件正变为服务所谓“应用基地化”是指软件厂家在自己的服务器上运行应用程序,经由Internet将其结果提供给用户企业利用。这使得用户将通过租软件而不是买软件来满足自己的需要。以Oracle和Microsoft为首的主要软件厂家,开始真正加入应用基地化等服务事业,各厂家正加强同应用服务提供商(ApplicationServiceProvider,ASP)的合作关系。ASP在兴起开始对服务下大力气的软件公司,正对经由Internet简单地分发自己软件产品的管理模式进行改造,使得软件公司本身和第三方,可以通过远程操作支持应用。例如,德国SAP公司已开始提供名为“BusinessScenario”的服务,这是一种提供在Web环境下利用的一群软件组件所构成的应用服务。IBM的服务事业部门从事eBusiness应用基地化的负责人认为,企业今后将像使用电话一样,按使用量支付软件使用费,这一时刻的到来便意味着软件业革命的开始。Webservice的出现背景Web应用的快速发展企业应用的集成整合要求迫切EAI(EnterpriseApplicationIntegration)B2Bi(B2BIntegration)语言差异、平台差异、协议差异、数据差异带来高代价的系统集成WebService的概念提供一个与操作系统无关、与程序设计语言无关、与机器类型无关、与运行环境无关的平台,实现网络上应用的共享AServiceisapieceofsoftwarethatisnottightlycoupledwithClientapplications.ServicesaredynamicallydiscoverableandcomposableentitiesWeb服务的体系结构与Web应用的N层结构类似,区别在于顶层的面向浏览器的WebServer被面向程序的(WebServiceClient)的Web服务所取代。WebService特点Web服务是用标准的、规范的XML概念描述一些操作的接口(利用标准化的XML消息传递机制可以通过网络访问这些操作)该接口隐藏了实现服务的细节,允许独立于实现服务所基于的硬件或软件平台和编写服务所用的编程语言使用服务。Web服务履行一项特定的任务或一组任务。Web服务可以单独或同其它Web服务一起用于实现复杂的聚集或商业交易部署在Web上的对象从外部使用者的角度来看,WebService是部署在Web上的对象,具备以下特征:完好的封装性(数据和处理)松散耦合使用协约的规范性标准化高度可集成能力部署在Web上的对象对象界面描述:WSDL对象访问:SOAP对象界面发现:UDDI对象实现:EJB,COM+,CORBA以及任何可用于对象实现的技术UDDIWSDLSOAPEJB/COM+/CORBAXML&WebServicesXML及其相关技术被证明有可能解决这个问题跨语言、跨平台数据交换的标准基于XML技术的WebServices在现有的各种异构平台的基础上构筑一个通用的平台无关、语言无关的技术层Web服务的构件服务Web服务是一个由服务描述来描述的接口,服务描述的实现就是该服务。服务是一个软件模块,它部署在由服务提供者提供的可以通过网络访问的平台上。服务存在就是要被服务请求者调用或者同服务请求者交互。服务描述服务描述包含服务的接口和实现的细节。其中包括服务的数据类型、操作、绑定信息和网络位置。还可能包括可以方便服务请求者发现和利用的分类及其它元数据。服务描述可以被发布给服务请求者或服务注册中心。
WebService架构ServiceProviderServiceBrokerServiceRequesterFindBind/InvokePublishSOA模型WebService架构WebService基于SOA(ServiceOrientedArchitecture)架构。三个参与者:服务提供者(ServiceProvider)服务请求者(ServiceRequester)服务代理(ServiceBroker)三个基本操作发布(Publish)查找(Find)绑定/调用(Bind/Invoke)工作过程服务提供者将所提供的服务发布到服务代理的一个目录上服务请求者首先到服务代理提供的目录上搜索服务,得到如何调用该服务的信息根据得到的信息调用服务提供者提供的服务WebService架构ServiceProviderServiceBrokerServiceRequesterFind/UDDI/WSDLBind/InvokePublish/UDDI/WSDL相关协议UDDIRegistryWebServiceClientApplicationSOAPWhatisaWebService?一个能够使用XML消息通过网络来访问的Interface,这个Interface描述了一组可访问的操作。由SOAP+WSDL包装的Object适应松散耦合的网络环境,可通过Web访问,手段是SOAPMessage服务的行为、输入/输出都可使用WSDL描述WebServiceInterfaceInvocationSOAPWSDLDescriptionServiceRequestor什么是XMLWebService?通过标准的Web协议(HTTP)可编程访问的WEB组件开放的
Internet
传输协议XMLWeb
serviceSOAPSOAP(简单对象访问协议)–用XML实现Webservice的标准协议WSDLXMLWebservices
DescriptionLanguageWSDL–描述Webservice的语言规范,相当于访问Webservice的接口基于开放的Internet协议XMLandHTTPUDDIUniversalDescription,
DiscoveryandIntegrationUDDI-Webservice的黄页WhatisaWebService?e-Business驱动了WebService的发展,而WebService的基石是Web技术、IT技术和对象技术的融合。高度可集成的、基于Web的对象面向对象编程能够将现有的企业应用使用SOAP包装、WSDL描述,从而发布企业的商务功能或商务数据WebServicesTechnologiesSOAP(SimpleObjectAccessProtocol)–XML格式的消息交换协议消息/文档交换协议用来执行服务调用Web服务对象的面向对象的访问界面WSDL(WebServiceDescriptionLanguage)–基于XML的组件描述用来描述服务UDDI(UniversalDescription,DiscoveryandIntegration)可通过Web访问的注册中心使用SOAPMessage来访问用来发布、查找服务WSFL(WebServiceFlowLanguage–WebService间工作流描述Web服务体系结构中的操作发布为了使服务可访问,需要发布服务描述以使服务请求者可以查找它。查找在查找操作中,服务请求者直接检索服务描述或在服务注册中心中查询所要求的服务类型。对于服务请求者,可能会在两个不同的生命周期阶段中牵涉到查找操作:在设计时为了程序开发而检索服务的接口描述,而在运行时为了调用而检索服务的绑定和位置描述。绑定最后需要调用服务。在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系和调用服务,从而在运行时调用或启动与服务的交互Web服务流程图服务提供者
1.实现并部署:程序设计语言
服务
服务中介者
UDDI注册中心
4.请求返回:WSDL
2.服务发布:WSDL+UDDIAPI
服务请求者
3.服务发现:UDDIAPI+参数
绑
定
WhereisSOAPandWSDL?WSDLPublish的内容、Find的返回结果和Bind的信息都是WSDL描述的服务信息SOAPServiceRegistry的访问(Publish/Find)、Service的访问都是通过SOAPMessage实现ServiceProviderServiceRegistryServiceRequestorPublishBindFindWebService的分类Business-OrientedWebService面向企业应用的服务将企业内部的大型系统,如ERP、CRM系统等,封装成WebService的形式在网络中(InternetorIntranet)提供。企业内部的应用更容易集成;企业间的众多合作伙伴的系统对接更加容易Customer-OrientedWebService面向电子商务用户的服务主要针对原有B2C网站的改造,WebService技术为B2C网站增加了WebService的应用界面,使得桌面工具可以提供跨越多个B2C服务的桌面服务如将机票预定、炒股等服务集成到一个个人理财桌面系统中使得用户使用Internet更加方便,能够获得更加便捷的服务WebService的分类Device-OrientedWebService面向其它接入设备的服务如手持设备、日用家电等将原有的网络服务封装成WebService,支持除PC以外的各种终端如天气预报、E-mail服务、股票信息等System-OrientedWebService传统意义上的系统服务如用户权限认证、系统监控等服务将这些系统级服务封装成WebService,发布到Internet或者企业内部的Intranet上,其作用范围将从单个系统或局部网络拓展到整个企业网络或整个Internet上。如一个跨国企业的所有在线服务可以使用同一个用户权限认证服务什么是WSDLWSDL(WebServiceDescriptionLanguage)是采用XML语言来描述WebService的属性的语言,WSDL文档可以包含以下内容:What:WebService做什么Where:WebService位于哪里How:怎样调用如果将WebService作为一个分布式对象来看,WSDL就是WebService的接口描述语言(IDL)。WSDL定义了一套基于XML的语法,将WebService描述为能够进行消息交换的服务访问点的集合。WhatisUDDI?为加速WebService的推广、加强WebService的互操作能力而推出的一个计划基于标准的服务描述和发现的规范(specification)以资源共享的方式由多个运作者一起以WebService的形式运作UDDI商业注册中心IT业界和商业界的领导者的合作UniversalDescription,DiscoveryandIntegrationWhatisUDDIUDDI——UniversalDescription,DiscoveryandIntegration是一套基于Web的WebService注册中心的实现标准规范注册中心维护了一个WebService的全球目录,其中的信息描述格式是基于通用的XML格式的。包含注册WebService和发现WebService的访问协议的实现标准服务发现-UDDIUDDI计划最初是由总部在美国加利福尼亚的Ariba发起的,并在IBM和微软公司积极参与下开发的。尝试解决电子商务交易的集成和自动化问题。UDDI在两个方面提供了其解决方案:1.它定义了一系列技术规范,使商家可以用来描述自身、他们的产品和服务,以及他们在Web的商业过程。2.有一个全球企业注册表,能使跨越多个平台上的企业方便地搜索和发现对方。这个注册表将是免费的。WhatisSOAPSOAP是在松散的、分布的环境中使用XML交换结构化的和类型化的信息的一种简单协议。SOAP本身并不定义任何应用语义,如编程模型或特定语义实现,它只定义了一种简单的以模块化的方式包装数据的机制。将数据/对象打包成XML格式的数据publicclassPerson{ Stringname; intage; //方法的定义...}<Person> <name>zhang3</name> <age>20</age></Person>WhatisSOAPSOAP没有定义任何底层的传输协议可以使用HTTP、FTP、SMTP或者JMS,甚至是自定义协议来传输SOAP报文一般使用HTTP协议从某种意义上讲,SOAP可以简单理解为:HTTP+XML+RPCHTTP作为底层通信协议RPC作为一致性的调用途径XML作为数据传输的格式SOAP的调用效率比较低HTTP不是有效率的通信协议XML需要额外的文件解析SOAPHidestheImplementationUser
SOAPRequestSOAPResponseServiceProvider
HTTP
Server?SOAP
Processor用户只需要了解SOAP消息的格式,而对底层实现的细节可以无需关心EJB?Corba?DCOM?SaaS(Software-as-a-Service)与“on-demandsoftware”(按需软件),theapplicationserviceprovider(ASP,应用服务提供商),hostedsoftware(托管软件)所具有相似的含义
PaaS(Platform-as-a-Service)LaaS(Infrastructure-as-a-Service)RESTRepresentationalStateTransfer(表述性状态传递)是RoyFielding博士在2000年他的博士论文中提出来的一种软件架构风格是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁通常基于使用HTTP,URI,和XML以及HTML现有的广泛流行的协议和标准Roy在他的论文中提出了一个RESTful应用应该具备的几点约束每个资源都应该有一个唯一的标识使用标准的方法来更改资源的状态Request和Response的自描述资源多重表述无状态的服务Saas编程框架编程语言Asp.NETCLREJBJavaJSPJavaDjangoPythonZendPHPSpringJavaRailsRubySinatraRubyRuby介绍Ruby是一种开源的面向对象程序设计的服务器端脚本语言1993年由日本的松本行弘(まつもとゆきひろ/YukihiroMatsumoto)设计并开发。在Ruby社区,松本也被称为马茨(Matz)。Ruby可运行于多种平台,如Windows、MACOS和UNIX的各种版本。Ruby的特性与Smalltalk、Perl和Python类似。Ruby2.2.2三个原则一切都是对象每一个操作都是调用方法所有的编程都是元模型类和方法可以在任何时候添加或改变即使程序已经运行动态类型,对象有类型,而变量没有名称惯例类名用大写classFriendFinder…end方法和变量用小写和下划线defmethod_example…enddefstudent_number?…enddefchange_number!…end常量大写(分范围内和范围外)TEST_MODE=true$TEST_MODE=true符号:类似值为它本身的字符串 -framework=:rails :rails.to_s()=“rails” “rails”.to_sym=:rails “rails”==:rails#=>false变量、数组、哈希不需要声明变量局部变量在使用之前必须赋值实例变量和类变量在赋值之前等于nilX=3;x=‘foo’OKIntegerx=5
Wrong数组:x=[1,’two’,:three]X[1]=‘two’x.length==3;哈希:w={‘a’=>1,:b=>[2,3]}w[:b][0]==2W.keys==[‘a’,:b]方法任何值(除了固定数)都是按引用传递deffoo(x,y)return[x.y+1]enddeffoo(x,y=0)[x,y+1]enddeffoo(x,y=0);[x,y+1];end调用a,b=foo(x,y)a,b=foo(x)基本程序结构语句以;结束或新行,但在不引起混淆的情况下可以分行raise(“BOOM!”)unlessship_stable OKraise(“BOOM!”)unlessship_stable Wrong基本比较符和布尔值==,!=,<,>,=~,!~,true,false,nil常用控制流语句ifcond(orunlesscond) whilecond(oruntillcond)staments staments[elsifcond endstaments] 1.upto(10)do|i|…end[else 10.times
do…endstaments] collection.eachdo|elt|…endend 字符串和正则表达式“string”%Q{string}‘string’%q{string}a=41;”Theansweris#{a+1}”dongxul@.CN=~/(.*)@(.*)\.edu\.cn$/I/(.*)@(.*)\.edu\.cn$/i=~dongxul@.CN 如果不匹配,值是false如果匹配,值是非false,而且$1..$n捕捉组$1==‘dongxul’$2==“sdu”
都是对象,都是方法数和nil也是对象3.days.ago50.methodsnil.respond_to?(:to_s)显示的sendstr.length str.send(:length)1+2 1.send(:+,2)my_array[3] my_array.send(:[],3)my_array[3]=“foo”my_array.send(:[]=,3,”foo”)if(x==3) if(x.send(:==,3))my_func(x) self.send(:my_func,3)重要:a.b读作对象a调用方法b诗歌模式a.should(be()>=7)a.shouldbe>=7link_to({:controller=>:users,:action=>:shows})link_to:controller=>:users,:action=>:shows类和继承结合p76页attr_accessor:balanceattr_readerattr_writer元编程和反射鸭子类型如果一个事物看起来象鸭子,叫起来也象鸭子,那么它就可以当作一个鸭子类似java的接口比如一个类有each方法,那么它就可以当作集合利用mix-in实现,和java不同,不需要正式的声明模块前面用到的聚合类型方法都不是类的一部分使用模块,我们可以把方法混合进类IncludeMyModuleclassA;IncludeMyModule;endA.fooA-〉MyModule-〉method_missinginA&B->A的存取器Enumerable只需要能响应each方法就可以然后就可以用find,select,map等方法还可以加sort方法来响应<=>方法,否则不带参数的sort,sort_by,max,min方法不能用Comparable只需要响应<=>方法就提供<,<=,>,>=,==,between?方法Yield构造迭代器Java的迭代InRubymyList.map{|x|x+2}myList.selectdo|x|;x.even?;endmyList.select{|x|x.even?}.map{|x|x+2}参考书目ProgrammingRubyRuby编程语言TheRubyWay/
/tracks/ruby
/ruby//saasbook/saasbook附录/activities/hello-world/步骤:1、登陆注册免费帐户2、创建自己的仓库3、或者fork老师或别人的仓库/saasbook4、了解ssh和https方式登录c9.io以github帐号登陆CreateanewworkspaceWorkspacenameandDescription-anythingyoulikeHostedWorkspace(notRemoteSSHworkspace)PrivateorPublic:yourchoiceClonefromGitorMercurial:leaveblankChooseatemplate:selectCustomWorkspace(donotselect"Rails"or"RubyonRailstutorial"oranythinglikethat)ThenclickCreate.在命令窗口中以下命令curl-fsSL|bash--login&&rvmuse2.2.2--defaultsetupapublicsshkeypair
ls-al~/.sshssh-keygen-trsa-b4096-C“your_email@”(如果不存在)cat~/.ssh/id_rsa.pub复制并添加到github帐号Setting—sshkeys--addsshkeygitclonegit@:yourusername/hw-ruby-intro.git看readme.mdRvmuse2.2.2可以提交结果到github,版本控制gitadd.gitcommit–m“example!”gitpushRailsRails框架首次提出是在2004年7月它的研发者是26岁的丹麦人DavidHeinemeierHansson。不同于已有复杂的Web开发框架,Rails是一个更符合实际需要而且更高效的Web开发框架。Rails基于MVC(模型-视图-控制器)设计模式。Rails为你提供一个纯Ruby的开发环境Rails支持各类网络服务器和数据库Apache、lighttpd或nginx代理至Mongrel(或者使用FastCGI)。MySQL、PostgreSQL、SQLite、Oracle、SQLServer、DB2、或其他支持的系统Rails可以在各类操作系统上运行,建议采用基于unix的系统进行开发约定优于配置Rails内部的映射与发现机制不要重复你自己(Don'tRepeatYourself,或DRY).Rails4.2.5gitclonegit@:`yourusername`/hw-rails-introReadme.md#ssh-keygen-trsaherokuloginherokukeys:add(前面只要首次)herokucreate[--reporepoName]gitpushherokumaster[--reporepoName](注意它是从github提交)herokurunrakedb:migrate[-arepoName]herokurunrakedb:seed[-arepoName]herokuopen[-arepoName]从0开始Railsnewexample–t修改gemfile加gem'haml‘在group:development,:testdogem'byebug'gem'sqlite3‘group:productiondogem'pg'#forHerokudeploymentgem'rails_12factor‘endbundleinstall--withoutproductionrailss-p$PORT-b$IP打开http出现rails欢迎界面在/config/routes.rb中加入root'movies#index'resources:movies删除/public/index.htmlModel(MVC)DRYRailsgeneratemigrationcreate_movies在/db/migrate/下会看到2015120111_create_movies.rbclassCreateMovies<ActiveRecord::Migrationdefchangecreate_table:moviesdo|t|t.string:titlet.string:ratingt.text:descriptiont.datetime:release_datet.timestampsendendEndrakedb:migrate[rakedb:rollback]在/db/seeds.rb中加入movies=[{:title=>'Aladdin',:rating=>'G',:release_d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车挂靠与租赁合同全文
- 楼宇电梯框架广告合同范本
- 经销商服务合同范本
- 高一体育 弯道跑说课稿
- 《数字出版大事记》课件
- 个人流动资金借款合同简易模板
- 揭秘汽车租赁公司合同驾驶员福利待遇
- 原有住宅维修基金合同补充协议
- 标准离婚合同模板:简易版范本
- 《疫学抗体》课件
- 2023年副主任医师(副高)-肿瘤内科学(副高)考试历年真题荟萃带答案
- 工伤认定操作实务全攻略
- 产时子痫应急演练文档
- 阴式子宫全切术-手术室护理查房
- 职业健康检查流程图
- EIM Book 1 Unit 7 Learning languages单元知识要点
- 呼吸系统疾病与麻醉(薛张刚)
- WOMAC骨性关节炎指数评分表
- 5000只淮山羊和波尔山羊杂交良种养殖场建设项目可行性研究报告
- GB/T 5534-2008动植物油脂皂化值的测定
- 测量管理体系内审检查表
评论
0/150
提交评论