① 如何构建高可用的分布式系统
开源软件已经成为许多大型网站的基本组成部分,随着这些网站的逐步壮大,他们的网站架构和一些指导原则也出现在开发者们的面前,给予切实有用的指导和帮助。本文旨在介绍一些核心问题以及通过构建模块来制作大型网站,实现最终目标。 这篇文章主要侧重于Web系统,并且也适用于其他分布式系统。 Web分布式系统设计的原则 构建并运营一个可伸缩的Web站点或应用程序到底指的是什么?在最初,仅是通过互联网连接用户和访问远程资源。 和大多数事情一样,当构建一个Web服务时,需要提前抽出时间进行规划。了解大型网站创建背后的注意事项以及权衡可能会给你带来更加明智的决策,当你在创建小网站时。下面是设计大型Web系统时,需要注意的一些核心原则: 1.可用性 2.性能 3.可靠性 4.可扩展 5.易管理 6.成本 上面的这些原则给设计分布式Web架构提供了一定的基础和理论指导。然而,它们也可能彼此相左,例如实现这个目标的代价是牺牲成本。一个简单的例子:选择地址容量,仅通过添加更多的服务器(可伸缩性),这个可能以易管理(你不得不操作额外的服务器)和成本作为代价(服务器价格)。 无论你想设计哪种类型的Web应用程序,这些原则都是非常重要的,甚至这些原则之间也会互相羁绊,做好它们之间的权衡也非常重要。 基础 当涉及到系统架构问题时,这几件事情是必须要考虑清楚的:什么样的模块比较合适?如何把它们组合在一起?如何进行恰当地权衡?在扩大投资之前,它通常需要的并不是一个精明的商业命题,然而,一些深谋远虑的设计可以帮你在未来节省大量的时间和资源。 讨论的重点几乎是构建所有大型Web应用程序的核心:服务、冗余、分区和故障处理能力。这里的每个因素都会涉及到选择和妥协,特别是前面所讨论的那些原则。解释这些核心的最佳办法就是举例子。 图片托管应用程序 有时,你会在线上传图片,而一些大型网站需要托管和传送大量的图片,这对于构建一个具有成本效益、高可用性并具有低延时(快速检索)的架构是一项挑战。 在一个图片系统中,用户可以上传图片到一个中央服务器里,通过网络连接或API对这些图片进行请求,就像Flickr或者Picasa。简单点,我们就假设这个应用程序只包含两个核心部分:上传(写)图片和检索图片。图片上传时最好能够做到高效,传输速度也是我们最关心的,当有人向图片发出请求时(例如是一个Web页面或其他应用程序)。这是非常相似的功能,提供Web服务或内容分发网络(一个CDN服务器可以在许多地方存储内容,所以无论是在地理上还是物理上都更加接近用户,从而导致更快的性能)边缘服务器。 该系统需要考虑的其他重要方面: 1.图片存储的数量是没有限制的,所以存储应具备可伸缩,另外图片计算也需要考虑 2.下载/请求需要做到低延迟 3.用户上传一张图片,那么图片就应该始终在那里(图片数据的可靠性) 4.系统应该易于维护(易管理) 5.由于图片托管不会有太高的利润空间,所以系统需要具备成本效益 图1是个简化的功能图 图1 图片托管系统的简化结构图 在这个例子中,系统必须具备快速、数据存储必须做到可靠和高度可扩展。构建一个小型的应用程序就微不足道了,一台服务器即可实现托管。如果这样,这篇文章就毫无兴趣和吸引力了。假设我们要做的应用程序会逐渐成长成Flickr那么大。 服务 当我们考虑构建可伸缩的系统时,它应有助于解耦功能,系统的每个部分都可以作为自己的服务并且拥有清晰的接口定义。在实践中,这种系统设计被称作面向服务的体系结构(SOA)。对于此类系统,每个服务都有它自己的独特功能,通过一个抽象接口可以与外面的任何内容进行互动,通常是面向公众的另一个服务 API。 把系统分解成一组互补性的服务,在互相解耦这些操作块。这种抽象有助于在服务、基本环境和消费者服务之间建立非常清晰的关系。这种分解可以有效地隔离问题,每个块也可以互相伸缩。这种面向服务的系统设计与面向对象设计非常相似。 在我们的例子中,所有上传和检索请求都在同一台服务器上处理。然而,因为系统需要具备可伸缩性,所以把这两个功能打破并集成到自己的服务中是有意义的。 快进并假设服务正在大量使用;在这种情况下,很容易看到写图片的时间对读图片时间有多大影响(他们两个功能在彼此竞争共享资源)。根据各自体系,这种影响会是巨大的。即使上传和下载速度相同(这是不可能的,对于大多数的IP网络来说,下载速度:上传速度至少是3:1),通常,文件可以从缓存中读取,而写入,最终是写到磁盘中(也许在最终一致的情况下,可以被多写几次)。即使是从缓存或者磁盘(类似SSD)中读取,数据写入都会比读慢(Pole Position,一个开源DB基准的开源工具和结果)。 这种设计的另一个潜在问题是像Apache或者Lighttpd这些Web服务器通常都会有一个并发连接数上限(默认是500,但也可以更多),这可能会花费高流量,写可能会迅速消掉所有。既然读可以异步或利用其他性能优化,比如gzip压缩或分块传输代码,Web服务可以快速切换读取和客户端来服务于更多的请求,超过每秒的最大连接数(Apache的最大连接数设置为500,这种情况并不常见,每秒可以服务几千个读取请求)。另一方面,写通常倾向于保持一个开放的链接进行持续上传,所以,使用家庭网络上传一个1 MB的文件花费的时间可能会超过1秒,所以,这样的服务器只能同时满足500个写请求。 图2:读取分离 规划这种瓶颈的一个非常好的做法是把读和写进行分离,如图2所示。这样我们就可以对它们单独进行扩展(一直以来读都比写多)但也有助于弄明白每个点的意思。这种分离更易于排除故障和解决规模方面问题,如慢读。 这种方法的优点就是我们能够彼此独立解决问题——在同种情况下,无需写入和检索操作。这两种服务仍然利用全球语料库的图像,但是他们可以自由地优化性能和服务方法(例如排队请求或者缓存流行图片——下面会介绍更多)。从维护和成本角度来看,每一个服务都可以根据需要独立进行扩展,但如果把它们进行合并或交织在一起,那么有可能无意中就会对另一个性能产生影响,如上面讨论的情景。 当然,如果你有两个不同的端点,上面的例子可能会运行的很好(事实上,这非常类似于几个云存储供应商之间的实现和内容分发网络)。虽然有很多种方法可以解决这些瓶颈,但每个人都会有不同的权衡,所以采用适合你的方法才是最重要的。 例如,Flickr解决这个读/写问题是通过分发用户跨越不同的碎片,每个碎片只能处理一组用户,但是随着用户数的增加,更多的碎片也会相应的添加到群集里(请参阅Flickr的扩展介绍)。在第一个例子中,它更容易基于硬件的实际用量进行扩展(在整个系统中的读/写数量),而Flickr是基于其用户群进行扩展(but forces the assumption of equal usage across users so there can be extra capacity)。而前面的那个例子,任何一个中断或者问题都会降低整个系统功能(例如任何人都没办法执行写操作),而Flickr的一个中断只会影响到其所在碎片的用户数。在第一个例子中,它更容易通过整个数据集进行操作——例如,更新写服务,包括新的元数据或者通过所有的图片元数据进行搜索——而 Flickr架构的每个碎片都需要被更新或搜索(或者需要创建一个搜索服务来收集元数据——事实上,他们就是这样做的)。 当谈到这些系统时,其实并没有非常正确的答案,但有助于我们回到文章开始处的原则上看问题。确定系统需求(大量的读或写或者两个都进行、级别并发、跨数据查询、范围、种类等等),选择不同的基准、理解系统是如何出错的并且对以后的故障发生情况做些扎实的计划。 冗余 为了可以正确处理错误,一个Web架构的服务和数据必须具备适当的冗余。例如,如果只有一个副本文件存储在这台单独的服务器上,那么如果这台服务器出现问题或丢失,那么该文件也随即一起丢失。丢失数据并不是什么好事情,避免数据丢失的常用方法就是多创建几个文件或副本或冗余。 同样也适用于服务器。如果一个应用程序有个核心功能,应确保有多个副本或版本在同时运行,这样可以避免单节点失败。 在系统中创建冗余,当系统发生危机时,如果需要,可以消除单点故障并提供备份或备用功能。例如,这里有两个相同的服务示例在生产环境中运行,如果其中一个发生故障或者降低,那么该系统容错转移至那个健康的副本上。容错转移可以自动发生也可以手动干预。 服务冗余的另一重要组成部分是创建一个无共享架构。在这种体系结构中,每个节点都能相互独立运行,并且没有所谓的中央“大脑”管理状态或协调活动其他节点。这对系统的可扩展帮助很大,因为新节点在没有特殊要求或知识的前提下被添加。然而,最重要的是,这些系统是没有单点故障的,所以失败的弹性就更大。 例如在我们的图片服务器应用程序中,所有的图片在另一个硬件上都有冗余副本(理想情况下是在不同的地理位置,避免在数据中心发生一些火灾、地震等自然事故),服务去访问图片将被冗余,所有潜在的服务请求。(参见图3:采用负载均衡是实现这点的最好方法,在下面还会介绍更多方法) 图3 图片托管应用程序冗余 分区 数据集有可能非常大,无法安装在一台服务器上。也有可能这样,某操作需要太多的计算资源、性能降低并且有必要增加容量。在这两种情况下,你有两种选择:纵向扩展或横向扩展。 纵向扩展意味着在单个服务器上添加更多的资源。所以,对于一个非常大的数据集来说,这可能意味着添加更多(或更大)的硬件设备,来使一台服务器能容下整个数据集。在计算操作下,这可能意味着移动计算到一个更大的服务器上,拥有更快的CPU或更大的内存。在各种情况下,纵向扩展可以通过提升单个资源的处理能力来完成。 横向扩展在另一方面是添加更多的节点,在大数据集下,这可能会使用第二服务器来存储部分数据集,对于计算资源来说,这意味着分割操作或跨节点加载。为了充分利用横向扩展,它应作为一种内在的系统架构设计原则,否则修改或拆分操作将会非常麻烦。 当谈到横向扩展时,最常见的做法是把服务进行分区或碎片。分区可以被派发,这样每个逻辑组的功能就是独立的。可以通过地理界限或其他标准,如非付费与付费用户来完成分区。这些方案的优点是他们会随着容量的增加提供一个服务或数据存储。 在我们的图片服务器案例中,用来存储图片的单个文件服务器可能被多个文件服务器取代,每个里面都会包含一套自己独特的图像。(见图4)这种架构将允许系统来填充每一个文件/图片服务器,当磁盘填满时会添加额外的服务器。这样的设计需要一个命名方案,用来捆绑图片文件名到其相应的服务器上。图像名字可以形成一个一致的哈希方案并映射到整个服务器上;或者给每张图片分配一个增量ID,当客户端对图片发出请求时,图片检索服务只需要检索映射到每个服务器上(例如索引)的ID。 图4 图片托管应用程序冗余和分区 当然,跨越多个服务器对数据或功能进行分区还是有许多挑战的。其中的关键问题是数据本地化。在分布式系统中,数据操作或计算点越接近,系统性能就会越好。因此,它也可能是个潜在问题,当数据分散在多个服务器上时。有时数据不是在本地,那么就要迫使服务器通过网络来获取所需的信息,这个获取的过程就会设计到成本。 另一潜在问题是不一致。当这里有多个服务对一个共享资源执行读写操作时,潜在可能会有另一个服务器或数据存储参与进来,作为竞选条件——一些数据需要更新,但是读的优先级高于更新——在这种情况下,数据就是不一致的。例如在图片托管方案中,有可能出现的不一致是:如果一个客户端发送更新“狗”图片请求,进行重新命名,把“Dog”改成“Gizmo”,但同时,另一个客户端正在读这张图片。在这种情况下,标题就是不清楚的。“Dog”或“Gizmo” 应该被第二个客户端接收。 当然,在进行数据分区时会产生一些障碍,但是分区允许把每个问题拆分到管理群里——通过数据、负载、使用模式等。这样对可扩展和易管理都是有帮助的,但也不是没有风险的。这里有很多方式来降低风险和故障处理;然而,为了简便起见,并未在本文中详细说明,如果你有兴趣,可以访问我的博客。 总结 以上介绍的都是设计分布式系统需要考虑的核心要素。可用性、性能、可靠性、可扩展、易管理、成本这几个原则非常重要,但在实际应用中可能会以牺牲某个原则来实现另外一个原则,在这个过程中就要做好权衡工作,做到因时制宜。 在下面的构建分布式系统实战中,我们将会深入介绍如何设计可扩展的数据访问,包括负载均衡、代理、全局缓存、分布式缓存等。 英文地址:Dr.Dobb's 文:CSDN
② web后台框架包括哪些
给大家总结介绍主流的web后端开发框架。一、Laravel
当我们谈到后端web开发框架时,laravel会出现在前面。自2011年成立以来,Laravel为开发者展示了一条光明的道路。Laravel是一个免费的开源PHP web框架,旨在按照模型-视图-控制器(MVC)架构模式构建最先进的web应用程序。
Laravel的一些特性是具有专用依赖管理器的模块化打包系统、有助于应用程序部署和维护的实用工具、访问关系数据库的许多方法,以及它面向语法的方向。这就是为什么它被认为是最好的PHP框架,并促使企业为他们的下一个项目雇佣Laravel开发人员的原因。
二、ThinkPHP
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
三、Yii
Yii与Asp.net非常相似,也是PHP中非常出色的开源web开发框架之一。Yii框架最适合为需要执行重复任务的系统开发应用程序。这个web开发框架具有内置的基于组件的模型、数据库抽象层、事件驱动的编程特性和模块化应用程序体系结构。Yii编码器遵循快速应用开发(RAD)。
换句话说,Yii允许您在非常短的时间内启动和运行web应用程序。此外,使用Yii框架,您还可以方便地根据不断变化的业务需求定制应用程序。使用简单的数据迁移实用程序,您可以方便地在不同的安装上升级/降级应用程序版本。因此,您也可以考虑为您的web开发项目雇佣Yii开发人员。
四、Symfony
symfony是一个PHP框架,非常适合大型或复杂的企业级项目。这是一个非常稳定的框架。Symfony 3.1(当前版本)帮助全栈开发人员创建可伸缩的网站,以灵活地更改业务需求。
Symfony可以使用一些最大的开源平台,如PHPBB、Piwik和Drupal。Symfony由一组PHP组件、一个应用程序框架、一个社区和一种哲学组成,所有这些组件协同工作,帮助实现web上的一个共同目标。这些原因使得Symfony成为web开发的高级框架。
五、CakePHP
cakephpCakePHP是一个用PHP编写的开源web开发框架,从一开始就在市场上非常流行。它基于模型-控制器-视图和关联数据映射的概念。通过使用CakePHP, processionals可以轻松地以结构化和快速的方式开发web应用程序。使用CakePHP的最大优势之一是它提供了详细的文档和实用指南,以及非常容易编写代码的框架。
因此,开发人员可以使用这个框架轻松地创建web应用程序。如果您选择这个框架进行开发,那么通过编写相对较少的代码,您将能够实现更多的功能。您甚至可以通过这个框架重用旧项目的代码,从而使CakePHP web应用程序开发速度更快。
③ Java EE主要是用来做网站/Web应用的吗
是的
Java EE(Java Platform,Enterprise Edition)是sun公司(2009年4月20日甲骨文将其收购)推出的企业级应用程序版本。这个版本以前称为 J2EE。能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器端 Java应用程序。Java EE 是在 Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0应用程序。
Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。
④ 如何构建可伸缩和可用的云计算多租户架构
云计算到目前为止架构主要可分为四层,
首先:显示层,多数据中心云计算架构这层主要是用于以友好的方式展现用户所需的内容,并会利用到下面中间件层提供的多种服务,主要有五种技术:
HTML:标准的Web页面技术,现在主要以HTML4为主,但是将要推出的HTML5会在很多方面推动Web页面的发展,比如视频[1]和本地存储等方面。
JavaScript:一种用于Web页面的动态语言,通过JavaScript,能够极大地丰富Web页面的功能。
CSS:主要用于控制Web页面的外观,而且能使页面的内容与其表现形式之间进行优雅地分离。
Flash[2]:业界最常用的RIA(Rich Internet Applications)技术,能够在现阶段提供HTML等技术所无法提供的基于Web的富应用,而且在用户体验[3]方面,非常不错。
Silverlight:来自业界巨擎微软[4]的RIA技术,虽然其现在市场占有率稍逊于Flash,但由于其可以使用C#[5]来进行编程,所以对开发者非常友好。
其次:中间层这层是承上启下的,它在下面的基础设施层所提供资源的基础上提供了多种服务,比如缓存服务和REST服务等,而且这些服务即可用于支撑显示层,也可以直接让户调用,并主要有五种技术;
REST:通过REST技术,能够非常方便和优雅地将中间件层所支撑的部分服务提供给调用者。
多租户:就是能让一个单独的应用实例可以为多个组织服务,而且保持良好的隔离性和安全性,并且通过这种技术,能有效地降低应用的购置和维护成本。
并行处理:为了处理海量的数据,需要利用庞大的X86集群进行规模巨大的并行处理,Google的MapRece是这方面的代表之作。
应用服务器:在原有的应用服务器的基础上为云计算做了一定程度的优化,比如用于Google App Engine的Jetty应用服务器。
分布式缓存:通过分布式缓存技术,不仅能有效地降低对后台服务器的压力,而且还能加快相应的反应速度,最着名的分布式缓存例子莫过于Memcached。
⑤ web应用系统开发
1.渐进式Web应用程序(PWA)
通过利用技术进步参与开发移动站点和本机应用程序的企业可以从渐进式Web应用程序中受益。到目前为止,这是2019年最热门的Web开发趋势。它鼓励万维网为用户提供更好的浏览体验。
渐进式Web应用程序是一般的Web应用程序,在用户看来像移动应用程序,但实际上它们是行为类似于移动应用程序的网页和网站。PWA致力于为所有设备上所有平台的用户提供类似本机的体验。
根据最近的一项研究,就互联网使用和网站浏览而言,移动技术在其他设备上占据主导地位。不仅如此,使用移动应用程序和移动浏览器之间的差距还很大。可以估算一下,我们可以说移动应用程序占用户在其小工具上花费的总时间的70%以上。
实施PWA的一些知名公司包括阿里巴巴,Twitter,维珍美国航空,福布斯等。使用PWA的显着优势是,您的品牌对于具有更强身份的受众更加可见。PWA中使用的流行技术是Angular,Polymer和React。
2.人工智能与机器人
如您所知,企业跨不同时区工作并在各个大洲提供代表,这使得客户支持服务既复杂又昂贵,尤其是考虑到24x7模式时。但是,随着最近的发展,企业已转向自动化的即时客户端支持。
你们大多数人可能已经发现,聊天机器人可以使用人工智能和机器学习的概念。在未来的几年中,聊天机器人和机器学习的概念将比以往更加全面,尤其是对于Web设计和开发行业。
有多项调查表明,聊天机器人用于为客户查询提供快速响应和解决方案。AI执行人类的认知功能,例如学习,分析信息,收集数据,理解情绪以及解决具有挑战性的问题的能力,这使聊天机器人成为Web开发的完美补充。
Facebook,Microsoft,Twitter,Google和Amazon等主要供应商都在人工智能以及机器学习方面进行了大量投资。以下可用于为您的网站构建机器人的技术包括Facebook Bot Engine,Microsoft Bot Framework和Dialog flow。
3.加速的移动页面(AMP)
Google不断采用新技术来改善用户的移动浏览体验。Google在2015年向公众推出了加速的移动页面项目,该项目现已发展成为自己的新技术。
AWP的目的是减少网页的加载时间或构建可在所有设备上快速加载且完美运行的网站。AMP页面的加载时间被认为是两秒钟,而常规网页可能需要长达22秒的加载时间。
与标准网页相比,加速的网页具有明显的优势,因为当您的网页加载速度更快时,用户将很高兴浏览您的网站。此外,它将有助于提高您的Web应用程序的搜索引擎排名。
要将AMP技术引入您的网站,您将必须使用AMP HTML开放源代码框架。Google首次提出这个概念时,就提供了有关如何构建AMP网页的详细文档。
4.单页申请
单页应用程序完全基于JavaScript,是可在所有设备上正常运行的Web应用程序。它们不仅可以提高网站性能,还可以通过使用JavaScript加载所有内容来消除重新加载页面的需要。
大多数公司使用单页应用程序,因为与加载多页相关的额外等待时间。诚然,与多页Web应用程序相比,该页面可能需要花费更多的时间来加载,但是,如果考虑到用户在网站上的整个旅程的总时间,那么放弃渲染多个页面所节省的时间就变得很重要。这也使构建响应式网站变得更加容易。
SPA的示例包括Gmail,Facebook和GitHub。SPA中使用的技术包括React和Angular框架,使其成为混合应用程序的理想选择。
5.语音搜索优化
语音搜索已经对Web开发产生了重大影响,使其成为2019年成功的趋势之一,因此我们简直不能忽略它。根据Gartner的报告,由于智能扬声器的兴起,到2020年,将有20%以上的搜索完成而无需在屏幕上键入任何内容。
即使在2019年,我们也会获得带有Google助手按钮的设备,从而使用户更轻松地在其设备上打开语音识别。因此,语音搜索在Web开发中达到顶峰还为时不远。到2020年,我们可以假设英国的语音商务销售额可以增长到50亿美元,在美国达到400亿美元。
考虑到多个研究报告和市场的实际情况,我们可以说语音搜索优化是不断增长的Web开发趋势之一,不容忽视。有可能,它将尽快成为您的SEO或技术策略的一部分。
要对您的站点实施语音搜索优化,可以使用Web搜索API,该API分为两个部分-语音识别和语音合成。语音识别使您的网站能够识别用户的声音,然后响应他们的查询,而语音合成使脚本能够读取文本内容。
6.运动界面
Motion UI是为交互式Web设计提供动态图形和动画的东西。简而言之,通过提供优雅的界面,即使使用简约的网站,它也可以使您的Web应用程序设计与众不同。而且,如果您进行适当的研究和实施,它可以为您的网站的转化率带来奇迹。
Motion UI是2019年最好的网络趋势之一,因为它为您提供了一种吸引访问者注意力的简单解决方案。使用Motion UI库,您可以合并动画图表,背景动画,悬停和醒目的标题。
使用Motion UI元素不仅可以使您的网站脱颖而出,还可以通过鼓励积极的用户互动和改善网站可用性来增强用户参与度。对于开发人员来说,这是一个额外的优势,因为他们有多种选择来制作功能强大的出色站点。
7.自动化测试
我们知道自动化测试已经存在了几年,但是其中的最新创新使其再次进入了趋势列表。从单元测试到Web应用程序的跨浏览器测试,Web开发测试中发生了许多变化。例如,以前您必须在系统上设置一个环境来执行Web应用程序的测试,但是现在不一样了。
市场上提供了用于Web应用程序测试的多种扩展程序和API,使开发人员可以轻松地测试其网站。例如,Chrome,WordPress扩展程序和Screenshot API附带的LambdaTest,使用户无需编写任何外部脚本即可测试其网页。
最大,最受信任的自动化测试平台是LambdaTest,BrowserStack或跨浏览器测试,甚至一些大型企业都在使用它们。
8. JavaScript
JavaScript是最流行的编程语言之一,随着时间的推移不断发展,并为开发人员提供了新的功能。JavaScript的高级框架,设计和库已经证明,它在市场上可以提供很多东西。
这就是为什么它仍处于Web开发的十大趋势之列的原因。曾经有一段时间人们因为JavaScript与某些浏览器不兼容而放弃使用JavaScript并改用纯HTML和CSS。但是,随着对JS的浏览器支持的赶超,越来越多的Web开发人员正在使用基于JS的框架和库来构建其网站。
JavaScript用于开发动态Web应用程序。它为开发人员构建网站提供了灵活性,挑战性和强大功能的全新体验。借助JavaScript,开发人员能够构建精确,健壮和响应迅速的网站。使它在其他语言中脱颖而出的一些广泛功能是回调和闭包。
不仅如此,基于JavaScript的框架和库,尤其是Angular和React,为Web开发人员提供了更多功能。因此,可以说在未来几年中,基于JavaScript的框架将推动Web开发。
9.区块链技术
随着整个2019年比特币的流行,你们中的许多人可能已经对区块链及其对整个Web开发行业的影响有所了解。
据信,到2020年,区块链将给网络行业带来根本性的变化。区块链是一种开放式分布式账本,以消除联络需求而提供安全和受保护的在线交易而闻名。它使用普通数据存储来帮助个人将数据存储在世界各地。
由于保护水平高,许多跨国银行和组织都计划投资于区块链。此外,它还有助于降低金融业务成本,降低交易结算的频率并改善由透明记录支持的现金流。
10.物联网
根据Statista的报告,相信2025年已连接设备的数量将超过300亿。物联网设备的巨大增长将直接影响Web开发,因为公司将从台式机或笔记本电脑控制此类设备。
物联网将为企业带来多种机遇,并使他们能够以高精度提高效率。而且,为了向客户提供更好的服务,将设备与网站集成已经变得至关重要。开发这些设备的不仅是开发人员,还包括开发人员。我们还将平等参与开发使用,分析和显示设备数据的应用程序。
物联网还将带来很多挑战,尤其是在数据安全方面,因此开发人员将面临很多挑战。尽管只有少数网站或Web应用程序正在使用IoT集成,但在未来几天中,几乎每个网站都将开始集成它以改善客户体验。
结论
Web开发是一个永远不会淘汰的领域。实际上,随着新技术的出现,它将随着时间的推移不断发展和变化。同样,开发人员在使用这些技术方面也越来越先进,因为它允许他们以更好的方式构建应用程序或网站。
⑥ web服务器
WEB服务器
编辑本段什么是WEB服务器
WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。
(1)应用层使用HTTP协议。
(2)HTML文档格式。
(3)浏览器统一资源定位器(URL)。
WWW代表万维网的意思
WWW 是 Internet 的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务。正是因为有了WWW工具,才使得近年来 Internet 迅速发展,且用户数量飞速增长。
1、WWW简介
WWW 是 World Wide Web (环球信息网)的缩写,也可以简称为 Web,中文名字为“万维网”。它起源于1989年3月,由欧洲量子物理实验室 CERN(the European Laboratory for Particle Physics)所发展出来的主从结构分布式超媒体系统。通过万维网,人们只要通过使用简单的方法,就可以很迅速方便地取得丰富的信息资料。 由于用户在通过 Web 浏览器访问信息资源的过程中,无需再关心一些技术性的细节,而且界面非常友好,因而 Web 在Internet 上一推出就受到了热烈的欢迎,走红全球,并迅速得到了爆炸性的发展。
2、WWW的发展和特点
长期以来,人们只是通过传统的媒体(如电视、报纸、杂志和广播等)获得信息。但随着计算机网络的发展,人们想要获取信息,已不再满足于传统媒体那种单方面传输和获取的方式,而希望有一种主观的选择性。现在,网络上提供各种类别的数据库系统,如文献期刊、产业信息、气象信息、论文检索等等。由于计算机网络的发展,信息的获取变得非常及时、迅速和便捷。
到了1993年,WWW 的技术有了突破性的进展,它解决了远程信息服务中的文字显示、数据连接以及图像传递的问题,使得 WWW 成为 Internet 上最为流行的信息传播方式。 现在,Web 服务器成为 Internet 上最大的计算机群,Web 文档之多、链接的网络之广,令人难以想象。可以说,Web 为 Internet 的普及迈出了开创性的一步,是近年来 Internet 上取得的最激动人心的成就。
WWW 采用的是客户/服务器结构,其作用是整理和储存各种WWW资源,并响应客户端软件的请求,把客户所需的资源传送到 Windows 95(或Windows98)、Windows NT、UNIX 或 Linux 等平台上。
使用最多的 web server 服务器软件 有两个:微软的信息服务器(iis),和Apache。
通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。
Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。
要知道,Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。
虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。
应用程序服务器(The Application Server)
根据我们的定义,作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法(或过程语言中的一个函数)一样。
应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。 正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。
在大多数情形下,应用程序服务器是通过组件(component)的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型。此外,应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping ties)包括安全(security),事务处理(transaction processing),资源池(resource pooling), 和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。
例如,设想一个在线商店(网站)提供实时定价(real-time pricing)和有效性(availability)信息。这个站点(site)很可能会提供一个表单(form)让你来选择产品。当你提交查询(query)后,网站会进行查找(lookup)并把结果内嵌在HTML页面中返回。网站可以有很多种方式来实现这种功能。我要介绍一个不使用应用程序服务器的情景和一个使用应用程序服务器的情景。观察一下这两中情景的不同会有助于你了解应用程序服务器的功能。
情景1:不带应用程序服务器的Web服务器
在此种情景下,一个Web服务器独立提供在线商店的功能。Web服务器获得你的请求(request),然后发送给服务器端(server-side)可以处理请求(request)的程序。此程序从数据库或文本文件(flat file,译者注:flat file是指没有特殊格式的非二进制的文件,如properties和XML文件等)中查找定价信息。一旦找到,服务器端(server-side)程序把结果信息表示成(formulate)HTML形式,最后Web服务器把会它发送到你的Web浏览器。
简而言之,Web服务器只是简单的通过响应(response)HTML页面来处理HTTP请求(request)。
情景2:带应用程序服务器的Web服务器
情景2和情景1相同的是Web服务器还是把响应(response)的产生委托(delegates)给脚本(译者注:服务器端(server-side)程序)。然而,你可以把查找定价的商业逻辑(business logic)放到应用程序服务器上。由于这种变化,此脚本只是简单的调用应用程序服务器的查找服务(lookup service),而不是已经知道如何查找数据然后表示为(formulate)一个响应(response)。 这时当该脚本程序产生HTML响应(response)时就可以使用该服务的返回结果了。
在此情景中,应用程序服务器提供(serves)了用于查询产品的定价信息的商业逻辑。(服务器的)这种功能(functionality)没有指出有关显示和客户端如何使用此信息的细节,相反客户端和应用程序服务器只是来回传送数据。当有客户端调用应用程序服务器的查找服务(lookup service)时,此服务只是简单的查找并返回结果给客户端。
通过从响应产生(response-generating)HTML的代码中分离出来,在应用程序之中该定价(查找)逻辑的可重用性更强了。其他的客户端,例如收款机,也可以调用同样的服务(service)来作为一个店员给客户结帐。相反,在情景1中的定价查找服务是不可重用的因为信息内嵌在HTML页中了。
总而言之,在情景2的模型中,在Web服务器通过回应HTML页面来处理HTTP请求(request),而应用程序服务器则是通过处理定价和有效性(availability)请求(request)来提供应用程序逻辑的。
警告(Caveats)
现在,XML Web Services已经使应用程序服务器和Web服务器的界线混淆了。通过传送一个XML有效载荷(payload)给服务器,Web服务器现在可以处理数据和响应(response)的能力与以前的应用程序服务器同样多了。
另外,现在大多数应用程序服务器也包含了Web服务器,这就意味着可以把Web服务器当作是应用程序服务器的一个子集(subset)。虽然应用程序服务器包含了Web服务器的功能,但是开发者很少把应用程序服务器部署(deploy)成这种功能(capacity)(译者注:这种功能是指既有应用程序服务器的功能又有Web服务器的功能)。相反,如果需要,他们通常会把Web服务器独立配置,和应用程序服务器一前一后。这种功能的分离有助于提高性能(简单的Web请求(request)就不会影响应用程序服务器了),分开配置(专门的Web服务器,集群(clustering)等等),而且给最佳产品的选取留有余地。
编辑本段大型WEB服务器
在UNIX和LINUX平台下使用最广泛的免费HTTP服务器是W3C、NCSA和APACHE服务器,而Windows平台NT/2000/2003使用IIS的WEB服务器。在选择使用WEB服务器应考虑的本身特性因素有:性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等,下面介绍几种常用的WEB服务器。
Microsoft IIS
Microsoft的Web服务器产品为Internet Information Server (IIS), IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。IIS是目前最流行的Web服务器产品之一,很多着名的网站都是建立在IIS的平台上。IIS提供了一个图形界面的管理工具,称为 Internet服务管理器,可用于监视配置和控制Internet服务。
IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。
IBM WebSphere
WebSphere Application Server 是 一 种功能完善、开放的Web应用程序服务器,是IBM电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理 Internet 和 Intranet Web 应用程序。 这一整套产品进行了扩展,以适应 Web 应用程序服务器的需要,范围从简单到高级直到企业级。
WebSphere 针对以 Web 为中心的开发人员,他们都是在基本 HTTP服务器和 CGI 编程技术上成长起来的。IBM 将提供 WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具、以及支持 HTTP 和 IIOP 通信的可伸缩运行时环境,来帮助这些用户从简单的 Web 应用程序转移到电子商务世界。
BEA WebLogic
BEA WebLogic Server 是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。各种应用开发、部署所有关键性的任务,无论是集成各种系统和数据库,还是提交服务、跨 Internet 协作,起始点都是 BEA WebLogic Server。由于 它具有全面的功能、对开放标准的遵从性、多层架构、支持基于组件的开发,基于 Internet 的企业都选择它来开发、部署最佳的应用。
BEA WebLogic Server 在使应用服务器成为企业应用架构的基础方面继续处于领先地位。BEA WebLogic Server 为构建集成化的企业级应用提供了稳固的基础,它们以 Internet 的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。
APACHE
apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。它源于NCSAhttpd服务器,当NCSA WWW服务器项目停止后,那些使用NCSA WWW服务器的人们开始交换用于此服务器的补丁,这也是apache名称的由来(pache 补丁)。世界上很多着名的网站都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Tomcat
Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat Server是根据servlet和JSP规范进行执行的,因此我们就可以说Tomcat Server也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。
Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技术的标准实现,是基于Apache许可证下开发的自由软件。Tomcat是完全重写的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。随着Catalina Servlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多WEB服务器都是采用Tomcat。
编辑本段小型WEB服务器
【 micro_httpd - really small HTTP server】
特点:
* 支持安全的 .. 上级目录过滤
* 支持通用的MIME类型
* 支持简单的目录
* 支持目录列表
* 支持使用 index.html 作为首页
* Trailing-slash redirection
* 程序总共代码才200多行
这个httpd适合学习简单的Web Server编写学习,因为它只有一个简单的框架,只能够处理简单的静态页,可以考虑用来放静态页。
官方地址:http://www.acme.com/software/micro_httpd/
下载地址:http://www.acme.com/software/micro_httpd/micro_httpd_12dec2005.tar.gz
【 mini_httpd - small HTTP server 】
特点:
* 支持GET、HEAD、POST方法
* 支持CGI功能
* 支持基本的验证功能
* 支持安全 .. 上级目录功能
* 支持通用的MIME类型
* 支持目录列表功能
* 支持使用 index.html, index.htm, index.cgi 作为首页
* 支持多个根目录的虚拟主机
* 支持标准日志记录
* 支持自定义错误页
* Trailing-slash redirection
mini_httpd 也是相对比较适合学习使用,大体实现了一个Web Server的功能,支持静态页和CGI,能够用来放置一些个人简单的东西,不适宜投入生产使用。
官方地址:http://www.acme.com/software/thttpd/
下载地址:http://www.acme.com/software/mini_httpd/mini_httpd-1.19.tar.gz
【 thttpd - tiny/turbo/throttling HTTP server 】
thttpd中是一个简单,小型,轻便,快速和安全的http服务器.
简单:它能够支持HTTP/1.1协议标准,或者超过了最低水平
小巧:它具有非常少的运行时间,因为它不fork子进程来接受新请求,并且非常谨慎的分配内存(性能对比表:http://www.acme.com/software/thttpd/benchmarks.html)
便携:它能够在大部分的类Unix系统上运行,包括FreeBSD, SunOS 4, Solaris 2, BSD/OS, Linux, OSF等等
快速:它的速度要超过主流的Web服务器(Apache, NCSA, Netscape),在高负载情况下,它要快的多
安全:它努力的保护主机不受到攻击,不中断服务器
thttpd 类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现。因此效能很好。同时它还有一个特点就是基于URL的文件流量限制,这对于下载的流量控制而言是非常方便的。象Apache就必须使用插件实现,效率较thttpd低。
thttpd跟lighttpd类似,适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合。
官方地址:http://www.acme.com/software/thttpd/
下载地址:http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz
【 lighttpd - light footprint + httpd = LightTPD 】
Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。
lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到lighttpd就必须面对这些问题。
实用起来lighttpd确实非常不错,apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低,而且反应速度相当快。
利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!
lighttpd 适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合。
官方地址:http://www.lighttpd.net/
下载地址:http://www.lighttpd.net/download/lighttpd-1.4.16.tar.gz
【 SHTTPD - Simple HTTPD 】
Shttpd是另一个轻量级的web server,具有比thttpd更丰富的功能特性,支持CGI, SSL, cookie, MD5认证, 还能嵌入(embedded)到现有的软件里。最有意思的是不需要配置文件! 由于shttpd可以嵌入其他软件,因此可以非常容易的开发嵌入式系统的web server,官方网站上称shttpd如果使用uclibc/dielibc(libc的简化子集)则开销将非常非常低。
特点:
* 小巧、快速、不膨胀、无需安装、简单的40KB的exe文件,随意运行
* 支持GET, POST, HEAD, PUT, DELETE 等方法
* 支持CGI, SSL, SSI, MD5验证, resumed download, aliases, inetd模式运行
* 标准日志格式
* 非常简单整洁的嵌入式API
* dietlibc friendly. NOT that friendly to the uClibc (*)
* 容易定制运行在任意平台:Windows, QNX, RTEMS, UNIX (*BSD, Solaris, Linux)
由于shttpd可以轻松嵌入其他程序里,因此shttpd是较为理想的web server开发原形,开发人员可以基于shttpd开发出自己的webserver!
官方网站:http://shttpd.sourceforge.net/
下载地址:http://jaist.dl.sourceforge.net/sourceforge/shttpd/shttpd-1.38.tar.gz
⑦ 中软国际有限公司的产品与服务
中软国际在业界率先提出“总、分、总”的项目建设模式:是指大型应用系统的建设可以分为系统总体咨询 / 设计、系统各分应用分别开发、系统总体集成三个阶段。其中,系统总体咨询 / 设计和系统总体集成以选择同一家公司完成为佳,各应用系统开发可以选择多家公司在遵循相关规范的条件下分别开发,最终统一集成。该模式已在国家金审工程(一期),国家烟草专卖局生产经营决策管理系统建设中得以成功实施。
利用在电子政务领域已被证明的优秀的产品集群能力及服务实施能力,积极拓展电子商务及行业集成领域,中软国际能够为企业的电子商务建设提供成熟的软件产品和解决方案,帮助企业利用互联网设计自己的电子商务运行模式;提供包括咨询、设计、集成、开发、实施、测试、培训、售后服务在内的一条龙服务。作为电子政务及电子商务领域的先导者,中软国际核心战略之一,是通过技术创新来开发新产品与新解决方案,依靠自身强大的研发能力保持和巩固在业界的领先地位。贴进市场需求是中软国际产品的显着特点,产品研发的原动力来自于我们与客户充分的沟通以及我们对市场需求的及时、深刻理解,严格的产品开发流程管理确保了产品能够成分(充分)实现这种需求。中软国际先后承担了多项国家重点科技攻关项目,申请并获得了 10 余项软件着作权和专利技术,形成了一系列应用广泛的软件产品和全套系统解决方案。成功研发了以应用支撑平台产品 ResourceOne为核心的产品系列,形成了包括平台产品、工具产品、应用产品在内的成熟产品架构,充分利用成熟技术将降低招标方的项目开发成本和开发风险。ResourceOne 被 CCID 评定为 2002 -2006年度中国电子政务应用支撑平台产品第一品牌。
中国软件以服务社会、振兴自主软件产业为己任,在国家信息化“金”字系列工程中发挥了重要作用。经过多年努力,中国软件形成了较为完善的自主基础软件发展体系,打造了一个从操作系统、数据库、中间件、安全产品到应用系统的产业发展链条;先后承担了数千项国家重大工程项目,在全国税务、信访、安监、应急、政法、审计、烟草、交通、金融、物流、能源、工商等国民经济重要领域拥有上万家客户群体;同时积极推动移动增值、智慧城市、软件外包等新型服务业务的发展。时至今日,中国软件已经成为国内领先的综合IT服务提供商,拥有立足国内、辐射海外的三十余家控参股公司和境内外分支机构,与众多合作伙伴一起形成了庞大的客户服务网络。
同时,中软国际在自身产品体系基础上,通过积极的策略联盟合作关系,引进、集成第三方产品和技术,从而极大地丰富、完善我们的解决方案。先进的专业化管理模式为中软国际开展业务提供管理保障,其管理结构的设计参考了国际上最新的 IT 行业管理体系,其项目管理采用了国际上最先进的软件工程的技术,务求做到与客户的充分沟通与业务组织的有序,形成了以项目管理为核心的客户服务水平保障机制,确保企业站在客户的角度,理解客户需求,规划解决方案,实施客户服务,降低客户风险。领先的项目管理能力成为中软国际核心竞争力的重要方面。公司已通过 ISO质量体系认证,并正在进行 CMM 咨询、过程改进及评估相关程序,并谋求 CMM3 资质。
典型客户包括天津泰达经济技术开发区、北京经济技术开发区、哈尔滨开发区、广州开发区、大连经济技术开发区、审计署、交通部、农业部、民政部、国家烟草专卖局、中国联通、中国网通、 IBM 、 HP 、 Motorola 等。 ResourceOne(简称R1)是基于构件及服务技术的开发、整合、项目工程化管理的支撑平台,是集支撑快速应用开发、应用整合及分发管理、业务流程控制及管理、信息集成交换及业务协同于一体的完整信息化支撑平台,于2008年发布的V4第四代创新产品线包括:多年来,中软国际精准把握客户需求,凭借自主研发的应用整合和业务支撑中间件产品ResourceOne,帮助用户实现信息化工程建设全生命周期的最佳操控,并一向致力于实现企业级信息系统的业务应用创建支撑、集成、管理、运维服务及业务优化,并在制造业(烟草工业及整个行业)、零售业(烟草销售)、电子政务工程(多个国家金字号工程、政府机关、经济技术开发区)中都已有广泛的应用和大量成功案例。ResourceOne平台产品在中软国际多年的行业经验和技术积累基础上,从工程建设角度提供了项目开发、整合、管理三位一体的配套支撑环境,保障和提升大型软件工程项目成功交付能力:
一、R1提供IT整合支撑的环境 1、以R1构件和服务模型为核心,提供支撑R1构件及服务的基础架构; 2、以R1 DE-Integration为核心的R1交换集成平台,遵循面向服务的技术架构(SOA),提供更为丰富的企业级支撑能力,以及提供对整个企业IT系统服务消息处理调度中枢的能力; 3、R1 StarFlow业务流程管理平台,提供跨应用的业务服务协同和流程管理的能力,帮助客户实现业务流程的集成; 4、R1 Portal/Framework集成门户,基于构件技术,提供构件注册、装配功能和资产化管理能力,并提供各类Web应用系统的统一访问集成,构建具有高度可伸缩性的企业级应用集成门户 5、R1 Adapter Framework,提供统一的适配框架,帮助客户实现对异构、遗留系统的连接集成。
二、R1提供快速开发业务应用的工具与支撑平台1、ResourceOne 提供以构件方式快速实现应用封装与应用装配管理的工具,通过实现应用及服务松散耦合集成,帮助客户有效的管理、重组、更新应用和对新系统的再造;2、R1 StarFlow结合R1Studio提供快速定制开发流程化业务应用的能力,业务应用中的数据和服务可与R1 DE-I及其他企业服务总线进行交互;3、基于Eclipse的全生命周期集成化设计开发工具 R1 Studio,提供应用快速辅助开发及部署、R1工程资源管理、团队协作、集成场景的可视化设计编排、调试、仿真等功能。
三、提供项目过程管理及质量控制环境ResourceOne是中软国际基于平台进行项目开发与管理的基础,并且在Studio中内置集成了对R1工程建设方法的多项支持。
ResourceOne DE-Integration
ResourceOne DE-Integration(简称R1 DE-I)是ResourceOne家族中提供面向服务(SOA)技术支撑能力的基础设施,提供企业服务总线(ESB)所需的核心功能,同时完全兼容和保留传统的企业应用集成(EAI),拥有强大的企业级的信息交换、应用及服务集成能力,是实现企业面向服务(SOA)的服务调度、交换中枢和业务协同的重要产品。R1 DE-I是集多种功能于一体的集成骨架,实现基于SOA的企业应用集成,连接器/适配器接入;拥有企业服务总线ESB的强大功能,支持各种通讯协议转换、消息格式转换以及服务中介调用,用于在异构服务与应用系统之间连接、调节和管理交互。
1) 以信息交互、数据共享为切入点,构建应用系统间的集成中枢,整合IT环境中信息共享与管理;
2) 扮演企业服务总线(ESB)的角色,提供IT环境中应用/服务间的服务 ,帮助用户构建面向服务(SOA)的IT架构;
3) 灵活的伸缩性和适应性,可以实现跨地域的信息或服务交互;提供可靠的信息传输架构;帮助用户实现全国、甚至全球范围内的信息整合;
4) 整合IT环境中应用间的相互交互关系,增强可扩展性、可管理性,增强IT环境对业务的适应性。ResourceOne额外提供适配器框架产品ResourceOne AdapterFramework(简称 R1 AF),为R1适配器提供一个松散耦合、标准、稳定、易于扩展、具有良好可管理能力的运行环境,在R1 SOA架构中,实现应用系统间非侵入式交互、连接。
ResourceOne GlobalRepository
ResourceOne GlobalRepository(简称:R1 GLR)是ResourceOne SOA架构中存储和管理R1整合资源的元数据管理系统,提供了企业级的Web服务及其它资源注册、存储、发现、检索及调用等服务。提供对资源依赖关系的清晰可见,促进重用,并且提供了与第三方同类产品和R1Studio的集成能力。
1) 通过使用各种管理控制、降低风险以及提高投资回报率的方法,使机构能够更轻松地转变到面向服务的架构;
2) 通过对IT资产的持续控制、分析来确保SOA始终有效提供业务价值,为整个面向服务架构生命周期的治理提供了坚实基础;
3) 通过展现IT资产的可视性统一视图来促进复用、消除冗余和优化使用,从而保护已有的IT投资的价值;
4) 除Webservice之外,还提供更丰富的IT资产的管理,如R1适配器,并且可以通过标准的接口访问。
ResourceOne StarFlow
ResourceOne Starflow(简称:R1 StarFlow)是ResourceOne业务流程管理基础平台,可支持快速流程化应用开发与部署独立流程管理BPM服务器,以业务流程为核心,将参与流程活动的人员、信息、数据等实现整合管理,提高业务流程、组织及IT架构的灵活性和敏捷性,可与R1 DE-I或第三方ESB产品集成,提供完整的基于SOA的BPM解决方案。
1) 提供全生命周期的业务流程管理;
2) 提供快速构建流程化业务应用的能力;
3) “流程即服务”轻松实现基于SOA的BMP解决方案;
4) 完备的多层次的权限控制体系。
ResourceOne Portal/Framework
ResourceOne Portal/Framework(简称R1 Portal/Framework)通过整合人员、业务应用和服务,其采用多种先进技术带来前所未有的用户体验。
1) “融合”的设计理念,融信息门户和应用集成门户于一体,快速集成不同资源,为用户提供差异化服务与体验;
2) 融入中软国际多年行业项目经验,为用户提供即插即用的实用功能,帮助用户有效解决系统建设中的问题;
3) 弹性灵活,能够根据实际业务场景和变化快速定制优化,紧跟业务步伐。 ResourceOne Studio(简称:R1 Studio)是ResourceOne的统一设计开发工具平台,提供对项目整个交付生命周期的全面支持,包括工程资源与Team协作统一管理,快速应用构件设计开发,中介服务、信息交换、业务流程、数据主题、映射的可视化设计,流程调试及仿真模拟,快速部署及多国语言支持等,为集成商、开发商提供了一个快速而强大的工具环境。
1) 基于ResourceOne工程建设方法论,对项目的设计、开发、集成等各个阶段提供支持,帮助设计人员、应用开发人员、系统集成人员、质量管理人员等从不同层面对项目进行开发与管理;
2) 结合中软国际项目管理办法(如QA规范制度),针对在项目开发过程中各阶段,提供项目Review管理,实现对Review结果管理、Review协作沟通,保障软件项目设计、开发质量;
3) 提供流程模板复用、表单模板复用、代码段复用等复用机制,通过复用机制可以迅速开发设计应用组件,随着项目可重用资源不断提炼积累,能为新项目提供复用资源和快速解决方案,从而提高企业核心竞争力;
4) 提供以脑图方式对原始需求进行功能分解的功能,能够形成功能分解图,根据功能分解图,基于R1工程建设方法论进行应用构件切分、功能设计、应用角色设计、菜单项设计;支持基于R1应用开发框架进行面向MVC模式的J2EE应用开发。
⑧ 在什么上提供了集成、可靠,可伸缩的web服务器
在Internet上提供了。
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览。可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是ApacheNginxIIS。
⑨ Microsoft SOAP Toolkit Version 3 的问题
使用 Microsoft SOAP Toolkit 2.0 建立安全 Web 服务
Kirill Gavrylyuk
测试组长,Web 数据 SOAP 组
Microsoft Corporation
2001年7月
摘要: Microsoft SOAP Toolkit 2.0 提供一个灵活的框架,可以为各种 Intranet 和 Internet 解决方案构建可伸缩的 Web 服务。在这两种方案中,安全性都是建立可靠服务的重要因素。SOAP Toolkit 2.0 支持基于 IIS 安全基础结构的 Internet 安全性。本文介绍了如何使用 Microsoft SOAP Toolkit 2.0 建立安全解决方案。
目录
简介
重要规则
身份验证
代理支持和身份验证
SSL 和客户端证书
身份验证问题
疑难解答
其它信息
简介
与任何分布式协议相同,成功的 SOAP 应用程序的关键在于获得安全性权限。SOAP 标准不指定任何安全性机制,而是将安全处理委派给传输层。对 SOAP Toolkit 2.0 而言,传输层是 HTTP。在 HTTP 上运行的 SOAP 基本上是一个 Web 应用程序,与其它在 IIS 上运行的 ASP 或 ISAPI 应用程序很相似。SOAP 的身份验证、授权和加密机制与您通常使用的 Web 应用程序完全相同。如果熟悉 Web 安全性,也就了解了 SOAP 安全性。如果对 Web 应用程序不够熟悉,本文将为您提供充分的入门知识背景。每个主题都介绍的非常详细。如果需要更详细的信息,请参见 MSDN Library 或由 Michael Howard、Marc Levy 和 Richard Waymire 编着的《设计 Microsoft Windows 2000 基于 Web 的安全应用程序》。
重要规则
根据《设计 Microsoft Windows 2000 基于 Web 的安全应用程序》中阐述的观点,我们首先从概述建立安全 Web 服务应遵守的重要规则开始。安全 Web 服务可归纳为以下七类:
身份验证
授权
审核
保密
完整性
可用性
认可
身份验证是一个实体(也称为主题)验证另一个实体是否符合它所声称的身份的过程。SOAP Toolkit 2.0 支持以下身份验证方法:
基本
摘要式
Kerberos
Windows NTLM
SSL 客户端证书
基于 SOAP 头的身份验证
代理身份验证
本文档介绍如何配置服务器端和客户端使用上述身份验证方法。
授权是为经过身份验证的用户提供资源访问权限的机制。只要使用 SOAP Toolkit 建立的 Web 服务基于 IIS,这些服务就可以利用 IIS 支持的授权机制。本文档也将讲述用户应注意的一些问题。
审核的目的是为了收集有关对 Web 服务的成功和失败请求的信息。可以使用 IIS 审核功能和 SOAP Toolkit 跟踪功能实现这一目的。本文档没有介绍这方面的内容,您可以参考 IIS 文档、netmon 日志和 SoapServer 对象的 SOAP Toolkit 帮助。
保密是指确保攻击者看不到客户端与服务器之间的通信信息。完整性是指保护数据不被删除或更改(不管是恶意还是不慎)的能力。为了实现保密和完整性,SOAP Toolkit 允许使用安全套接字层 (SSL) 加密数据。本文档将介绍如何启用 IIS 上的 SSL 支持以及如何将其用于客户端。
可用性确保不会拒绝合法用户对请求的资源的访问。可用性技术的示例包括负载平衡以及硬件和软件的故障转移。SOAP Toolkit 已成功通过了 Microsoft Application Center 负载平衡软件的测试。
认可是一种技术,为发生的操作提供证据以防止客户端在事务处理中欺诈或否认。SOAP Toolkit 采用 IIS 提供的认可功能。本文档不对认可进行介绍。
身份验证
本节介绍了 SOAP Toolkit 支持的身份验证方法,包括其优点和缺点,以及如何对其进行设置。还介绍了 SOAP Toolkit 在支持平台上的已知局限性,以及服务器具有多个可用身份验证方案时 SOAP Toolkit HTTP 连接器的行为。
身份验证握手是如何进行的?每个身份验证握手都是如下开始:
客户端发出页面请求。
服务器返回状态 401“拒绝访问”和一组 HTTP 头。
WWW 验证它支持的每一个身份验证方法。
如何使用 SoapClient 验证自身?如果 Web 服务要求身份验证(基本、摘要式、NTLM 或 Kerberos),需要为 SoapClient 提供用户名和密码,以将其传递到 Web 服务。也可以使用 SoapClient.ConnectorProperty 包完成此操作:
dim SoapClient
set SoapClient = createobject("MSSoap.SoapClient")
SoapClient.mssoapinit("http://your-server/webservice/service.wsdl ")
SoapClient.ConnectorProperty("AuthName") = "username"
SoapClient.ConnectorProperty("AuthPassword") = "userpwd"
Quote = SoapClient.GetQuote()
注意:使用 SOAP Toolkit 2.0 时,只有在调用远程方法时才必须设置 SoapClient 上的 ConnectorProperties。
如果包含服务描述的 wsdl 文件所在的虚拟目录也要求身份验证,可以在 URL 内传递用户名和密码:
SoapClient.mssoapinit
("http:// username:userpwd@your-server/webservice/service.wsdl ")
人们往往错误地认为将用户名和密码放入 URL 是不安全的。事实并非如此。在发送 HTTP 请求之前,客户端 HTTP 代码将分析 URL,移出用户名和密码,并在身份验证握手时使用此用户名和密码。事实上,代码:
SoapClient.ConnectorProperty("AuthName") = "username"
SoapClient.ConnectorProperty("AuthPassword") = "userpwd"
Quote = SoapClient.GetQuote()
与下列代码的功能相同(假设 WSDL 文件 service.wsdl 指向自身):
SoapClient.ConnectorProperty("EndPointURL")=
"http:// username:userpwd@your-server/webservice/service.wsdl"
Quote = SoapClient.GetQuote()
虚拟目录设置如何要求身份验证?若要在服务器上更改特定虚拟目录的身份验证设置,请执行下列操作:
在 IIS 4.0 和 IIS 5.0 上,用鼠标右键单击虚拟目录,单击“属性”,然后单击“目录安全性”选项卡。
在“匿名访问和身份验证控制”之下,单击“编辑”。将出现以下两个选项:
匿名访问
匿名访问不是身份验证方法。Windows 2000 和 NT4 要求用户在访问任何资源之前验证自身,这种情况下,IIS 使用一个特殊帐户作为匿名 Web 用户(默认为 IUSR_machinename)。可以单击“匿名访问编辑”按钮更改此默认匿名 Web 用户的帐户或其密码。
注意:小心不要将特权帐户用作匿名 Web 用户帐户。若要将虚拟目录设置为要求身份验证,需要清除“匿名访问”标记。
基本身份验证
若要将虚拟目录设置为要求基本身份验证,需要:
转至“属性”/“目录安全性”/“编辑匿名访问验证控制”菜单。
取消选中“匿名访问”。
启用“基本身份验证”。将显示一条警告消息。如果要继续使用基本身份验证,请单击“确定”。
单击“基本身份验证编辑”按钮。输入域名。如果要使用默认域名,请输入“\”(不加引号)。
缺点:基本身份验证是非常不安全的。用户名和密码以不加密的 Base64 编码形式通过线路传输。问题不仅在于攻击者能访问基本身份验证保护的资源,他们还能够获取您的用户名和密码的实际值,并用来访问其它更安全的资源。使用 SSL 连接会更安全一些,因为 SSL 握手在身份验证握手之前发生。这样,可以通过安全连接传送用户名和密码。
优点:基本身份验证是 HTTP 1.0 协议的一部分,是得到最广泛支持的身份验证方案。
结论:基本身份验仅当与 SSL 功能共同使用时才是一个好的解决方案。如果希望您的服务具有安全性和高互操作性,请使用本方法。
摘要式身份验证
这是一个相对较新的方法,是 HTTP1.1 协议的一部分,但没有被 Web 服务器广泛采用。对于 Windows,它只在出现 Windows 2000 之后才被采用。若要在 IIS 5.0 上设置摘要式身份验证,请执行下列步骤:
转至“属性”/“目录安全性”/“编辑匿名访问”和“身份验证控制”菜单。
取消选中“匿名访问”。
启用“摘要式身份验证”。将显示一条警告消息。如果要继续使用摘要式身份验证,请单击“确定”。
使用摘要式身份验证具有以下要求:
运行 Windows 2000 Server 的系统位于 Active Directory 域。
在域控制器上安装 iissuba.dll 文件。该 DLL 在匿名访问和摘要式身份验证期间发挥作用。
在 Active Directory 设置中使用摘要式身份验证的所有帐户的日志记录都启用“使用可逆加密存储密码”选项。这是对 Active Directory 中帐户密码的纯文本副本进行摘要式身份验证访问时所必需的。这样,可确保存储这些密码的服务器是非常安全的。
缺点:如果摘要式身份验证不与 SSL 一起使用,将不能保护资源免于重复攻击。目前尚未在其它 HTTP 客户端和服务器中被广泛采用。在 IIS 5.0 上的实现具有局限性,如果通过摘要式身份验证登录到服务器,标识将无法委派到其它服务器。这就将服务器限制为服务器方案。
优点:摘要式身份验证简单,可能会越来越普及。它比基本身份验证更安全,因为尽管仍可能遭到重复攻击,但攻击者无法获得访问其它资源所要求的用户名和密码的实际值。
结论:摘要式身份验证可以用于保护通过 Web 服务公开到 Internet 的低价值资源。在 SSL 上使用基本身份验证可以获得更好的性能,因为 SSL 速度慢,但不会象基本身份验证那样将用户名和密码暴露给攻击者。
Windows 集成身份验证 (NTLM)
Windows 集成身份验证(IIS 4 中的 Windows 请求/响应身份验证)在 Windows 2000 和 NT4 上表现为不同的方法。在具有 IIS 4 的 NT 4 下,它描述为 NTLM 身份验证。若要将 IIS 服务器设置为要求 Windows 集成身份验证(在 IIS 5 上)或 NTLM(在 IIS 4 上),请完成基本或摘要式身份验证步骤 1 和 2,并在步骤 3 中选择相应的复选框。
NTLM 身份验证(NT LAN Manager 或 Windows 请求/响应身份验证)是本机 Windows 身份验证方案。如果未指定用户名/密码,将使用当前登录用户凭据。通过 Intranet 访问时,如果用户已经登录的域与 Web 服务器的域相同,而且使用自己的凭据,则这些用户不必重新进行身份验证。在 NTLM 握手过程中,客户端用服务器(请求)发送的随机值散列密码,然后将此散列(响应)发送给服务器。这意味着密码不会通过线路显式发送。人们通常错误地认为 NTLM 只能用于 Intranet 解决方案,不应用于 Internet。实际上,NTLM 可以用于 Internet,只不过用于 Intranet 时速度更快,因为它依赖于 Windows 登录过程。若要同时传送域名和登录名称,请使用 SAM 帐户名称:
SoapClient.ConnectorProperty("AuthName") = "DOMAIN\username"
缺点:NTLM 只能用于 Windows。与基本和摘要式身份验证方案一样,它只对客户端进行身份验证。使用 NTLM 时,服务器上的模拟线程无法将自己的权限委派给另一台服务器。这限制了 NTLM 身份验证在“服务器至服务器”方案中的使用;但仍可以在这种方案中使用基本和摘要式身份验证。NTLM 不能通过代理工作。
优点:NTLM 比基本和摘要式身份验证更安全,因为它不容易受到重复攻击。由于依赖 Windows 登录过程,因此在 Intranet 方案中速度很快。
结论:推荐将 NTLM 用于“客户端至服务器”Intranet 解决方案。也可用于限制为 Windows 体系结构的公司 Internet 解决方案。
Kerberos 身份验证
Kerberos 身份验证是在 Windows 2000 中出现的。当指定 IIS 5 使用 Windows 集成身份验证时,IIS 5 和 SoapClient HTTP 连接器通过协商协议确定是使用 NTLM 还是使用 Kerberos。如果在 Windows 2000 上运行 SoapClient,则使用 Kerberos,否则使用 NTLM。指定 SoapClient 上用户凭据时所应用的规则与 NTLM 相同。
缺点:仅 Windows 2000 平台支持 Kerberos。Kerberos 要求具有一个可向其请求服务票证的 KDC 服务器。通常,人们不想将自己的 KDC 服务器公开于 Internet。因此,Kerberos 通常只限于 Intranet 应用。默认情况下,只有服务器的 NetBIOS 名称在 Kerberos KDC 中进行了注册。如果您希望请求票证时使用 IIS 服务器的 DNS 名称,则必须在 KDC 中注册 DNS 名称。
优点:与 NTLM 相比,Kerberos 速度更快、更安全,而且同时对服务器和客户端进行身份验证。Kerberos 不是 Windows 专有的身份验证方案,也可以由其它平台实现。很重要的一点在于它允许将标识委派给另一台计算机,因此可以在“服务器至服务器”方案中使用。
结论:推荐在基于 Windows 2000 的 Intranet 解决方案中使用 Kerberos。
有时,需要服务器支持多种身份验证方案(以便允许对多种类型的客户端进行身份验证)。这种情况下,IIS 将发送多个 WWW 身份验证头,详细说明它支持的身份验证方案,客户端将选择它支持的第一个身份验证方案。了解 SoapClient 在特定情况下选择哪种身份验证方案非常重要。请参考表 1,其中描述了 SOAP Toolkit 2.0(更准确的说是 HttpConnector)在各种平台上的行为。
表 1:SOAP Toolkit 2.0 HttpConnector 与 IIS 5.0 的比较
基本 摘要式 Windows 集成 Windows 98 Windows Me Windows NT 4.0 Windows 2000
X X 基本 基本 基本 摘要式
X X NTLM NTLM NTLM Kerberos
X X NTLM NTLM NTLM Kerberos
X X X NTLM NTLM NTLM Kerberos
左边的三列代表服务器提供的身份验证方案。每一行都代表服务器允许的身份验证方案集的一个不同组合。右边的四列显示了可以运行 SOAP Toolkit Client (HttpConnector) 的平台。例如,如果服务器既允许基本身份验证也允许摘要式身份验证,SOAP 将在除 Windows 2000 之外的所有平台上选择基本身份验证。
表 2 显示了 Microsoft SOAP 行为与 IIS 4.0 服务器的比较。
表 2:SOAP Toolkit 2.0 HttpConnector 与 IIS 4.0 的比较
基本 Windows 集成 Windows 98 Windows Me Winodws NT 4.0 Windows 2000
X X NTLM NTLM NTLM NTLM
身份验证支持中的已知局限性:SOAP Toolkit 2.0 使用 NTLM/Kerberos 同时发送域名和帐户名时具有某种局限性。但已经在 SP2 中进行了修正。
代理支持和身份验证
SOAP Toolkit 广泛支持通过代理服务器进行通信,包括在代理服务器上进行身份验证。我们将具体说明以下方案,讲述如何通过代理服务器使用 Web 服务。
直接访问
默认情况下,SOAP Toolkit HttpConnector 尝试对 Web 服务进行直接调用。如果您不具有 Web 服务的直接访问权限(例如,Web 服务位于您的 Intranet 之外,必须通过代理才能访问),以下脚本将失败:
dim SoapClient
set SoapClient = createobject("MSSoap.SoapClient")
SoapClient.mssoapinit("http://services.xmethods.net/soap/urn:xmethods-CurrencyExchange.wsdl")
Quote = SoapClient.GetQuote()
通过默认代理访问
试图访问 Intranet 之外的网站时,Internet Explorer Web 浏览器将通过在 IE 设置中指定的默认代理服务器。您可以通过 IE/“工具”/“选项”/“连接”/“局域网设置”对话框查看这些设置。若要使 Microsoft SOAP Toolkit (HTTPConnecter) 使用这些设置,应将 UseProxy 属性设置为 TRUE。示例:
dim SoapClient
set SoapClient = createobject("MSSoap.SoapClient")
SoapClient.mssoapinit("http://services.xmethods.net/soap/urn:xmethods-CurrencyExchange.wsdl")
SoapClient.ConnectorProperty("UseProxy") = true
Quote = SoapClient.GetQuote()
绕过代理服务器列表。请注意,IE 代理设置中有一个主机列表,您可以连接这些主机来绕过代理服务器。
转至 IE/“工具”/“选项”/“连接”/“局域网设置”对话框。
若要绕过本地服务器,请启用设置“对于本地地址不使用代理服务器”。
若要在连接到其它特定服务器时绕过代理,请单击“高级”按钮。可以在“例外”编辑控件中列出要绕过的服务器,各个服务器名称之间用分号隔开。可以使用通配符“*.soap-company.com”绕过名称中含有 .soap-company.com 的所有服务器。
需要代理服务器来允许绕过本地 Intranet 之外的任何服务器。请注意,用于 HTTP 和用于通过 SSL (HTTPS) 连接的代理服务器不同。代理应允许使用任一协议,以便 SSL 正常工作。
局限性:使用默认代理时,在 Windows 2000 和 Windows NT4 上使用 Microsoft SOAP Toolkit 2.0 HttpConnector 有一个已知问题:它不理解默认 IE 代理设置的“绕过代理”列表。如果选中了“对于本地地址不使用代理服务器”并且在 URL 中指定的主机名不包含“.”,它将绕过代理服务器。但它不理解在 IE 代理设置“高级”菜单中的“例外”文本框中指定的复杂模板。
通过指定代理连接
可以指定哪个代理使用 ProxyServer 和 ProxyPort 连接器属性:
set SoapClient = createobject("MSSoap.SoapClient")
SoapClient.mssoapinit("http://services.xmethods.net/soap/urn:xmethods-CurrencyExchange.wsdl")
SoapClient.ConnectorProperty("UseProxy") = true
SoapClient.ConnectorProperty("ProxyServer") = "yourproxy"
SoapClient.ConnectorProperty("ProxyPort") = 80
Quote = SoapClient.GetQuote()
请注意,如果使用 ProxyServer 属性,则不必将 UseProxy 设置为 True,它将自动设置。
代理身份验证
代理服务器可以在允许连接之前要求您对自身进行身份验证。例如,可以使用它限制在公司 Intranet 内使用 Internet。代理服务器可使用上述所有身份验证方案。Microsoft SOAP Toolkit 2.0 允许您指定代理身份验证的用户名和密码:
set SoapClient = createobject("MSSoap.SoapClient")
SoapClient.ConnectorProperty("UseProxy") = true
SoapClient.mssoapinit("http://services.xmethods.net/soap/urn:xmethods-CurrencyExchange.wsdl")
SoapClient.ConnectorProperty("ProxyServer") = "secureproxy"
SoapClient.ConnectorProperty("ProxyPort") = 80
SoapClient.ConnectorProperty("ProxyUser") = "username"
SoapClient.ConnectorProperty("ProxyPassword") = "password"
Quote = SoapClient.GetQuote()
如果代理要求 NTLM 身份验证,可以省略用户名和密码,这是将使用当前登录凭据。如果需要指定代理 NTLM 身份验证的域名,请添加“DOMAIN\username”进行服务器身份验证。
局限性。Microsoft SOAP Toolkit 2.0 不支持通过要求身份验证的代理连接到也要求身份验证的服务器。另外,通过要求身份验证的代理的 SSL 连接在 Windows 2000 和 Windows NT4 上不能正常工作。
SSL 和客户端证书
在本节中,我们将具体讨论如何通过安全套接字层 (SSL) 和客户端证书支持进行连接。我们还将讨论 Microsoft SOAP Toolkit 2.0 在使用客户端证书支持的支持平台上的已知局限性。
通常认为 SSL 只是一种加密机制,其实它还提供身份验证。若要使 IIS 4.0/IIS 5.0 支持 SSL 连接,需要获取 X.509 证书,并将其安装在服务器上。
何谓 X.509 证书?
证书是一种结构,其中包含主题、颁发者名称、有效期和其它特征等信息。(有关证书的详细信息,请参阅由 Michael Howard 编着的《设计 Microsoft Windows 2000 基于 Web 的安全应用程序》。) 每个证书都与用于 SSL 加密的一对私有和公用密钥相关。SSL 始终使用 X.509 证书对 Web 服务器进行身份验证。
若要获得证书,需要向证书颁发机构发出证书请求。证书颁发机构 (CA) 是颁发证书的单位。当 CA 向主题(发出请求的实体)颁发证书时,它验证该主题是否与它所声称的相符,并签发新证书和私有密钥。这样,主题可以信任 CA。如果信任颁发证书的 CA,则表示信任向您提供此证书的主题。根目录证书保证 CA 的可信性。多个 CA 可以形成一条信任链:如果信任根 CA,就信任具有根 CA 颁发的证书的中间 CA,因此将信任具有中间 CA 颁发的证书的所有主题。
“信任”的实际意义是什么?可以将 CA 的证书放入“受信任的根目录证书颁发机构”存储区来表示信任该 CA。所有证书都存储在所谓的证书存储区中。有多个默认存储区,例如:
CURRENT_USER\MY\,个人证书存储区,用于当前登录的用户,对其它登录用户不可见
LOCAL_MACHINE\MY\,个人证书存储区,用于所有用户
CURRENT_USER\Root\,受信任的根目录证书颁发机构,包含当前用户信任的根 CA 的证书,如果证书具有到根 CA 证书的证书路径,则当前用户信任该证书的有效性。
LOCAL_MACHINE\Root\,相同,但被所有用户信任
具有被默认信任的根 CA,例如 Verisign。尽管我们的示例将使用一个试用版的 Verisign 证书,但是它们是由不被默认信任的 Verisign 测试机构颁发的。
在服务器上启用 SSL
本节介绍如何创建证书请求、从 Verisign 站点获得试用版的测试服务器端证书,并将其安装在 Web 服务器上。
使用 IIS 4.0 启用服务器上的 SSL
用鼠标右键单击要启用 SSL 的网站,并选择“属性”。
在“目录安全性”选项卡上,单击“编辑安全通信”。
在对话框中,单击“密钥管理器”。
展开树状视图中的“本地计算机”节点。用鼠标右键单击 WWW 叶,并选择“新建密钥”。这将启动称为“密钥管理器”的密钥请求向导。
选择“将请求放入要发送到颁发机构的文件中”和一个文件名。单击“下一步”。
输入一个易记的密钥名称。输入密码,当获取由颁发机构颁发的证书时需要此密码。对于加密密钥字节长度,请选择 1024(1024 为推荐长度,某些颁发机构不颁发小于此长度的证书)。单击“下一步”。
输入您的组织和部门名称。输入等同于完整站点名称的公用名称,例如 www.yoursite.com。在启动 SSL 连接之前,客户端将检查站点名称是否与证书的公用名称相同。单击“下一步”。
输入国家(地区)、省/自治区、市/县所在地。证书颁发机构可能检查这些信息是否一致,以确保输入的信息有效。输入省时,请输入完整的省名称。
输入管理服务器的人员的姓名、电子邮件地址和电话号码。这些信息不包含在证书中,但证书颁发机构需要这些信息。
包含您的请求的文件已经创建。该文件为 Base64 编码格式。在此过程中,IIS 还将为该证书请求创建一个私有密钥和一个公用密钥。私有密钥将保存在您的计算机上,而公用密钥将随请求一起发往 Verisign,并用以加密证书数据。
转至 www.verisign.com(英文),并单击“Get Trial SSL ID”。注册证书时,会要求您提供 CSR(证书签名请求)。复制并粘贴您的请求文件中自行“BEGIN NEW CERTIFICATE REQUEST;”之后的内容,否则,将会出错。Verisign 以邮件形式将测试服务器端证书发送给您。该过程同样适用于商业证书,不同之处在于它收费并仔细验证提交的信息。
确保从证书颁发机构获得的证书是 Base64 编码的。如果证书颁发机构是 Verisign,则您可以通过电子邮件获得证书。创建一个扩展名为 .cer 的空文件,复制行“BEGIN CERTIFICATE”和“END CERTIFICATE”之间(包含这两行)的所有内容并粘贴到该文件。
转至要启用 SSL 的站点的“属性”/“目录安全性”选项卡。单击“编辑安全通信”,然后单击“密钥管理器”。
在对话框中,展开树状视图中的“本地计算机”节点,再展开 WWW 叶,将显示您的证书请求的密钥。由于该证书尚未安装,它标记为红色。用鼠标右键单击该证书,并选择“安装密钥证书”。选择具有要安装的证书的文件。将提示您提供以前设置的密码。输入密码。现在,您的证书已安装。
使用 IIS 5.0 启用服务器上的 SSL
用鼠标右键单击要启用 SSL 的网站,并选择“属性”。
在“目录安全性”选项卡上,单击“编辑安全通信”。
单击“服务器证书”打开服务器证书向导。该向导将记忆网站的当前状态,例如您是否已拥有服务器证书。(现在假设您没有证书。)
在证书向导中,单击“下一步”,选择“创建一个新证书”,然后单击“下一步”。
选择“现在准备请求,但稍后发送”,并单击“下一步”。
输入证书的友好名称。该名称不会在证书结构中使用,但作为区分请求和证书的一种方法。选择公用密钥长度。推荐密钥长度不小于 1024 字节。单击“下一步”。
输入可以由颁发机构验证的组织名称和部门名称,如果您请求用于商业目的的真实证书,请输入有效名称。输入要被认证的计算机的名称。注意:它必须等同于您的完整站点名称,例如 www.yoursite.com。单击“下一步”。
输入国家(地区)、省/自治区、市/县所在地。请输入有效信息,证书颁发机构将检查这些信息是否一致。输入省时,请输入完整的省名称。单击“下一步”。
输入用于保存请求的请求文件名称。单击“下一步”。
将摘要显示您输入的内容。确认内容正确,并单击“下一步”完成向导。包含请求的文件将以 Base 64 格式保存。
包含您的请求的文件已经创建。该文件为 Base64 编码格式。在此过程中,IIS 还将为该证书请求创建一个私有密钥和一个公用密钥。私有密钥将保存在您的计算机上,而公用密钥将随请求一起发往 Verisign,并用以加密证书数据。
转至 www.verisign.com(英文),并单击“Get Trial SSL ID”。注册证书时,会要求您提供 CSR(证书签名请求)。复制并粘贴您的请求文件中自行“BEGIN NEW CERTIFICATE REQUEST;”之后的内容,否则,将会出错。Verisign 以邮件形式将测试服务器端证书发送给您。该过程同样适用于商业证书,不同之处在于它收费并仔细验证提交的信息。
确保从证书颁发机构获得的证书是 Base64 编码的。如果证