大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> COM+ Web 服务:通过复选框路由到 XML Web Services(3) (微软中国)

COM+ Web 服务:通过复选框路由到 XML Web Services(3) (微软中国)

时间: 2021-07-31 作者:daque

soap 与 dcom 的控制性和辨别

.net remoting 的手段之一是供给充分的散布式情况,使开拓职员不妨在此情况中对序列化和议(方法化步调)和搜集和议(频段)举行拉拢与配合。.net 框架 1.0 本子中的 com+ web 效劳仅扶助一种方法化步调 (soap) 和一种频段 (http)。这并不是说其余频段和方法化步调不许运用 servicedcomponents 或 com+,而是说没有机动摆设为那些备用频段和方法化步调供给存户端和效劳器端点。暂时仍旧有效百般谈话编写的洪量 com+ 组件。即使不妨运用 com+ web 效劳将一切那些组件起用为 web 效劳,那就太好了。但正如运用 .net 框架 1.0 本子一律,并非一切现有的 com 组件都不妨运用 com+ web 效劳。固然普遍完备典型库的现有组件不妨平常处事,然而此本子不扶助某些组件,比方 windows 剧本组件 (wsc) 组件。某些搀杂的典型库(其接口具备多重接受级别,或依附于多个典型库)大概没辙平常处事。其余,因为典型库变换的控制性,惟有典型库中默许的接辩才不妨动作 web 效劳。com+ web 效劳并不是实用于一切现有非托管 com+ 组件的完备处置计划。现有非托管 com+ 组件中有第一次全国代表大会局部是运用多种编制程序谈话编写而成的,因为不大概尝试一切大概的典型库(由扶助 com+ 的百般编写翻译器天生),所以某些非托管 com+ 组件不许运用 com+ web 效劳精确颁布。com+ web 效劳的手段之一即是最大水平缩小做出这种评价所需的功夫和精神。只需将非托管 com+ 组件颁布为 com+ web 效劳,开拓职员就不妨赶快确定能否不妨将其用作 web 效劳。即使遇到题目,则不妨经过几何代替本领来处置现有的非托管组件。那些代替本领囊括编写托管或非托管的包装步调,那些包装步调供给的兼容接口不妨颁布为 web 效劳。普遍情景下,编写如许的包装步调的处事量比从新编写所有组件要少得多。这就尽大概缩小了将现有的运用步调运用为 xml web services 所需的开拓和尝试处事。运用非托管(visual basic 6.0 或 visual c++)效劳器时,常常越早绑定托管存户端运用步调和 soap,越能更好地处事。在某些情景下,即使将天生的元数据用作后期绑定的跨计划机长途代劳步调,它大概没辙平常处事。在经过 http 运用 soap 方法化步调的情景下,仍旧不妨运用很多选项(在于于目的安置情况)。com+ web 效劳为效劳器和 cao 存户端摆设天生鉴于 xml 的长途摆设文献。(wko 激活的 url 援用已嵌入天生的存户端代劳,所以不须要摆设文献。)com+ web 效劳天生直觉的功效性摆设文献,可由用户自设置以满意任何经过 http 的径直 soap 通讯所不许满意的需要。可举行自设置的地区囊括用户身份考证,如次例所示:<?xml version="1.0" encoding="utf-8"?><configuration> <system.runtime.remoting><application> <service><wellknown mode="singlecall" type="sctrans.sctranssql, sctrans, version=0.0.0.0, culture=neutral, publickeytoken=9c6052078b454cee" objecturi="sctrans.sctranssql.soap" /><activated type="sctrans.sctranssql, sctrans" /> </service></application> </system.runtime.remoting> <identity impersonate="true" /></configuration>

上例中增添的超过表露的行不妨在激活 com+ 组件(经过 soap 挪用)时运用用户的身份标识。(默许情景下,iis 假造根运用规范的 iis 身份考证。)如许在运用 soap 时不妨实行 com+ 的分区(一种 com+ windows .net server 功效),进而可按照用户的身份标识来本质挪用各别的组件。另一个不妨自设置的地区囊括存户端激活东西的存在期处置,如次例所示:<?xml version="1.0" encoding="utf-8"?><configuration> <system.runtime.remoting><application> <service><wellknown mode="singlecall" type="sctrans.sctranssql, sctrans, version=0.0.0.0, culture=neutral, publickeytoken=9c6052078b454cee" objecturi="sctrans.sctranssql.soap" /><activated type="sctrans.sctranssql, sctrans" /> </service> <lifetime leasetime="30s" renewoncalltime="30s" /></application> </system.runtime.remoting></configuration>

在 web.config 文献中增添的超过表露的行,将此 iis vroot 中的存户端激活东西的存在期从 6 秒钟变动为 30 秒。即使把 wellknown 元素的 singlecall 属性变动为 singleton,则激活动作会变动为将一切传入的本领挪用都路由到一个组件,而不是从来的对于每个本领挪用都激活一个新组件。.net remoting(一致 .net 框架的其他局部)扶助废物接收,而不扶助援用计数。这表示着在某些情景下,运用 com+ web 效劳和 dcom 时,非托管工作 com+ 组件的动作办法将有所各别。对于经过 wko 简单挪用颁布的工作本领,挪用 setcomplete 或采用机动实行(经过采用组件本领属性页的“归来此本领时机动停用该东西”复选框)是极端要害的,这是由于组件在举行废物接收前不许被开释。运用 dcom 时,援用计数常常会引导在开释组件时提交或停止工作,纵然此规则被忽视。挪动到 com+ web 效劳情况时,在废物接收情况中,工作超时之前这是不许保护的。即使挪用 setcomplete 波折或将本领摆设为机动实行波折,则表明其自己的中断没辙提交工作,由于组件被动作废物接收之前工作已超时。安排时应提防的事变

在 com+ web 效劳中,即使采用了 uses soap 复选框(运用组件效劳处置东西),将在 iis 假造根上供给两种各别的激活模子:wko 和 cao。哪一种模子更好?用户该当运用哪一种呢?wko 简单挪用激活模子看上去犹如颇为麻烦。每种本领挪用都须要创造一个新组件,实行本领挪用后,再将组件发送给外存接收器。然而,即使更加提防本能而且只能运用 wko 处置交易时,缓冲的 servicedcomponents 或缓冲的非托管 c++ 组件不妨大大缓和简单挪用激活的进程。运用缓冲的组件时,wko 激活将从缓冲池中检索东西,实行挪用,而后将东西归来到缓冲池。此和议的无状况本质平静冲池的运用普及了减少扩充性的大概。在不缓冲东西的 wko 简单挪用中,东西的人命期仅限于挪用进程。另一上面,cao 供给了效劳器上简单激活的本能上风,还不妨与某个组件的简单范例连接举行通讯。经过从存户端向效劳器举行多本领挪用不妨制止激活的缺陷。即使效劳器组件(servicedcomponent 或非托管 c++ 组件)被缓冲,则将从缓冲池中检索东西,而后在实行本领挪用时将东西归来到缓冲池。即使东西没有被缓冲,则东西人命期在于于 web.config 文献中指定的租借人命期,或由组件自己编制程序树立。人命期是很要害的,由于直到人命期到时时废物接收器才会为组件开释外存。在高含量的 cao 摆设中,这会感化开拓职员的某些安排确定。更进一步

即使您不过蓄意颁布或运用运用了 com+ web 效劳的 web 效劳,您不妨到此为止。然而,即使您蓄意自设置、扩充或大略领会运用的过程,请连接观赏底下的实质。底下的消息不是运用此项功效所必定的,然而即使您蓄意手动扩充少许功效,那些消息大概会特殊有效。com+ web 效劳是一个大略的包装步调,经过由 .net remoting 供给的一套十分充分的效劳,开拓职员或处置员不妨轻快地对其举行扩充。效劳器 iis 假造根

为运用此功效,并没有在 .net remoting 中增添湮没挂钩,而是编写了 com+ 代码以举行需要摆设,将 com+ 端点颁布为 iis 假造根。在效劳器上,这囊括向效劳器创造物理目次动作假造根,以及天生 web.config 文献,再不经过 remoting 来考察组件。即使利害托管组件(visual c++ 或 visual basic 6.0),也会天生代劳元数据,再不 remoting 不妨考察组件。即使 windows xp 体例目次是 c:\windows,则效劳器摆设文献和天生的一切元数据都将保存在以次目次树中:c:\windows\system32\com\soapvroots\vrootname当在效劳器上颁布 soap 端点时,以次天生的文献将被放入此目次中:

web.config: vroot 的基础 remoting 摆设文献,包括很多选项,可供开拓职员或体例处置员增添或编纂,以安排 remoting 的本能和安定性。

default.disco: 即使您正在开拓托管代码存户端,可与 visual studio .net 一道运用此文献,来天生对已颁布的 web 效劳的援用。即使您的交易搭档蓄意在企业外联网上开拓本人的存户端,这会更加有效。

default.aspx: 大略的 microsoft asp.net 页,不妨将每一组件颁布为超链接。

上述一切文献都是默许天生的。即使您蓄意简略个中某些功效,只需编纂或简略相映的文献。(然而,即使简略了 web.config 文献,来自 iis 假造根的一切 soap 颁布城市遏止。)一切天生的元数据都被放入以次目次以及 gac 中:c:\windows\system32\com\soapvroots\vrootname\bin在 .net remoting 中,bin 目次是一个很特出的场所。当 http 乞求加入 iis 时,将在此目次中探求步调集,所以在很多情景下,bin 目次中的颁布是独一需要的办法。然而,在颁布 soap 端点时,天生的步调集也被放入 gac,这是由于假造根的步调集处置计划的范畴仅限于 bin 目次和 gac。即使您的代码在同一台计划机上从一个假造根向另一个传播援用,只有步调集在 gac 中,要不目的假造根中的援用处置计划将会波折。即使您正在运用所天生的用来非托管 visual basic 6.0 或 visual c++ 组件的元数据,即使没有传播援用,则不妨从 gac 中简略所天生的步调集。此本子的 .net 框架须要更加提防的一点是:即使加载了步调集,而且运用 system.reflection 来考察步调集文献,则文献将在外存中锁定,直到过程中断。动静天生 wsdl 再不天生代劳时,将运用曲射,所以对于将由存户端过程考察的震动 iis 假造根来说,不妨锁定步调集文献。这在经营情况中不会爆发题目,然而对于常常更改选件的开拓职员来说,该当铭记这一点。即使您正在运用带有 com+ web 效劳的 servicedcomponents,此时也须要将步调集放在 gac 中,只有您首先将步调集放在了 bin 目次中,而且运转了对准该目次中步调集的 regsvcs.exe。即使仍旧加载 microsoft .net 框架 sdk,您不妨运用 gacutil.exe 吩咐行适用步调,将 servicedcomponent 放入 gac 中;即使安置了内置 .net 框架的 windows .net server,大概在 windows xp 计划机上加载了可从新散发的 .net 框架,不妨运用 microsoft .net 框架摆设用户界面(可从 administrative tools 菜单考察),将步调集增添到 gac 中。其余,运用 windows xp 或 windows .net server 时,请保证已安置并摆设了 iis,以供给 asp.net 运用步调效劳。那些树立对于供给运用 soap 所必定的动静实质是必定的。天生的代劳步调集缓存

对于要经过 .net remoting 颁布为 soap 端点的非托管 com+ 组件,须要天生代劳,使非托管组件可用来 .net 框架。这不妨经过编制程序实行与 tlbimp.exe(用来将非托管 com+ 典型库变换为代劳元数据步调集的 .net 框架 sdk 东西)沟通的办法来实行。然而,要经过 soap 胜利激活存户端,存户端和效劳器计划机必需共享沟通巩固称呼的出面元数据代劳。所以,当天生用来非托管 com+ 组件的托管代劳步调集时,还会天生巩固称呼要害字,并用来出面代劳步调集。巩固称呼要害字只能天生一次,而且在非托管 com+ 组件中没有巩固称呼要害字的观念。也即是说,即使屡次天生代劳,则不妨创造各别的巩固称呼要害字。这会为同一非托管 com+ 组件创造各别的托管标识,要制止这种情景,请将一切为非托管 com+ 组件天生的代劳步调集写入以次 soapcache 目次中:c:\windows\system32\com\soapcache\componentdirectory\proxymetdata.dll个中 componentdirectory 的方法应为:atltrans.dll_40960_2001_6_27_15_4_16目次名是按照文献名、文献巨细以及上回编写翻译的日子和功夫创造的。此计划鉴于以次假如:即使从新编写翻译非托管 com+ 组件,则须要天生新的代劳。而这又是鉴于以次假如:即使要对代码做出变动,只能在经营情况中从新编写翻译代码。因为生存 soapcache 目次,以是即使在同一计划机的各别假造根颁布了沟通的非托管组件,而不是天生代劳步调集,则坐落缓存中的非托管组件将被从新运用。这是为了保证组件的巩固称呼出面(以及由此天生的标识)不妨经过假造根共享。即使将 soap 起用的非托管 com+ 组件动作效劳器运用步调导出,而后导出到其余效劳器,缓存的代劳元数据将被一道带走,所以各别的效劳器不妨共享沟通的非托管步调集的同一托管标识。其余,即使用户要天生或编写并出面本人的代劳,只需将元数据放入相映的缓存目次中,当效劳器上爆发 soap 颁布时就会运用此元数据。这边运用的基础准则是,为制止不用本地分散用来同一非托管组件的已出面的代劳,即使缓存中生存可代替的文献则不天生步调集。存户端摆设

存户端的摆设处事也是必定的,最大略的情景(起码从用户的处事量来说)即是正文给出的第一个步调示例:set soapobj =getobject("soap:wsdl=http://www.xmethods.net/sd /temperatureservice.wsdl")wscript.echo "fairbanks气温 = " & soapobj.gettemp("99707")

当处置 wsdl 名字东西时,将会激励以次办法:

举行查看,察看能否生存往日为此 url 天生的代劳。即使生存,则再次运用。(跳到办法 4。)

即使不生存,则从 url 检索 wsdl 并天生 c# 代劳步调。这本质上与 soapsuds.exe 吩咐行适用步调(.net 框架 sdk 所附带的)运用的论理沟通。

c# 步调被编写翻译为 dll 并以与 url 相配合的称呼定名(不法字符变换为文献名中可接收的字符)。

而后,天生的代劳用来经过 .net remoting (wko) 与 wsdl 中指定的长途效劳器通讯。

那些代劳天生并生存在以次文献夹中:c:\windows\system32\com\soapassembly在存户端激活的情景中,存户端代劳导出存户端计划机上所必定的已导出的 com+ 运用步调。此运用步调的导出/导出将从效劳器带来存户端激活所必定的已出面的元数据步调集。导出进程还天生摆设文献,并放入 soapassembly 目次中。常常存户端摆设文献沿用以次方法:<configuration> <system.runtime.remoting><application> <client url="http://myserver/vb6soap"><activated type="vb6soapsoaplib.calcclass, vb6soapsoaplib"/> </client></application> </system.runtime.remoting></configuration>

com+ web 效劳在激活组件前读取此摆设文献,如许便不妨经过窜改或替代此摆设文献,在存户端计划机上潜伏变动激活模子。十足才方才发端

com+ web 效劳的安排手段是简化贯串 .net remoting 和 com+ 效劳(windows xp 和 windows .net server 系列均包括此效劳)的进程。它不过为了简化罕见的工作,并非包括一切的选项或涵盖用户大概遇到的百般情景。与运用引导在 visual studio .net 中创造步调一致,某些高档的工作留给用户自行处置。为了运用户不妨扩充,天生的名目很少被实足简略。其余,xml 类用来编纂天生的摆设文献,即使仍旧生存摆设文献,则会在该文献中增添或简略节点,以反应来自己组建件效劳处置东西或 microsoft com+ 处置 sdk 的变动。com+ web 效劳的安排运用户不妨轻快地扩充或自设置仍旧天生的实质。总之,com+ web 效劳为现有的 visual basic 和 visual c++ com+ 组件,以及在 visual basic .net 和 c# 中编写的新托管的 servicedcomponents,供给了一条实行 xml web services 和 soap 的大略道路

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.