XML、Web服务和.NET框架
应用程序开发【xù kāi fā】技术正😷发生着一次质的飞跃,从根本📒上大幅【shàng dà fú】度提高😟开发人💢员的生【yuán de shēng】产效率【chǎn xiào lǜ】,它开启📙了一道【le yī dào】通向全【tōng xiàng quán】新概念的应用程序的大门🤤。
在过去,开发人🐴员一直🍈通过集成本地💖系统服务来构🏀建应用程【yīng yòng chéng】序。在这种【zài zhè zhǒng】📎模式下,开发人🐴员可以【yuán kě yǐ】访问丰富的开【fù de kāi】发资源✖并能严【bìng néng yán】格控制【gé kòng zhì】应用程【yīng yòng chéng】序的行为🏾。
如今【rú jīn】🔋,开发人【kāi fā rén】💩员在很【yuán zài hěn】大程度【dà chéng dù】❌上已挣脱了这种模式的束缚【de shù fù】🍌,致力于【zhì lì yú】🌜构建具有复杂【yǒu fù zá】结构的n层系统【céng xì tǒng】,这种系统能将网络中【wǎng luò zhōng】各处的众多的💓应用程序进行【xù jìn háng】集成【jí chéng】🔱,并大大🍿提升应用程序的价值。这样,开发人【kāi fā rén】💩员便可🚰集中精【jí zhōng jīng】力挖掘🍌软件【ruǎn jiàn】独🏸特的商📱业价值,而不必日夜为如何构建基本结构伤脑筋了。令人欣喜的局面将应运而生:软件【ruǎn jiàn】⛎投放市场的时【chǎng de shí】间大大缩短【suō duǎn】、开发人【kāi fā rén】💩员的编程效率明显提🤓高【gāo】🤣,最为根本的是🌳开发出质量上乘的软🔁件【jiàn】⛎。
我们正【wǒ men zhèng】🤴在进入【zài jìn rù】一个崭新的【de】计💆算时代【suàn shí dài】🏩,一个互🛌联网时【lián wǎng shí】代,其核心🌨技术是“可扩展【kě kuò zhǎn】标记语🚳言”,即【jí】XML.XML创建出可供任【kě gòng rèn】🔴何人从任何地方访问👶和使用的【de】功能强大的【de】应用程序【xù】。它极大🍱地扩展【dì kuò zhǎn】了应用程序【xù】的【de】🎍功能,并实现了软件【le ruǎn jiàn】的不间【de bú jiān】断传输⛸。在这种🕑大环境【dà huán jìng】中,软件已不完全是指那些从CD进行安【jìn háng ān】装的【de】程序【xù】,而是已🔌经演变成了一💅种服务【zhǒng fú wù】:类似于调用者的【de】ID验证或按观看次数进行收费的【de】电视,人们可【rén men kě】🥚通过通🚷信媒体【xìn méi tǐ】🔵预定此【yù dìng cǐ】🍉类服务。
这一切【zhè yī qiē】🚷,是通过将紧密【jiāng jǐn mì】耦合的🌯、高效的n层计算技术与面向消【miàn xiàng xiāo】🕓息的【xī de】🏾、松散耦合的🌯Web概念相【gài niàn xiàng】结合来🔺实现的。我们将【wǒ men jiāng】这种计算风格称为Web服务【fú wù】🥌,它的出现标志着人类【zhe rén lèi】已经迈💸入应用🗑程序开❔发技术的新纪【de xīn jì】元【yuán】。Web服务【fú wù】🥌是一种【shì yī zhǒng】应用程序🎻,它可以🥑使用标【shǐ yòng biāo】准的互⏲联网协【lián wǎng xié】🌜议,像超文本传输【běn chuán shū】协议(HTTP)和XML,将功能纲领性地体现在互联🌘网和企业内部网上【wǎng shàng】。可将Web服务【fú wù】🥌视作Web上的组✳件编程【jiàn biān chéng】🔜。
从理论上讲,开发人员可通过【kě tōng guò】👼调用【diào yòng】🔍Web应用编【yīng yòng biān】🏂程接口【chéng jiē kǒu】(API)(就像调【jiù xiàng diào】用【yòng】🔍本地服务【fú wù】一🎭样【yàng】),将【jiāng】🍏Web服务【fú wù】🈁集成到应用程【yīng yòng chéng】序🎳中,不同的🐑是【shì】Web API调用【diào yòng】🔍可通过【kě tōng guò】👼互联网发送给【fā sòng gěi】位👍于远程系统中的某一服务【fú wù】🈁。例如,Microsoft Passport服务【fú wù】🈁使得开发人员能够对某应用程【yīng yòng chéng】序🎳进行验证。通过【tōng guò】👼Passport服务【fú wù】编🚷程,开发人员可以充分利【chōng fèn lì】用【yòng】🔍Passport的基本结构【jié gòu】👮,通过运【tōng guò yùn】🐺行Passport来维护🎆用户数【yòng hù shù】⛸据库🥨,以确保它的正常运行🛥、定期备【dìng qī bèi】份等等。
松散耦【sōng sàn ǒu】💨合
在某个🤗网络中分发【zhōng fèn fā】应用程序逻辑【xù luó jí】🏟,并不是【bìng bú shì】🎂一个全新的概念【de gài niàn】🙈,在Web中分发【zhōng fèn fā】并集成应用程序逻辑【xù luó jí】🏟才是一【cái shì yī】🕷个崭新【gè zhǎn xīn】🈚的概念【de gài niàn】🙈。
从前🌚,分布式【fèn bù shì】🛸的应用【yòng】😄程序逻📏辑需要使用【yòng】分🏤布式的对象模【duì xiàng mó】型【xíng】,诸如🥖:微软的【wēi ruǎn de】分布式【fèn bù shì】🛸组件对❣象模型【xíng】(DCOM)、对象管🔆理集团💠的公用【yòng】😄对象请求代理【qiú dài lǐ】程序体【chéng xù tǐ】系结构(CORBA)或Sun的远程🐭方法调用【yòng】😄(RMI)。通过使用【yòng】😄这种基本结构【běn jié gòu】,开发人员仍可【yuán réng kě】拥有使用【yòng】😄本地模【běn dì mó】型【xíng】所提供的丰【gòng de fēng】富资源和精【hé jīng】👮确性,并可将🎮服务置🕝于远程系统中【xì tǒng zhōng】。
这些系统有一🖍个共同【gè gòng tóng】的缺陷,那就是🕓它们无【tā men wú】法扩展到互联🤔网上:它们要求服务【qiú fú wù】客户端与系统【yǔ xì tǒng】🍺提供的【tí gòng de】服务本身之间必须进【bì xū jìn】行紧密耦合【ǒu hé】🗯,即要求一个同类基本结构。这样的系统往往十分【wǎng shí fèn】❄脆弱【cuì ruò】💔:如果一🛢端的执🛸行机制发生变化,那么另【nà me lìng】一端便会崩溃🤷。例如【lì rú】,如果服务器应【wù qì yīng】🧝用程序🔦的接口发生更改【gǎi】,那么客💑户端便【hù duān biàn】会崩溃🤷。
要求提供紧密耦合的【ǒu hé de】基本结【jī běn jié】构【gòu】🔀,无可厚非【fēi】,许多应🤙用程序【yòng chéng xù】均是基于这种系统【tǒng】构【gòu】🍾建而成🚄的【de】。但是🤧,当各个🙍公司需⏪要相互🗻合作、或信息技术提供商扩大业务【dà yè wù】📡范围时【fàn wéi shí】,便很难⛏实现单【shí xiàn dān】一而统【yī ér tǒng】🥘一的基【yī de jī】👷本结构【běn jié gòu】🔀。您根本无法保证您希望与之进行远【jìn háng yuǎn】程通信的【de】管道的【de】另一🍲端,具备所有您需【yǒu nín xū】要的基【yào de jī】本结构【běn jié gòu】🔀:对于它📁使用的【de】🏇操作系统【tǒng】🥘、对象模⛎型或编程语言,您可能一无所知。
相反✳,Web服务彼【fú wù bǐ】此是松散偶合🕖的【de】🎫。连接【lián jiē】中🏺的【de】🎫任何一方均可更改执行【háng】🧛机制,却不影😤响应用程序的【chéng xù de】🎫正常运🤶行【háng】🧛。从技术角度讲【jiǎo dù jiǎng】,人们已转向使用一种🍀基于消息的【de】🎫异步技术来实【shù lái shí】现高可靠🖤性的【de】🎫系统性【xì tǒng xìng】能,通过使【tōng guò shǐ】用诸如🕺HTTP、简单邮【jiǎn dān yóu】件传输协议(SMTP)以及至【yǐ jí zhì】✳为重要🚓的【de】🎫XML来实现统一的【de】🎫连接【lián jiē】。
消息【xiāo xī】传🛌递系统【dì xì tǒng】将通信的基本单元打📚包成自我描述【wǒ miáo shù】型的数【xíng de shù】据包(又称作【yòu chēng zuò】🕊消息【xiāo xī】🥧),并将其【bìng jiāng qí】放到网络缆线🤙中。消息【xiāo xī】传🛌递系统【dì xì tǒng】与分布式对象【shì duì xiàng】系统之间的本【jiān de běn】😜质区别在于🗑:要求发送方【fā sòng fāng】辨识接收🔺方的基本结构的程度有所不🏉同。在分布📻式系统中,发送方【fā sòng fāng】需对接【xū duì jiē】收方的情况作出种种猜测:应用程📠序是如【xù shì rú】🚖何激活【hé jī huó】或拆包🎲的,调用的【diào yòng de】是什么样的界面【miàn】🔱,等等。
另一方面,消息传递系统🦔会在缆🦗线格式🔜级上创☕建合同【jiàn hé tóng】。发送方既不需【jì bú xū】考虑消息被接【xī bèi jiē】收后的【shōu hòu de】🚩情况,也不需考虑接发双方🏇之间的通信情【tōng xìn qíng】况,唯一需要考虑【yào kǎo lǜ】的是接【de shì jiē】收方是✖否能辩【fǒu néng biàn】💂识发送🚳的消息内容【nèi róng】。
在缆线💊格式级🗑上创建【shàng chuàng jiàn】🛸合同的【hé tóng de】🧒优势不【yōu shì bú】言而喻。例如🤒,接收方🌭可在任何时刻进行更【jìn háng gèng】😛改【gǎi】,而不会干扰发送方【sòng fāng】🔘的消息【de xiāo xī】⏹发送,只要它【zhī yào tā】仍可辩识原有【shí yuán yǒu】👞消息的内容【nèi róng】。另外,发送方【sòng fāng】🔘无需任【wú xū rèn】何特殊的软件即可与接收方🌭通信【tōng xìn】🏝:只要它【zhī yào tā】发出正确格式的消息【de xiāo xī】⏹,接收方🌭就可以响应。
缆线级的XML:SOAP
实现🤮Web服务的【fú wù de】异类基【yì lèi jī】🥊本结构以及在整个Web中实现【zhōng shí xiàn】🐧Web服务的【fú wù de】关键,是实现【shì shí xiàn】🤮支持简单数据描述格🏜式的技【shì de jì】😄术【shù】📔。这种格【zhè zhǒng gé】式就是XML。Web服务必【fú wù bì】须使用XML来完成三件事🕙情【qíng】:基本的缆线格🤑式、服务描述以及“服务发现🕗”。
SOAP:在通信【zài tōng xìn】的最低【de zuì dī】😰级别,系统需🎥要使用同一语【tóng yī yǔ】👸言【yán】🛬。特别【tè bié】🦋,作为通信双方🖤的应用🎄程序需🕌要遵守【yào zūn shǒu】同一套【tóng yī tào】通信规则:如何表【rú hé biǎo】📎示不同的数据类型(例如🏀:是【shì】整数👓还是【shì】数组),以及如💊何表【biǎo】示命令♊(即:需要对♌数据进行何种🌛操作)。另外【lìng wài】,在必要的时候应用程【yīng yòng chéng】📖序还需对该语言【yán】🛬适当的扩展🥔。简单对象访问【xiàng fǎng wèn】协议【xié yì】(SOAP)是【shì】XML的实施【de shí shī】工具,它提供了一套公共规【gōng gòng guī】则集,该规则集说明了如何表【rú hé biǎo】📎示并扩【shì bìng kuò】展数据【zhǎn shù jù】和命令♊。
Web服务描【fú wù miáo】⌚述【shù】语言(WSDL)。双方应【shuāng fāng yīng】用程序💯在得到了如何【le rú hé】表示数据类型【jù lèi xíng】和命令的规则🔵后,需要对🦃所接收【suǒ jiē shōu】的特定数据和【shù jù hé】⤵命令进行有效🧡的描述【shù】。仅仅说【jǐn jǐn shuō】🎪已接收到整数【dào zhěng shù】🛩是不够的;比如,在接收🕸到两个🎨整数后【zhěng shù hòu】,应用程序💯必须明确表🚢述它可【shù tā kě】👚以对这【yǐ duì zhè】👭两个整💒数执行乘法运【chéng fǎ yùn】算操作。Web服务描【fú wù miáo】⌚述【shù】语言(WSDL)是一种XML语法,开发人【kāi fā rén】员和开发工具【fā gōng jù】可使用💣它来表述【shù】Web服务的具体功能。
“SOAP发现”:在最高层,还需制【hái xū zhì】定一套如何定位服务【wèi fú wù】🏓描述的【miáo shù de】🚓规则【guī zé】🧑:默认情🔬况下,用户或【yòng hù huò】工具能在什么【zài shí me】🎺地方找到服务的功能描述【miáo shù】?依据♌“SOAP发现”规格说【guī gé shuō】🥠明中提😵供的规则【guī zé】🧑集【jí】,用户或【yòng hù huò】开发工【kāi fā gōng】😜具可以⬆自动找到服务的SCL描述【miáo shù】。
一旦实🐥现了这【xiàn le zhè】三种功💵能层【néng céng】🎆,开发人员便可【yuán biàn kě】容易地【róng yì dì】🛠找到Web服务【fú wù】🎞,将它例示成一【shì chéng yī】个对象【gè duì xiàng】后再集成进应用程序中,继而构【jì ér gòu】⛲建出一个具有🏺丰富功能的基🖐本结构【běn jié gòu】。这样【zhè yàng】,得到的应用程序便能与Web服务【fú wù】🎞进行反向通信了🏂。
.NET框架:Web服务引擎
很显然【hěn xiǎn rán】,许多基【xǔ duō jī】🦋本结构🎰都需实现上述进程对🌿开发人员和用🤑户的透🕝明化【míng huà】。.NET框架提【kuàng jià tí】🎯供此基【gòng cǐ jī】👾本结构🎰。从.NET框架角【kuàng jià jiǎo】度看,所有组件都可以是Web服务【fú wù】,而【ér】🚸Web服务也【fú wù yě】仅是一种组件🈺。实际上,.NET框架提【kuàng jià tí】🎯取出微🚶软组件对象模🅾型(COM)的精华,将它们与松散【yǔ sōng sàn】耦合计🚄算的精【suàn de jīng】华有机地结合【dì jié hé】在一起,生成了强大【qiáng dà】👂、高效的🐿Web组件系统:简化程【jiǎn huà chéng】序员的🛫“管道”操作、深入地集成了【jí chéng le】🕌安全性🤵,引进了【yǐn jìn le】基于互联网的操作系统,极大地【jí dà dì】🖇改善应用程序的可靠性和可【xìng hé kě】扩展性【kuò zhǎn xìng】。
.NET框架包【kuàng jià bāo】含三个⚫主要部分:公共语【gōng gòng yǔ】📳言运行🐬时、具有多层次结构的统【gòu de tǒng】🤚一的类库集合和高级🦒版“活动服【huó dòng fú】务器页【wù qì yè】面【miàn】🌨”(又名ASP+)
公共语言运行时
此名称🗃不能准【bú néng zhǔn】🤐确反映【què fǎn yìng】它的全【tā de quán】❔部功能【bù gōng néng】。实际上【shí jì shàng】,公共语言运行时【yùn háng shí】💎在组件的【jiàn de】🛂开发过程中【chéng zhōng】🕣以及软件的【jiàn de】🛂运行过【yùn háng guò】程中【chéng zhōng】🕣,都扮演着非常重要的【de】🛂角色。在组件运行过【yùn háng guò】程中【chéng zhōng】🕣,运行时【yùn háng shí】💎负责管理【guǎn lǐ】内存分配【fèn pèi】、启动或🛋取消线【qǔ xiāo xiàn】程和进程、实施安【shí shī ān】全性策📬略【luè】、同时满【tóng shí mǎn】足当前🥄组件对其它组🤝件的【jiàn de】需🔒求🎆。在开发【zài kāi fā】🍆阶段🚎,运行时【yùn háng shí】💎的【de】🛂作用有些变化:与现今🏈的【de】🛂COM相比【xiàng bǐ】,运行时【yùn háng shí】💎的【de】🛂自动化程度🐟大为提👶高(比如可🎗自动执行内存🔝管理【guǎn lǐ】),因而开【yīn ér kāi】发人员的【de】🛂工作变得非常轻松【qīng sōng】。尤其是【yóu qí shì】,映射功能将使代码编写量锐减🔌,这些代码是开发人员在将业务逻辑转化成可复用的【de】🛂组件进行编【háng biān】🎶程时【shí】所需的【xū de】🉑。
对编程语言【yǔ yán】📏而言【ér yán】🆙,运行时【yùn háng shí】🗓这个概念并不【niàn bìng bú】🤜新奇【xīn qí】:实际上【shí jì shàng】每种编【měi zhǒng biān】🐼程语言【yǔ yán】📏都有自🐴己的运行时【yùn háng shí】🗓。Visual Basic?开发系统具有【tǒng jù yǒu】最为明显的运行时【yùn háng shí】🗓(名为【míng wéi】VBRUN),Visual C++?跟🎢Visual FoxPro?、Jscript?、SmallTalk、Perl、Python和Java一样,有一个【yǒu yī gè】🐿运行时【yùn háng shí】🗓MSVCRT。NET框架的💩关键作用是它【yòng shì tā】🗓提供了一个跨💏编程语言【yǔ yán】📏的统一的编程环境,这也是它能独树一帜的根本【de gēn běn】原因所🌍在。
统一的编程类
.NET框架中【kuàng jià zhōng】🗝的【de】🥅类为开【lèi wéi kāi】发人🏛员提供了一个统一的【tǒng yī de】🧀、面向对象的【de】🥅、层次化🧥的【de】🥅、可扩展的【de】🥅类库集(API)。现今,C++开发人【kāi fā rén】🏛员使用的【de】是🎟微软基础😱类库,Java开发人【kāi fā rén】🏛员使用的【de】是🎟Windows?基础类库,而Visual Basic用户使用的【de】又🔠是Visual Basic API集。简而言【jiǎn ér yán】🛳之【zhī】🖖,.NET框架统【kuàng jià tǒng】一了微软当前【ruǎn dāng qián】各种不🍾同的【de】🥅框架【kuàng jià】。这样🍄,开发人【kāi fā rén】🏛员不再【yuán bú zài】🎁需要学【xū yào xué】习多种框架【kuàng jià】就能顺利【néng shùn lì】🥓编程。远不止【yuǎn bú zhǐ】于此的【de】是🎟,通过创🍪建一个【jiàn yī gè】公共的【de】🥅跨编程【kuà biān chéng】语言【yǔ yán】🛳的【de】🥅API集,.NET框架【kuàng jià】可实现跨😉语言【yǔ yán】🛳继承性、错误处理功能【lǐ gōng néng】🎮和调试功能。实际上【shí jì shàng】,从【cóng】Jscript到C++的【de】所有🥛编程语【biān chéng yǔ】言🛳,都是相互等同【hù děng tóng】的【de】🥅,开发人【kāi fā rén】🏛员可以自由选🎗择理想【zé lǐ xiǎng】🏓的编程【de biān chéng】🌦语言【yǔ yán】🛳。
高级版【gāo jí bǎn】😤“活动服【huó dòng fú】务器页面🌘”(ASP+)
ASP+是使用【yòng】😪 .NET框架【kuàng jià】提🌟供的类库构建🍛而成的【ér chéng de】,它提供🔃了一个Web应用【yīng yòng】🔃程序模型,该模型由一组控件【jiàn】和一个基【yī gè jī】本结构组成😐。有了它【yǒu le tā】,Web应用【yīng yòng】🔃程序的构🏐建变得非常容【fēi cháng róng】易【yì】🤸。开发人【kāi fā rén】🎊员可以【yuán kě yǐ】直接使【zhí jiē shǐ】📤用【yòng】🔃ASP+控件【jiàn】集😲,该控件【jiàn】集😲封装了公共的、用【yòng】🔃于超文【yú chāo wén】本标识语言🏷(HTML)用【yòng】🔃户界面的各🎻种小组🤜件【jiàn】(诸如文本框、下拉菜单等等【dān děng děng】✡)。实际上,这些控件运行【jiàn yùn háng】在Web服务【fú wù】🎏器上【qì shàng】,它们将🏁用【yòng】🔃户界面转换成HTML格式后再发送【zài fā sòng】给浏览➖器。在服务【fú wù】🎏器上【qì shàng】,控件【jiàn】负责将面【zé jiāng miàn】向对🈺象的编程模型【chéng mó xíng】🐧呈现给Web开发人【kāi fā rén】🎊员【yuán】,这种编【zhè zhǒng biān】程模型【chéng mó xíng】🐧能提供【néng tí gòng】面向对【miàn xiàng duì】🈺象的编程技术🌊拥有的🥢丰富功能。ASP+还提供一些基【yī xiē jī】本结构服务【fú wù】🎏(诸如会话状态【huà zhuàng tài】管理和【guǎn lǐ hé】进程循【jìn chéng xún】🌄环),这些服【zhè xiē fú】务🎏进一步减少了
关键词🥞:XML,Web服务【fú wù】🎏,.NET框架【kuàng jià】
阅读本文后您有什么感想? 已有 人给出评价!
- 1
- 1
- 1
- 1
- 1
- 1