客户关系管理系统的开发,大学本科论文初稿
指导老师:张鹏洲、鲁永泉系主任:王永滨
初稿
摘要
本文首先介绍了客户关系管理系统的项目背景和发展现状,然后介绍了.NET技术,包括.NET Framework,Common Language Runtime,ADO.NET,Web Services
SharePoint Potral介绍,C#语言介绍,Reporting Service介绍,三层体系结构。接着介绍项目任务和项目实现,项目实现部分包含了软件的解决方案及代码实现。最后,介绍了系统的不足和需要改进的地方。
【关键字】.NETADO.NET 表示层业务逻辑层数据层Reporting Service
第1章 项目的意义
1.1 项目背景
近年来,随着数字化、信息化技术的迅猛发展,特别是Internet、宽带技术、海量网络存储技术、数据库技术、数据仓库与数据挖掘技术的成熟与广泛应用,对媒体产业的发展及其内部业务管理和运行方式产生重大影响。
广告中心作为电视台的重要组成部分,1)不仅业务量大、业务范围广,而且审批环节环环相扣,相互影响;2)不仅需要管理客户,而且需要对客户进行分析、整理,为客户的广告投放提供建议;3)不仅需要重视业务员的销售结果,而且需要了解销售过程。因此,在原来广告业务管理系统上,增加办公自动化以及客户关系管理功能事在必然。
为了适应这种信息化经济,市场化经济的快速发展,重庆台广告中心不仅需要管理客户,而且需要对客户进行分析、整理,为客户的广告投放提供建议;不仅需要重视业务员的销售结果,而且需要了解销售过程。为此,该部采用较高的管理信息化手段―Customer Relationship Management(CRM),对客户信息进行管理,对客户、市场信息进行分析,对管理进行决策,最终促进广电行业的发展。
1.2 CRM简介
CRM来自英文(Custormer Relationship Management)的缩写,即客户关系管理。从物理结构上说,CRM是一套智能化的信息处理系统,从功能上说它是将企业的经营、管理导向“以客户为中心”的一套管理和决策方法。如今全世界范围内的各个企业都在经历一场深刻的变革,它关系到企业在未来怎样与客户和与潜在客户进行交流和互动。企业关注的焦点逐渐改进内部运作转移到更多地关注客户上来。由于需要将更多的注意力集中到客户身上,许多企业都再度开始寻求技术的帮助,即求助于客户关系管理(CRM)软件。CRM解决方案集中于自动化和改进流程,尤其是在销售、营销、客户服务和支持等前端办公领域。
CRM既是一套管理的原则制度,也是一套软件和技术。它的目标是缩减销售周期和销售成本、增加收入、寻找扩展业务所需的新的市场和渠道以及提高客户的价值、满意度、赢利性和忠实度。CRM应用软件将最佳的实践具体化了并使用了先进的技术来协助各企业实现这些目标。与ERP相比, 企业内部的挖潜改造是有穷尽的, 而开发客户价值的潜力是无穷的, 因此CRM对企业来说更具有明显的效益作用。
CRM解决方案在功能和技术上有几个关键能力,包括:
1.商业智能和分析能力:
尽管自动化和改善面向客户的商业流程是CRM的主要目标之一,但使CRM解决方案拥有强健的商业智能和分析能力也是同样重要的。CRM应用系统中包括大量有关企业客户和潜在客户的广泛信息。决策者需要利用和分析这些信息,只有这样决策者们才能作出更为明智和及时的商业决策。一个优化的商业智能解决方案应跨越CRM和ERP两种系统,这样,企业才能将成本与赢利的活动直接联系在一起。
2.与客户交流的统一渠道:
将CRM解决方案的各个组件集成起来与将多种渠道组件集成起来具有同样的重要性。客户可以通过Web,通过在笔记本电脑中装着SFA应用软件的销售人员,或是通过呼叫中心与企业交流,但无论通过哪种渠道,客户与企业的交流都必须是无缝的、连贯的,而且是有效率的。
3.对基于Web的功能支持:
Web在企业内部和外部交流及交易方面日益广泛的使用使得Web功能成为CRM解决方案中的关键因素。基于Web的功能对于诸如Web自助服务和自助销售等应用软件是不可或缺的前提条件。Web不仅对于电子商务渠道是不可缺少的,它在基础架构方面也是十分重要的。 CRM应用软件的用户,包括客户和雇员,都要求能随时随地访问企业的应用程序。这种访问应当通过通常不需要太多培训就能轻松使用的标准Web浏览器来实现。此外,对商业流程和数据应采取集中管理的办法,这样便可简化应用软件的布署、维护和升级工作。同样,通过布署基于Web或基于Internet技术的应用软件所节省的相关成本也是相当惊人的。
4.客户信息的集中式管理库:
CRM解决方案应在一个集中式的库中工作,这样,当前的客户信息就可以实时地供所有面对客户的雇员使用。集中式的客户信息库还能保证在不同的业务部门和不同的应用软件功能模块之间的数据的连贯性。 自1997年以来,CRM市场一直处于爆炸式的快速发展中,在今后的几年中这一势头将继续保持下去。原因很简单:面对广泛的全球经济、技术和变化革命,全世界的企业都试图增强其现有客户关系的价值和赢利能力,同时也希望吸引有利可图的新客户。随着企业满怀热忱地接受电子商务,这些CRM背后的驱动力将变得越来越强大。
5.对工作流进行集成的能力:
工作流是指把相关文档和工作规则自动化地(不需人的干预)安排给负责特定业务流程中的特定步骤的人。CRM解决方案应该能具有很强的功能,为跨部门的工作提供支持,使这些工作能动态地、无缝地完成。从本质上能够灵活地对客户需要进行业务流程的重新组合,在管理运作制度上达到对客户需求变化的进行进行灵活反应的调整。
6.与ERP功能的集成:
CRM要与ERP在财务、制造、库存、分销、物流和人力资源等连接起来,从而提供一个闭环的客户互动循环。这种集成不仅包括低水平的数据同步,而且还应包括业务流程的集成,这样才能在各系统间维持业务规则的完整性,工作流才能在系统间流动。这二者的集成还使得企业能在系统间收集商业情报,从而使企业能对由内到外业务运作和发展提供综合分析和预测。
CRM将使企业能够:
● 企业的客户可通过电话、传真、网络等访问企业,进行业务往来。
● 任何与客户打交道的员工都能全面了解客户关系、根据客户需求进行交易。了解如何对客户进行纵向和横向销售,记录自己获得的客户信息。
● 能够对市场活动进行规划、评估,对整个活动进行3600的透视。
● 能够对各种销售活动进行追踪。
● 系统用户可不受地域限制,随时访问企业的业务处理系统,获得客户信息拥有对市场活动、销售活动的分析能力。
● 能够从不同角度提供成本、利润、生产率、风险率等信息,并对客户、产品、职能部门、地理区域等进行多维分析。
如果对客户关系管理系统的作用进行总结的话,可归纳为如下四个方面:
1.提高效率。由于采用了新技术手段,业务处理流程的自动化程度提高了。实现了企业范围内的信息共享,提高了企业员工的工作能力,并有效减少培训需求,使企业内部能够更高效的运转。
2.拓展市场。通过新的业务模式(电话、网络)扩大企业经营活动范围,及时把握新的市场机会,占领更多的市场份额。
3.保留客户。客户可以自己选择喜欢的方式,同企业进行交流,方便的获取信息得到更好的服务。客户的满意度得到提高,可帮助企业保留更多的老客户,并更好的吸引新客户。
4.提高销售和市场活动的成功率。提升销售收入,帮助制定预算,进行市场预测,减少通常的销售和市场成本,有关统计表明实施CRM的前三年内可以平均每年10%的速率减少企业运作成本。
第2章 .NET技术简介
2.1 什么是.NET
2.1.1 概述
.NET 首先是一个开发平台,它定义了一种公用语言子集(Common Language Subset CLS),这是一种为符合其规范的语言与类库之间提供无缝集成的混合语。.NET统一了编程类库,提供了对下一代网络通信标准,可扩展标记语言(Extensible Markup Language,XML)的完全支持使应用程序的开发变得更容易、更简单。Microsoft.NET计划还将实现人机交互方面的革命,微软将在其软件中添加手写和语音识别的功能,让人们能够与计算机进行更好的交流,并在此基础上继续扩展功能。增加对各种用户终端的支持能力。最为重要的.NET 将改变因特网的行为方式:软件将变成为服务。与Microsoft 的其它产品一样,.NET 与Windows 平台紧密集成,并且与其它微软产品相比它更进一步:由于其运行库已经与操作系统融合在了一起,从广义上把它称为一个运行库也不为过。
简而言之.NET 是一种面向网络、支持各种用户终端的开发平台环境。微软的宏伟目标是让Microsoft.NET 彻底改变软件的开发方式、发行方式、使用方式等等。并且不止是针对微软一家,而是面向所有开发商与运营商!.NET 的核心内容之一就是要搭建第三代因特网平台,这个网络平台将解决网站之间的协同合作问题,从而最大限度地获取信息。在 .NET 平台,上不同网站之间通过相关的协定联系在一起,网站之间形成自动交流,协同工作,提供最全面的服务。
2.1.2 Microsoft .NET综述
MicroSoft .NET平台包括用于创建和操作新一代服务的.NET基础结构和工具;可以启用大量客户机的.NET User Experience;用于建立新一代高度分布式的数以百万计的.NET积木式组件服务;以及用于启用新一代智能互联网设备的.NET设备软件。
MicroSoft .NET产品和服务—包括Windows.NET,连同建立积木式服务的核心集成套件;MSNTM .NET;个人订购服务;Office.NET;Visual Studio.NET;以及用于.NET的bCentralTM。
.Net环境中的突破性改进在于:
1.使用统一的Internet标准(如XML)将不同的系统对接;
2.这是Internet上首个大规模的高度分布式应用服务架构;
3.使用了一个名为“联盟”的管理程序,这个程序能全面管理平台中运行的服务程序,并且为它们提供强大的安全保护后台;
2.2 .NET Framework
2.2.1 .NET框架构成
.NET 框架是Microsoft.NET的核心,位于操作系统之上,由许多组件组成,其本质上就是一个运行在Windows之上的系统应用程序。它的组成如图2.2.1所示:
图2.2.1.NET Framework
1).NET 框架最重要的组件就是CLR(Common Language Runtime,公共语言运行时)。
CLR是适用于所有.NET语言的运行时,它用于执行和管理用任何一种对.NET平台的语言编写的所有代码。
CLR类似于Sun公司的Java Virtual Machine(JVM)。在高层,CLR激活对象,执行他们的安全检查,将它们从内存中取出并执行,然后回收。概念上CLR和JVM是相似的,因为它们都是抽象了底层差异的运行时基础组织。然而,JVM目前只支持Java语言,JVM是以字节码执行的,因此技术上它也是可以支持许多不同语言的。CLR支持一般中间语言(CIL)中出现的所有语言。通过.NET编译器得到的是Intermediate Language(IL),而不是机器代码,同Java的字节码不同,IL是不要翻译的,但在代码执行前IL要经过jist-in-time(JIT)编译,并被转化为机器代码,接着被执行。
2)在CLR之上的是框架基类库。此类库同STL,MFC,ATL或Java中的类库相似,它们支持基本的输入输出功能、字符串处理、安全管理、网络通信、线程管理、文本管理、反映功能、收集功能以及其他的功能。这组基础类库包括了从输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口。它使用一种点号分隔的方法,使得查找和使用类库非常容易。
3)框架基类库之上是扩展了基类以支持数据管理和XML管理的类库。数据类支持固定数据管理-存储在后端数据库的数据。这些类包括结构化查询语言类(SQL),让你通过标准SQL接口处理固定数据。在.NET中利用ADO.NET访问数据库,ADO.NET提供了一组用来连接到数据库、运行命令、返回记录集的类库,帮你处理数据。它提供的功能可以读取各种数据源中的数据、减少需要编写的代码量。本文选择.NET进行开发的原因除了.NET开发Web服务的强大功能外,就是ADO.NET能够方便操作数据的功能。它与从前的ADO类似,但有许多发展,提供了新的功能。
ADO.NET的革新主要体现在以下几个方面:
首先,ADO.NET提供了对XML的强大支持,这也是ADO.NET的一个主要设计目标。在ADO.NET中通过XMLReader、XMLWriter、XMLNavigator,XMLDocument等可以方便的创建和使用XML数据,并且支持W3C的XSLT、DTD、XDR等标准。ADO.NET对XML的支持也为XML成为Microsoft.NET中数据交换的统一格式提供了基础。
其次,ADO.NET引入了DataSet的概念,这是一个驻于内存的数据缓冲区,它提供了数据的关系型视图。不管数据来源于一个关系型的数据库,还是来源于一个XML文档,我们都可以用一个统一的编程模型来创建和使用它。它替代了原有的Recordset的对象,提高了程序的交互性和可扩展性,尤其适合分布式的应用场合。
再次,在ADO.NET中,利用DataSet对象和DataProviders可以将数据访问和数据操作分离开来,处理断开连接的数据集。其优点是效率高,可伸缩性好。
另外,ADO.NET中还引入了一些新的对象,例如DataReader可以用来高效率的读取数据,产生一个只读的记录集等等。简而言之,ADO.NET通过一系列新的对象和编程模型,并与XML紧密结合,使得在Microsoft.NET中的数据操作十分方便和高效。
除了SQL和ADO.NET之外,.NET还支持许多类,让你操作XML数据、执行XML查询和转化。
4)三个不同技术(包括Web服务、Web表单和Windows表单)中的类扩展了框架基类及数据和XML类。
I.Web服务包括支持轻便分布组件开发的许多类,它们甚至工作在防火墙和NAT软件的表面。这些组件支持跨计算机空间的即插即用,因为Web服务使用标准的HTTP和SOAP。
II.Web表单包括允许快速开发Web图形用户接口(GUI)应用程序的许多类。在Visual Studio.NET 中开Web应用程序可以象在Visual Basic中开发GUI一样,使用拖放方法开发WebGUI,简单地将控件拖放到Web表单上,双击控件并编写代码响应相关事件。
III.Windows表单提供一套类支持开发本地Windows GUI程序。可以将这些类视为MFC的优化版本,因为它们支持更简单的GUI开发并提供了可以在所有语言中使用的公共的、一致的接口。
2.2.2 NET框架的设计目标
Microsoft.NET框架的主要设计目标包括支持组件、语言集成、跨Internet的互操作、简单的开发和配置、更高的可靠性和安全性等。
1)支持组件
在.NET的世界中,所有的类在二元级上备用,你不必在.NET框架中书写额外的代码来支持组件化,你只要简单地编写一个.NET类,它将成为集合体的一部分,并且支持即插即用。除了提供这样的框架简化了开发之外,.NET还消除了开发COM组件的痛苦。特别,.NET不再使用组件登记,减掉了所有COM组件中对外来代码的要求。
2)语言集成
COM支持语言独立,就是指你可以用任何语言开发COM组件,一旦你的组件满足COM标准中明确说明的规则,它就能够再应用程序中使用。而当它支持二元重用时,它就不支持语言集成。换而言之,你不能重新使用他人编写的组件的代码,你不能扩展COM组件中的类,不能捕获COM组件中代码遗弃的异常等等。
.NET不但支持语言独立,还支持语言集成。这意味着你能够继承类、捕获异常、利用跨越不同语言的多相性。.NET框架通过公共类型系统(CTS)标准来达到这点,所有.NET组件必须支持它。例如,.NET中的所有对象都是根类System. Object衍生出的特别类的对象。CTS支持类、接口、委托、参考类型和值类型的一般概念。.NET基类提供了大多数的基础系统类型,象支持整数、字符串以及文件操作。因为每种语言编辑器都必须满足公共语言标准(CLS)规定的最小规则集并产生符合CTS的代码,因此不同的.NET语言能够相互混合。
3)Internet互操作
.NET框架使用SOAP协议,它是基于被广泛支持的XML和HTTP标准。
4)简单开发
假如你从Windows平台出现就开始开发软件,你应当接触过许多的东西,从Windows API到微软基础类库(MFC)、活动模板库(ATL)、系统COM接口,更别提其他开发环境,象Visual Interdev,Visual Basic等,以及Jscript等其它脚本语言。每当你开始在不同的编辑器中进行开发,就必须学习新的API或类库,因为这些不同库和接口之间没有共同性和一致性。
.NET解决方案提供了一套框架类共每种语言使用,使你不必每次转换新的语言时都要学习新的API。
5)简单配置
首先,.NET很好地避免了“DLL Hell\"。在以往的Windows应用程序开发中,几乎那些有经验的开发者都经历过“DLL Hell”的痛苦和折磨。Microsoft. NET消除了“DLL Hell \"。在.NET环境下,你的执行体将使用建立时的共享DLL。这是经过授权的,因为一个共享DLL必须在类似Windows 2000 cache的全局组合区(GAC)中登记,除此之外,一个共享DLL还必须有唯一的哈希值、公共键、现场和版本号。一旦你满足了这些条件并在GAC中登记了你的共享DLL,它的物理文件名就不再重要了。也就是说,如果你有一个DLL的两个版本都叫MyDl1.dll,它们都可以在系统中存在并执行,而不会引发“DLL Hell”。
6)可靠性
有许多编程语言和平台,但很少能既提供可靠的语言又提供充沛的运行时和基础组织。我们在商业软件工业中所见过最成功的就是Java语言和JVM,它们是软件开发团体较为认同的。.NET将成为下一个重要事物。.NET要求类型安全,同C++不同,.NET中的每个类都是从母类中衍生出的,对象支持运行时、类型证明特性、容量倾销特性等。CLR在装载和执行前必须对类型进行识别和验证。这减少了根本编程错误机会并防止了缓冲溢出。
传统的编程语言不提供一般错误处理机制。.NET支持CLR中的异常,提供了一个一致的错误处理机制,出现了另一种方法:异常跨越所有.NET兼容语言进行工作。
当你用C++编程时,你必须重新分配所有以前进行过分配的对象。假如你不这样做,那么分配到系统上的资源即使不再使用也不会回收。假如是服务器应用程序,这将是不健壮的,因为内存不断积存的未使用资源将最终破坏系统。同Java类似,.NET运行时库跟踪并回收所有不再被使用的已分配对象。
7)安全性
在DOS下开发应用程序的岁月中,开发者很少考虑到安全的问题,因为他们的应用程序是在单机上单线程运行的。一旦他们开始开发客户机/服务器程序时,事情就有些复杂了:多用户连接到服务器而敏感数据可能在客户机和服务器之间交换。在Web环境下,情况进一步恶化:在你的机器上你可能不知不觉中下载和执行了恶意的程序。
.NET提供了许多安全特性来减轻这些问题。Windows NT和2000提供了访问控制列和安全验证来保护资源,.NET进一步保护可执行代码的访问。例如,利用声明的安全检查,你可以不必写任何代码就为你的方法执行前缀安全属性;如果要强制安全检查,你可以在方法中编写代码明确引发安全检查。.NET还提供了许多其他的安全功能使得别人难于渗入你的应用程序和系统。
2.2.3 .NET Framework的优点
.NET Framework能缩短产品开发时间,简化发布和管理,提高运行效率。以下是它的一些主要的优点:
1)可以使用任何编程语言:NET Framework允许开发者以任何语言进行开发,使不同语一言开发的程序结合得更紧密,并使现有的开发技巧得以继续使用;
2)减少了编写代码量:.NET Framework使用了高度模块化的设计,使得开发人员可以将精力更多地集中到处理商务逻辑方面,而不必再把时间花费在写IDL和Register代码上;
3)以XML/SOAI)为核心:NET Framework的目标是将软件转化为服务,因此基于XML和SOAP系列的集成标准。您只需简单地注出所需的方法调,.NET Framework就能将它们转化为完整的XML Web服务;
4)提高了应用程序的可靠性:NET Framework引入了新的技术使程序运行得更可靠,比如以.NET Framework来管理内存、线程及进程,确保内存泄漏将不再发生;
5)性能更加优化:NET Framework优化了传统的Web程序。
2.3 C#语言简介
C#在带来对应用程序的快速开发能力的同时并没有牺牲C 与C++程序员所关心的各种特性它忠实地继承了C 和C++的优点。C#是专门为.NET 应用而开发出的语言这从根本上保证了C#与.NET 框架的完美结合。在.NET 运行库的支持下.NET 框架的各种优点在C#中表现得淋漓尽致。C#的一些突出的特点:
1.简洁的语法
语法中的冗余是C++中的常见的问题比如“const”和“#define”,各种各样的字符类型等等。C#对此进行了简化只保留了常见的形式而别的冗余形式从它的语法结构中被清除了出去。
2.精细的面向对象的设计
在C#的类型系统中每种类型都可以看作一个对象,C#提供了一个叫做装箱boxing 与拆箱unboxing 的机制来完成这种操作,而不给使用者带来麻烦这在以后的章节中将进行更为详细的介绍。
C#只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱。C#中没有了全局函数没有了全局变量,也没有了全局常数,一切的一切都必须封装在一个类之中你的代码。将具有更好的可读性,并且减少了发生命名冲突的可能。
3.与Web的紧密结合
.NET 中新的应用程序开发模型,意味着越来越多的解决方案需要与Web 标准相统一。例如超文本标记语言Hypertext Markup Language HTML 和XML。 由于历史的原因现存的一些开发工具不能与Web 紧密地结合。SOAP 的使用使得C#克服了这一缺陷大规模深层次的分布式开发从此成为可能。
4.完全的安全性和错误处理
语言的安全性与错误处理能力是衡量一种语言是否优秀的重要依据。任何人都会犯错误,即使是最熟练的程序员也不例外忘记变量的初始化,对不属于自己管理范围的内存空间进行修改。这些错误常常产生难以预见的后果,一旦这样的软件被投入使用,寻找与改正这些简单错误的代价将会是让人无法承受的。C#的先进设计思想可以消除软件开发中的许多常见错误,并提供了包括类型安全在内的完整的安全性,能为了减少开发中的错误C#会帮助开发者通过更少的代码完成相同的功能。这不但减轻了编程人员的工作量,同时更有效地避免了错误发生。
第3章 Web服务及Portal介绍
3.1 Web服务概述
3.1.1 Web服务的概念
W3C Web Services Architecture小组达成一致意见的Web服务的暂行定义如下所示:
Web服务是由URI (Uniform Resource Identifier,统一资源标识符)标识的软件应用程序,其接口和绑定可以通过XML构件进行定义、描述和发现,Web服务支持通过基于因特网的协议使用基于XML的消息与其他软件应用程序直接交互。
简单来说,Web服务是松散藕合的、可重用的软件模块,从语义上看,它封装了离散的功能,在Internet上发布后能通过标准的Internet协议在程序中访问。
首先,Web服务是可重用的软件模块,Web服务是对软件开发中面向对象设计的发展和升华。基于组件的模型允许开发者复用他人创建的代码模块,组成或扩展它们,形成新的软件。
其次,这些软件模块是松散耦合的。传统的应用软件设计模式要求各个单元之间紧密连接,这种连接形成的复杂性要求开发者必须对连接的两端元素有完全的了解和控制能力。而且,这种连接一旦建立后,很难从中把一个元素抽出,用另外一个元素代替。相反,松散耦合的系统,只需要很简单的协调,并允许更加自由的配置。
第三,从语义上看,Web服务封装了离散的功能。一个Web服务就是一个自包含的“小程序”,完成单个的任务。Web服务的模块使用其他软件可以理解的方式描述输入和输出,其他软件知道它能做什么,如何调用它的功能以及返回什么样的结果。
第四,Web服务可以在程序中访问。和Web网站或桌面程序不同,Web服务不是为直接与人类交互设计的,它们不需要有图形化的用户界面。Web服务是在代码级工作的,它们被其他软件调用,并与其他软件交换数据。不过Web服务最终的目的还是形成一个能够与用户交互的应用软件。
最后,Web服务是在Internet上发布的。Web服务使用现有的并广泛使用的传输协议,比如HTTP。使用与传输Web内容相同的并广泛使用的协议,不需要调整现有的Internet架构,Web服务就可以通过防火墙进行通信。
由于Web服务是一种部署在Web上的对象(Web Object),因此具有对象技术所承诺的所有优点;同时,Web服务的基石是以XML为主的,开放的Web规范技术,因此具有比任何的对象更好的开放性。
3.1.2 Web服务的类别
综合当今Web应用以及Web服务的特点,可根据Web服务实施的领域分为以下四类:
○面向商务的Web服务(Business-Oriented Web Service):该类服务针对的是那些面向企业的应用服务,包括企业内部的ERP系统、企业间的SCR/CRM等系统。当这些系统以Web服务的形式在网络中出现时,企业内的应用集成将更为容易,而在企业间的众多合作伙伴的系统对接也将不再是无法完成的任务。目前,现有的解决方案和产品提供商有Bowstreet, Epicentric等。
○面向消费者的Web服务(Consumer-Oriented Web Service):此类服务针对的是那些原先的B2C网站的改造,为这些Browser-Oriented的Web应用增加Web服务的应用界面,使得第三方的桌面工具或其自身提供的增值的桌面工具能够利用更优秀的用户界面提供跨越多个B2C服务的桌面服务。这将使得用户使用Inter- net更为方便,能够获得更加便捷的服务。比如我们完全可以在个人理财桌面系统中集成Internet上的股票价格查询Web服务、机票预定Web服务等,使得个人理财应用的自动化程度更高。
○面向设备的Web服务(Device-Oriented Web Service):此类服务的使用终端一般是手持设备和日用家电,对于前者而一言,可以在不用修改网络服务的体系架构的前提下,令先前的网络服务支持除PC以外的各种终端,比如Palm、PocketPC、手机等。这样,那些天气预报服务、E-mail服务、主动信息服务等将更为有效和便捷;而后者对于日用家电,则可能是一个市场的启动期,有了Web服务作为基础框架,智能型的日用家电将真正获得标准的支持,从而有了广泛使用的可能。
○面向系统的Web服务(System-Oriented Web Service):一些传统意义上的系统服务,比如用户权限认证、系统监控等,如果被迁移到全球范围的Internet上,起作用范围将从单个系统或局部网络扩展到整个Internet。这样,基于同一系统服务的不同应用将得以在整个Internet环境中部署,譬如跨国企业的所有在线服务可以使用同一个用户权限认证Web服务等。
3.2 Web服务的体系架构和实现模型
Web服务的实现模型是:服务的提供者拥有一个可以通过网络访问的软件模块(Web服务的实现),它为这个Web服务定义服务说明,并把它发布给服务的请求者或服务的注册处。服务的请求者使用查找操作从本地或服务的注册处得到服务说明,并使用服务说明中的信息与服务的提供者实现绑定,然后与Web服务交互,调用其中的操作。这种实现模式可以从图3.1中看出:
图3.1 Web服务的体系架构
在Web服务体系中,所有的应用实体都被抽象成服务。其中包括三种角色、三种操作和两种构件。
1、服务体系架构中的三种角色是:
1)服务的提供者:从商业的涌度看,这是服务的拥有者;从Web服务的架构看,这是拥有服务的平台。
2)服务的请求者:从商业的角度看,这是需要某种功能的商业机构;从Web服务的架构看,这是查找、调用服务的应用程序。服务请求可以使用浏览器完成,也可以是没有用户界面的应用程序发出。
3)服务的注册处:这是可搜索的服务描述注册中心,服务的提供者向这里发布他们的服务说明,而服务的请求者在这里找到服务,并得到与服务绑定的信息,在开发时刻实现静态绑定或在运行时刻实现动态绑定。对于静态绑定的服务请求者,服务注册处是体系结构中的可选角色,因为服务提供者可以把描述直接发送给服务请求者。同样,服务请求者可以从服务注册处以外的其它来源得到服务描述,例如本地文件、FTP站点、Web站点、广告或发现Web服务(Discovery of Web Services,DISCO)。
2.Web服务体系架构中的三种操作是:
1)发布:服务提供者需要首先将服务进行一定描述并发布到注册服务器上,服务的请求者才能够找到它。在发布操作中,服务提供者需要通过注册服务器的身份验证,才能对服务描述信息进行发布和修改。到底把服务说明发布到哪里,或者以什么方式发布,这是由应用程序的具体要求决定的。
2)查找:在查找中,服务的请求者可能会直接得到服务说明,也可能会向服务的注册处查询服务说明的位置。对于服务请求者,可能会在两个不同的生命周期阶段中牵涉到查找操作:在设计时为了程序开发而检索服务的接口描述,而在运行时为了调用而检索服务的绑定和位置描述。在查找操作中,一般包含两种查找模式:一种是浏览模式(Browse Pattern),即服务请求方可以根据通用的分类标准来浏览或者通过一些关键字来搜索,并逐步缩小查找的范围,直到找到满足需要的服务,查找结果是一系列服务的集合;另一种是直接获取模式(Drill down Pattern),即通过唯一的关键字直接得到特定服务的描述信息,其查找结果是唯一的。
3)绑定:在绑定操作中,服务的请求者在运行时一刻使用服务说明中的绑定信息,包括服务的访问路径、服务调用的参数、返回结果、传输协议、安全要求等来定位、连接和调用服务,启动与服务的交互,调用服务的方法。
3.Web服务体系架构中的两种构件是:
1)服务:Web服务是由服务说明定义的接口,而这个接口的实现就是服务本身。服务是服务提供者在网络上发布可供不同平台使用的软件模块。服务的请求者可以调用它,或者与之交互。服务本身也可以是请求者,在它的实现过程中使用其他的Web服务。
2)服务说明:包含服务接口和实现的详细细节,包括数据类型、操作、绑定信息和网络位置等。也可能包括分类和其他元数据信息,这些信息通常是为了协助服务请求者发现和使用服务。服务的提供者可以把服务说明直接发送给服务的请求者,也可以发送到服务的注册处。
3.3 Web服务的技术要素
Web服务充分利用了现有的网络技术、标准或协议,并在必要的时候增加了一些新的技术或标准,用于接口定义、方法调用、基于Internet的构件注册以及各种应用的实现。构筑Web服务的Web服务技术家族的主要成员有XML、SOAP、WSDL和UDDI。 XML是Web服务体系的基础;SOAP使用XML作为其数据编码格式;WSDL使用XML来描述Web服务的结构;而UDDI使用XML定义注册表的结构,使用SOAP指定与注册表的通信。SOAP为在不同系统之间实施平台无关的交互定义了一套基本的元规则,是Web服务体系中服务交互的基础架构。
WSDL是描述Web服务界面的基本工具,依靠WSDL, Web服务的交互界面就能被系统自动处理。UDDI则是在动态服务集成解决方案中的首次尝试。支持Web服务的主要技术如图3.2所示:
图3.2Web服务的技术要素
3.3.1 XML--Web服务的基石
XML即Extensible Markup Language(可扩展的标记语言)。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标记。它也是元标记语言,即定义了用于其他与特定领域有关的、语义的、结构化的标记语言的句法语言。
可扩展标一记语言XML作为一种新的Internet上的数据交换标准,其开始设计时的主要目的是用来弥补HTML作为网络标准语言的不足。1996年,W3C开始设计一种可扩展的标记语言,使其能够将SGML的强大功能与已经被广泛使用的HTML结合。这就是后来称为XML的语言,它不但简化了计算机对文档和数据交换的处理,也简化数据的传输,同时保持了对现有的面向SGML的系统的向下兼容性。1997年,Microsoft公司第一个运用XML技术定义CDF (Channel Definition Format), XML经历了从理论到应用的发展和自我完善的过程。1998年2月XML被W3C承认为国际标准,成为世界通用的标记语言,并确定了版本号为1.0。
无论是HTML还是XML,都是从SGML演化而来的。SGML是完备的,但是它过于复杂繁琐的定义使它不可能被运用在Internet上。XML作为SGML的最小完备子集,继承了SGML的强大功能而剥除了繁琐的定义。HTML是一种静态的页面表现机制,只涉及了简单页面文档及其相关媒体数据在Internet上的存储和传输;而XML则是一种自描述的数据共享机制。其主要特点如下:
□自描述性:这个特性使差异性可以存在,不同的应用程序可以在没有人为干涉的情况下,理解数据的定义,进行分析处理。
□可扩展性:XML允许程序员制定自己的标记集,满足自己的需要。同样,一个行业或某一特定人群也可以制定自己范围内的通用标记集。这样,XML可以轻松地适应每一个领域而无需对语言本身做大修改。
□分层结构:这样保证了信息的层次性。比如,一个商品可以有品名、商品代码和价格,价格又可以有进价和售价等。
□内容与形式分离:XML把数据内容与它们的表现形式分开了,这样当想修改数据的表现形式时,只需要修改用于数据表现的样式单就可以了。 同时,对于XML文档而言,标记是包含信息的,比如关键字、继承关系等,这些信息对于数据的检索、描述起着巨大的简化作用。
□多样的样式表支持:在XML中既可以通过样式表来格式化数据的表现,也可以定义自己的个人样式表来显示各种不同的数据。
XML的作用范围从早先的Web信息描述,发展到后来数据交换的开放标准,乃至日前的服务集成和服务交互的开放技术,己成为开放环境下描述数据信息的标准技术。它在Web服务中是数据的格式,无论是Web服务的调用(SOAP技术)、Web服务界面的描述(WSDL技术)还是Web服务的发现(UDDI技术),都是使用XML作为信息描述和交换的标准手段。
XMI二具有良好的结构性、强大的描述性,在因特网上可靠的传输特性,并且简洁、方便,是Web服务强大的后端驱动。Web服务正是XML创立的初衷,也是XML深度发展的必然结果。
首先,XML不像超文本标记语言HTML或是其他格式化的程序语言,只能使用规定的标一记。使用XML,用户可以定义自己需要的标一记。用户创建的标记可以使用文档定义类型DTD (Document Type Definition)来定义,但如果需要精确地描述数据的类型信息,并便于计算机程序处理XML,就应该使用XSD (XML Schema Definition)来定义XML标记。
其次,XML二标记描述的是文档的结构和意义,也就是数据的实际内容。它不描述如何格式化并显示这些数据。显示数据的任务需要其他语言来描述,比如级联样式单(Cascading Style Sheet)或可扩展样式语言(Extensible Style Language)。
以下是一个用XML描述人员的实例:
<person>
<name>李小明</name>
<gender>男</gender>
<birthday>1987-4-12</birthday>
<address>
<country>中国</country>
<city>北京</city>
<street>定福庄</street>
</address>
<telephone>010一65454728<tlephone>
<email>xiaoming@yahoo.com</email>
</person>
XML Schema的主要目的是用来定义一类XML文档。它作为新的XML描述方法,完善了DTD的不足,适用于XML的编辑器和解析器,对于文档的结构、数据的属性、类型的描述是全面的,具有开放和可扩充的特性。
W3C在2001年5月公布了XML Schema的最终推荐标准。包括两部分,第一部分Structures使用XSD定义了XML的数据类型和数据标准;第二部分DataTypes则详细说明了Schema的数据类型定义。
3.3.2 SOAP--Web服务的调用
Internet使用TCP/IP协议将成万上亿台不同的计算机连接了起来,同时出现了许多应用级协议。HTTP就是专门用于Web浏览器和Web服务器之间通信的应用级协议,虽然它在Internet应用领域己经取得了绝对的领导地位,但它只能使用相当简单的命令(比如Get, POST和PUT)请求和发送数据,因此计算机连接成的Internet主要还是使用Web浏览数据,而不能在应用程序间自由地交换数据。Internet应用程序的这种情况推动了SOAP的诞生。
SOAP(Simple Object Access Protocol)是Web服务交换XML消息的标准协议,实际上是一个遵循HTTP的远程过程调用(RPC )协议,最终目的是在应用程序之间实现通信。
首先,SOAP建立在HTTP之上意味着SOAP消息可以作为HTTP请求或响应的一部分传递,任何允许HTTP通信的网络都可以通过SOAP消息。由于HTTP就象Web浏览器一样,已经遍及到各种计算机平台和设备,并且能够通过代理和防火墙,所以,建立在HTTP上的SOAP可以让所有连接到Internet的应用程序实现通信。
其次,SOAP使用XML作为数据格式,几乎所有的计算机平台都能处理,即使不能,也可以方便地建立XML解析器支持它。使得SOAP可以在千差万别的系统和平台间交换数据。
使用HTTP和XML, SOAP可以基于现有的Internet基本结构,让运行在不同平台上的应用程序实现程序级的通信。SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化和类型化的信息提供了一个简单且轻量级的机制。其实SOAP本身并不定义任何应用语义,如编程模型或特定语义实现,它只是定义了一种简单的机制,通过一个模块化的包装模型和对模型中特定格式编码的数据的重编码机制来表示应用语义。
SOAP的主要设计目标是简明性和可扩展性。简明性主要表现在整个SOAP规范定义的消息结构非常简单(一个envelope包含了两个组成部分:header和body),除了这个基本消息结构外,SOAP没有定义额外的表述结构标准,没有定义自己的编码格式,也没有定义自己的传输协议。可扩展性则主要表现在SOAP可以使用任意的模式定义方式来定义内部传输内容的结构,可以与任意的网络传输协议联合使用完成传输。
在实际应用中,SOAP主要用来进行远程方法调用。这个时候,发送者会把方法的参数值从本地二进制格式转换到XML文档中,然后把这个文档发送给远程服务器。而在远程服务器端,会有对应的SOAP处理器解析XML文档,取出方法的参数信息,恢复成它的二进制状态,然后调用本地方法。
每个SOAP消息都是一个XML文档,无论是传递数据还是执行远程方法调用,SOAP消息都必须有一个统一的格式,也就是说SOAP消息必须有一个稳定而统一的结构,如图3.3:
图3.3 SOAP消息的结构
(1)SOAP<Envelope>
它是整个SOAP消息的根元素,也是每个SOAP消息中必须有的元素,用来封装一个SOAP消息。其他两个元素都在这个元素内部。
(2)SOAP<Header>
它是SOAP中的可选元素,但如果有,必须是<Envelope>的第一个直接子元素。<Header>元素中包括多个头条目子元素,用来传递辅助性的附加消息,比如身份验证、事务ID、会话ID和支付信息等。因此<Header>元素的作用之一就是扩展SOAP消息传递的内容,这些内容通常有助于消息的接受者正确地处理消息的内容。
(3)SOAP<Body>
SOAP的<Body>元素为把消息传递到消息的最终接受者提供了一个简单的机制。在Web服务中,<Body>元素的典型应用是执行远程方法调用和报告错误。<Body>元素是每个SOAP消息中都必须有的元素。而一个<Body)元素可以由很多的体条目元素构成,每个体条目都被编码成<Body>元素中的独立子元素。在该元素中还可以使用<Fault>元素,当出现错误时使用。
如果使用SOAP来传递普通的消息,就可以在<Body>中随意放置消息的内容,但如果使用SOAP来进行远程方法调用,就必须遵循SOAP所规定的串行化编码规则。
3.3.3 WSDL--描述Web服务
自最初引入SOAP后,曾出现过多种基于XML的接口说明语言(IDL),其中包括IBM的NASSL(Network Accessible Service Specification Language,可访问的网络服务规范语言)、Microsoft的SDL(Service Description Language,服务描述语一言)和SCL (SOAP Contract Language, SOAP协约语言)等。所有的这些1DL识别不同的描述服务方式,并且包含一些针对它们所依附的SOAP实现方案的项目的特性。于是人们意识到必须进行标准化,以赋予Web服务统一的界面描述能力,并获得最好的互操作能力。这样,在IBM, Microsoft和Ariba的共同努力下,WSDL诞生了,并且其规范1. 1版于2001年3月被W3接受为W3C Notes,标志着WSDL由业界标准向国际标准的变迁迈出了第一步。
WSDL(Web Service Description Language)是一种用于描述Web服务的规范,使用XML语法定义了用于描述Web服务各个方面的元素,这些方面包括Web服务所在的位置、它支持的传输协议、其中包含的接口、接口中的方法以及方法的参数类型等。
WSDL与SOAP和UDDI一起工作,支持Web服务与Internet上的其他Web服务、应用程序和设备的交互作用。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上,以最终定义具体部署的服务访问点。
使用WSDL规范描述某个Web服务的文本将是这个Web服务的服务说明,称为该Web服务的WSDL文档。程序可以读懂这个WSDL文档,并解析出其中的信息。WSDL文档是对一个Web服务位置、协议和接口的详细且明确的说明。它由Web服务的开发者提供,而如今有许多Web服务开发工具,譬如.NET己经可以根据代码自动生成WSDL文档。
Web服务的使用者得到WSDL文档后,通常有两种利用方式:一是在设计时刻,开发者根据WSDL文档生成调用Web服务的客户端代码。在编写客户应用程序的过程中,开发者直接使用Web服务代理类,就象本地类一样,而实际的Web服务调用发生在代理类与Web服务之间;另一种是在运行时刻,客户应用程序通过它所在的运行环境发出对Web服务的调用(比如使用Microsoft SOAP Toolkit中的客户端模块),运行环境根据WSDL文档生成正确的Web服务调用请求,并接受Web服务返回的结果,然后把结果传递给客户应用程序。
3.3.4 UDDI--Web服务的注册和发布
Web服务主要通过Internet使用,而在Internet上有众多的商业实体,也有众多的Web服务。对于Web服务的提供者来说,它希望所有需要它这种服务的潜在客户能够知道并能够使用这种服务。而对于Web服务的使用者来说,它希望能够发现所需的Web服务,并能知道如何使用它。针对这种需要,一个由技术领域和商业领域的领导者组成的开发小组开发了UDD1标准。
UDDI(Universal Description, Discovery and Integration,统一描述、发现与集成)是Web服务登记、查找和调用的组合。它是Ariba、IBM和微软公司共同制订的基于分布式Web服务信息注册的规范,也是一套执行规范的实施办法,其目的是让Web服务的提供者注册他们的Web服务信息,以便Internet上的其他用户能够方便地找到这些信息。这是一个彻底的新计划,意图建立一个全球化的、与平台无关的、开放式的架构,使企业能:
(1)发现彼此;
(2)定义如何通过Internet交互;
(3)使用一个全球性的商业注册中心,以共享信息,并加速全球B2B的电子商务应用。
UDDI商业注册中心是UDDI注册服务的站点的通称,是UDDI标准的具体实现,够使所有的企业在电子商务的活动中利用它而获得利益。它又分为公共UDDI注册中心和私有UDDI注册中心。公共UDDl注册中心是面向全球使用的UDDl注册服务,是一个逻辑上的统一体,在物理上是以分布式系统的架构实施的,不同站点之间采用P2P架构实施,因此访问其中任意一个站点就基本等于访问了UDDI注册中心。而私有UDDI注册中心是独立组织、企业或某一范围内使用的UDDI注册服务,其用户对象不是全球用户。
UDDI的核心部件是UDDI商务注册,即一种描述商务实体及其Web服务所使用的XML文件。UDDI商务注册所提供的信息包含三个部分:“白页”,它包含地址、联系方式和尽人皆知的标志;“黄页”,它包括基于标准分类法的行业分类;“绿页”,它提供商家披露的有关服务的技术信息。“绿页”包括提供Web服务的规范参考以及对各种文件和基于发现机制的URL提供指示标志。
UDDI规范发布了对基于Web的UDDI商业注册中心可以实施的整套共享操作。一般来说,程序和程序员通过UDDI商业注册中心来获得Web服务的位置及其技术信息。其中对于程序员来说,是对自己的系统实现进行准备,以使自己的系统能和那些Web服务实现访问兼容,或是描述自己的Web服务从而能让别人使用。从商业层次上来说,UDDI商业注册中心可以被用来查对某个商务伙伴是否具备特定的Web服务接口,从而查到在某个行业中采用特定服务形式的公司,并找到商务伙伴或预定商务伙伴披露Web服务的信息,以便了解与那种服务发生联系所需的技术细节。
3.4 Web服务的实现
3.4.1 SQL Server Reporting Services
Reporting Services 简介
Microsoft 对一个信息系统来说,应用比开发更重要。如果楼主能在论文中花三分之一的篇幅来描述CRM的应用,则是一篇相当优秀的论文了。 一针见血阿
页:
[1]