基于NHibernate的CRMWord文档格式.docx
- 文档编号:21671112
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:55
- 大小:275.90KB
基于NHibernate的CRMWord文档格式.docx
《基于NHibernate的CRMWord文档格式.docx》由会员分享,可在线阅读,更多相关《基于NHibernate的CRMWord文档格式.docx(55页珍藏版)》请在冰豆网上搜索。
客户是企业的生命源泉。
所以对客户的信息公司要尽可能掌握到越详细越好。
对公司的业务发展有着巨大的作用。
在客户信息管理系统的开发过程中,采用了面向对象技术和三层架构的模式来进行系统的分析与设计。
三层架构(3-tierapplication)通常意义上的三层架构就是将整个业务应用划分为:
表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
区分层次的目的即为了“高内聚,低耦合”的思想。
本系统运用了NHibernate技术,使系统在编码的过程中减少了很多工作量,提高开发速度。
系统在数据库方面使用视图、存储过程来提高系统的性能。
▪1.2研究意义
本论文的主要工作分为三个阶段:
第一阶段:
阅读参考文献和书籍,深入理解和掌握三层架构及NHibernate技术,并学习使用对象、接口、抽象。
第二阶段:
对项目进行分析,进行需求分析建模、系统分析建模、系统设计建模,数据库建模,并参与项目的部分功能模块的开发。
第三阶段:
整理相关资料,撰写论文。
第二章CRM
▪2.1CRM简介
CRM(CustomerRelationshipManagement),即客户关系管理。
这个概念最初由GartnerGroup提出来,而在最近开始在企业电子商务中流行。
CRM的主要含义就是通过对客户详细资料的深入分析,来提高客户满意程度,从而提高企业的竞争力的一种手段。
企业用CRM来管理与客户之间的关系。
CRM是选择和管理有价值客户及其关系的一种商业策略,CRM要求以客户为中心的商业哲学和企业文化来支持有效的市场营销、销售与服务流程。
如果企业拥有正确的领导、策略和企业文化,CRM应用将为企业实现有效的客户关系管理。
CRM是一个获取、保持和增加可获利客户的方法和过程。
CRM既是一种崭新的、国际领先的、以客户为中心的企业管理理论、商业理念和商业运作模式,也是一种以信息技术为手段、有效提高企业收益、客户满意度、雇员生产力的具体软件和实现方法。
通过了解哲学、文学和美学领域较早提出的“以接受者为中心”思想,有助于您进一步理解经济学“以客户为中心”的概念。
惠子讲:
“子非鱼,安知鱼之乐”——你不是鱼,你怎么知道鱼快乐不快乐。
如果能够准确把握住接受者的体验,这个人不成为大富豪,也会成为大思想家。
接受美学是汉斯.罗伯特.姚斯(HansRobertJauss)于1967年创立的——以往的文学和美学研究、创作,都是以作者/艺术家为中心,姚斯则主张根本性地、颠覆地转向以读者/接受者为中心,因此称作接受美学。
它相当于经济学“以产品/厂商为中心”向“以客户为中心”的转变,姚斯的“读者/接受者中心论”体验理论比托夫勒预言的体验经济早了三年,比菲利普.科特勒完善的“4C”理论早了更多年——“4C”是后来CRM客户关系管理出台并走向成熟的理论源泉之一。
CRM最大程度地改善、提高了整个客户关系生命周期的绩效。
CRM整合了客户、公司、员工等资源,对资源有效地、结构化地进行分配和重组,便于在整个客户关系生命周期内及时了解、使用有关资源和知识;
简化、优化了各项业务流程,使得公司和员工在销售、服务、市场营销活动中,能够把注意力集中到改善客户关系、提升绩效的重要方面与核心业务上,提高员工对客户的快速反应和反馈能力;
也为客户带来了便利,客户能够根据需求迅速获得个性化的产品、方案和服务。
▪2.2CRM体系结构
客户概况分析(Profiling)包括客户的层次、风险、爱好、习惯等;
客户忠诚度分析(Persistency)指客户对某个产品或商业机构的忠实程度、持久性、变动情况等;
客户利润分析(Profitability)指不同客户所消费的产品的边缘利润、总利润额、净利润等;
客户性能分析(Performance)指不同客户所消费的产品按种类、渠道、销售地点等指标划分的销售额;
CRM功能
客户未来分析(Prospecting)包括客户数量、类别等情况的未来发展趋势、争取客户的手段等;
客户产品分析(Product)包括产品设计、关联性、供应链等;
客户促销分析(Promotion)包括广告、宣传等促销活动的管理。
它不仅仅是一个软件,它是方法论、软件和IT能力综合,是商业策略。
在不同场合下,CRM可能是一个管理学术语,可能是一个软件系统,而通常我们所指的CRM,是指用计算机自动化分析销售、市场营销、客户服务以及应用支持等流程的软件系统。
它的目标是缩减销售周期和销售成本、增加收入、寻找扩展业务所需的新的市场和渠道以及提高客户的价值、满意度、赢利性和忠实度。
CRM项目的实施可以分为3步,即应用业务集成,业务数据分析和决策执行。
①应用业务集成。
将独立的市场管理,销售管理与售后服务进行集成,提供统一的运作平台。
将多渠道来源的数据进行整合,实现业务数据的集成与共享。
这一环节的实现,使系统使用者可以在系统内得到各类数据的忠实记录,代表目前真实发生的业务状况。
②业务数据分析。
对CRM系统中的数据进行加工、处理与分析将使企业受益匪浅。
对数据的分析可以采用OLAP的方式进行,生成各类报告;
也可以采用业务数据仓库(BusinessInformationWarehouse)的处理手段,对数据做进一步的加工与数据挖掘,分析各数据指标间的关联关系,建立关联性的数据模型用于模拟和预测。
这一步所取得的结果将是非常重要的,它不单反映业务目前状况同时也对未来业务计划的调整起到指导作用。
③决策执行。
依据数据分析所提供的可预见性的分析报告,企业可以将在业务过程中所学到的知识加以总结利用,对业务过程和业务计划等做出调整。
通过调整达到增强与客户之间的联系,使业务运作更适应市场要求的目的。
在传统企业引入电子商务后,企业关注的重点由提高内部效率向尊重外部客户转移。
而CRM理念正是基于对客户的尊重,要求企业完整地认识整个客户生命周期,提供与客户沟通的统一平台,提高员工与客户接触的效率和客户反馈率。
一个成功的客户关系管理系统至少应包括如下功能:
通过电话、传真、网络、移动通讯工具、电子邮件等多种渠道与客户保持沟通;
使企业员工全面了解客户关系,根据客户需求进行交易,记录获得的客户信息,在企业内部做到客户信息共享;
对市场计划进行整体规划和评估;
对各种销售活动进行跟踪;
通过大量积累的动态资料,对市场和销售进行全面分析。
实施CRM时候要注意一点,就是要设置好收集信息的机制,要收集有用的客户资料和信息,对于无用的信息则要丢弃。
第三章NHibernate
▪3.1NHibernate简介
NHibernate是一个面向.NET环境的对象/关系数据库映射工具。
对象/关系数据库映射(object/relationalmapping(ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。
NHibernate不仅仅管理.NET类到数据库表的映射(包括.NET数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和ADO.NET处理数据的时间。
NHibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。
对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,NHibernate可能不是最好的解决方案;
对于那些在基于.NET的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,NHibernate是最有用的。
不管怎样,NHibernate一定可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。
▪3.2NHbernate体系结构
▪3.2.1概况(Overview)
一个非常简要的NHibernate体系结构的概要图:
图3-1
从这个图可以看出,NHibernate使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象)。
我们来更详细地看一下NHibernate运行时体系结构。
由于NHibernate非常灵活,且支持多种应用方案,所以我们这只描述一下两种极端的情况。
“轻型”的体系结构方案,要求应用程序提供自己的ADO.NET连接并管理自己的事务。
这种方案使用了NHibernateAPI的最小子集:
图3-2
“全面解决”的体系结构方案,将应用层从底层的ADO.NETAPI中抽象出来,而让NHibernate来处理这些细节。
图3-3
图中各个对象的定义如下:
ISessionFactory(NHibernate.ISessionFactory)
针对单个数据库映射关系经过编译后的内存镜像,是线程安全的(不可变)。
它是生成ISession的工厂,本身要用到IConnectionProvider。
该对象可以在进程或集群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存。
ISession(NHibernate.ISession)
表示应用程序与持久储存层之间交互操作的一个单线程对象,此对象生存期很短。
其隐藏了ADO.NET连接,也是ITransaction的工厂。
其会持有一个针对持久化对象的必选(第一级)缓存,在遍历对象图或者根据持久化标识查找对象时会用到。
持久的对象及其集合(PersistentObjectsandCollections)
带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。
这些对象可能是普通的POCOs,唯一特殊的是他们正与(仅仅一个)ISession相关联。
一旦这个ISession被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。
(例如,用作跟表示层打交道的数据传输对象。
)
瞬态(transient)和脱管(detached)的对象及其集合
那些目前没有与ISession关联的持久化类实例。
他们可能是在被应用程序实例化后,尚未进行持久化的对象。
也可能是因为实例化他们的ISession已经被关闭而脱离持久化的对象。
ITransaction(NHibernate.ITransaction)
(可选的)应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。
它通过抽象将应用从底层具体的ADO.NET事务隔离开。
某些情况下,一个ISession之内可能包含多个ITransaction对象。
IConnectionProvider(NHibernate.Connection.IConnectionProvider)
(可选的)生成ADO.NET连接以及Command对象的工厂。
它通过抽象将应用从底层的IDbConnection或IDbCommand隔离开。
仅供开发者扩展/实现用,并不暴露给应用程序使用。
IDriver(NHibernate.Driver.IDriver)
(可选的)一个封装了不同ADO.NETproviders之间的差异(利用参数命名转换等ADO.NET支持的特性)的接口。
ITransactionFactory(NHibernate.Transaction.ITransactionFactory)
(可选的)生成ITransaction对象实例的工厂。
在特定“轻型”的体系结构中,应用程序可能绕过ITransaction/ITransactionFactory以及IConnectionProvider等API直接跟ADO.NET打交道。
▪3.2.2实例状态
一个持久化类的实例可能处于三种不同状态中的某一种。
这三种状态的定义则与所谓的持久化上下文(persistencecontext)有关。
NHibernate的ISession对象就是这个所谓的持久化上下文:
瞬态(transient)
该实例从未与任何持久化上下文关联过。
它没有持久化标识(相当于主键值)。
持久化(persistent)
实例目前与某个持久化上下文有关联。
它拥有持久化标识(相当于主键值),并且可能在数据库中有一个对应的行。
对于某一个特定的持久化上下文,NHibernate保证持久化标识与CLR标识(其值代表对象在内存中的位置)等价。
脱管(detached)
实例曾经与某个持久化上下文发生过关联,不过那个上下文被关闭了,或者这个实例是被序列化(serialize)到另外的进程。
它拥有持久化标识,并且在数据库中可能存在一个对应的行。
对于脱管状态的实例,NHibernate不保证任何持久化标识和CLR标识的关系。
▪3.2.3上下文相关的(Contextual)Session
使用NHibernate的大多数应用程序需要某种形式的“上下文相关的”session,特定的session在整个特定的上下文范围内始终有效。
然而,对不同类型的应用程序而言,要为什么是组成这种“上下文”下一个定义通常是困难的;
不同的上下文对“当前”这个概念定义了不同的范围。
从1.2版本开始,NHibernate增加了ISessionFactory.GetCurrentSession()方法,ISessionFactory.GetCurrentSession()的后台实现是可拔插的。
因此,我们引入了新的扩展接口(NHibernate.Context.ICurrentSessionContext)和新的配置参数(hibernate.current_session_context_class),以便对什么是“当前session”的范围和上下文(scopeandcontext)的进行可拔插式定义。
请参阅NHibernate.Context.ICurrentSessionContext接口的API文档,那里有关于它的契约的详细讨论。
它定义了单一的方法,CurrentSession(),特定的实现用它来负责跟踪当前的上下文session。
NHibernate2.0.0内置了此接口的以下几种实现。
NHibernate.Context.ManagedWebSessionContext-当前session保存在HttpContext之中。
但是,你必须自己通过CurrentSessionContext类中的静态方法手动的把ISession实例绑定或者取消绑定到当前上下文,ISession自己不会打开创建、清楚、或者关闭。
NHibernate.Context.CallSessionContext-当前session保存在CallContext.你必须自己通过CurrentSessionContext类中的静态方法手动的把ISession实例绑定或者取消绑定到当前上下文。
NHibernate.Context.ThreadStaticSessionContext-当前session保存在ThreadStatic变量。
这个上下文只支持一个ISessionFactory.你必须自己通过CurrentSessionContext类中的静态方法手动的把ISession实例绑定或者取消绑定到当前上下文,NHibernate.Context.WebSessionContext-和上面的ManagedWebSessionContext类似,当前session保存在HttpContext之中。
但是,你必须自己通过CurrentSessionContext类中的静态方法手动的把ISession实例绑定或者取消绑定到当前上下文,hibernate.current_session_context_class配置参数定义了应该采用哪个NHibernate.Context.ICurrentSessionContext实现。
一般而言,此参数的值指明了要使用的实现类的全名,但那三种内置的实现可以使用简写,即"
managed_web"
"
call"
"
thread_static"
and"
web"
。
第四章多层架构
▪4.1二层体系结构
传统的二层体系结构是C/S结构,即Client/Server(客户机/服务器)结构,这一概念最早用于描述软件的体系结构,表示两个程序间的关系,一个是提出请求的应用程序,另一个是服务程序。
从概念上讲,C/S模式是一种特殊的协作处理模式,整个应用程序分布于客户机和服务器上,两者都参与一个应用程序的处理。
C/S模式把系统分成两个基本组成部分:
客户机(Client):
面向最终用户,实现各自业务处理、提供人机交互界面;
服务器(Server):
负责有效地管理系统资源,并提供某项服务功能。
C/S模型方案中客户应用程序向服务器程序请求服务。
这种方式隐含了在建立客户机/服务器间通讯时的非对称性。
客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。
这一套惯例包含了一套协议。
它必须在通讯的两头都被实现。
根据不同的实际情况,协议可能是对称的或是非对称的。
在对称的协议中,每一方都有可能扮演主从角色;
在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。
一个对称协议的例子是Internet中用于终端仿真的TELNET。
而非对称协议的例子是Internet中的FTP。
无论具体的协议是对称的或是非对称的,当服务被提供时必然存在“客户进程”和“服务进程”。
一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。
在这个时刻,服务程序被“惊醒”并且为客户提供服务一对客户的请求作出适当的反应。
这一请求/相应的过程如图2-1所示。
虽然基于连接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过数据报套接口提供的。
图4-1客户端/服务器的结构
▪4.2三层体系结构的简介
▪4.2.1三层体系结构的由来
C/S软件体系结构,即Client/Server(客户机/服务器)结构,是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,C/S结构将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。
C/S体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。
但随着企业规模的日益扩大,软件的复杂程度不断提高,传统的二层C/S结构存在以下几个局限:
(1)在传统的二层C/S结构数据库应用中,客户端的机器执行应用程序,连接到后端的数据库服务器中存取应用系统所需资料,因为应用系统的企业逻辑都编写在客户端的应用程序中,造成客户端非常臃肿,且当应用系统需求改变时,所有在客户端的应用程序都必须改变,使维护成本太高;
(2)二层C/S结构是单一服务器且以局域网为中心的,所以难以扩展至大型企业广域网或Internet;
(3)软、硬件的组合及集成能力有限;
(4)客户机的负荷太重,难以管理大量的客户机,系统的性能容易变坏;
(5)数据的完整性与安全性难以维护。
因为众多客户端程序可以直接访问数据库服务器,那么,在客户端计算机上的其他程序也可想办法访问数据库服务器,从而使数据库的安全性受到威胁。
正是因为二层C/S有这么多缺点,因此,三层体系结构应运而生。
▪4.2.2三层体系结构的原理
为提高数据的安全性与系统的可扩充性,可在两层模型的基础上考虑采用三层(3-tier)设计模型,将数据库访问分布在一个中间层。
客户程序与数据库的连接被中间层屏蔽,客户程序只能通过中间层间接地访问数据库。
中间层可能运行在不同于客户机的其它机器上,经过合理的任务划分与物理部署后,可使得整个系统的工作负载更趋均衡,从而提高整个系统的运行效率。
这些位于中间层的程序又称应用服务程序(ApplicationServer),因为它们实际上表达了一个企业处理信息的主要业务逻辑(BusinessLogic),即企业的系统模型与功能模型,而客户程序仅实现图形用户界面,完成终端用户与业务逻辑之间的交互。
从客户程序的角度来看,中间层将企业的所有业务逻辑抽象为更高层次的应用程序接口(API),客户程序则通过这些API构建整个企业的应用系统。
与典型的两层模型相比,三层模型可更好地支持对企业业务逻辑的集中控制与管理。
三层结构应用软件与传统的C/S模式下的两层结构应用软件相比,有着可伸缩性好、可管理性强、安全性高、软件重用性好以及节省开发时间等诸多优点。
在Internet/Intranet环境下,这些优点显得更加突出。
很多公司也提出了三层应用软件体系结构。
三层结构的客户/服务器模型是一种先进的协同应用程序开发模型,这种方案将客户/服务器系统中各种各样的部件划分为三层服务,它们共同组成一个应用程序,这三层服务包括:
●客户端服务程序,称为表示层;
●业务服务和其它中间层服务程序,通常称为业务逻辑层(中间层);
●数据层(数据库)。
典型的三层结构如图2-2所示。
图4-2典型的三层结构
表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。
它用于检查用户从键盘等输入的数据,显示应用输出的数据。
为使用户能直观地进行操作,一般要使用图形用户接口,操作简单、易学易用。
在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。
检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑。
功能层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。
例如,在制作订购合同时要计算合同金额,按照定好的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。
表示层和功能层之间的数据交往要尽可能简洁。
例如,用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层,而由功能层处理过的检索结果数据也一次性地传送给表示层。
通常,在功能层中包含有确认用户对应用和数据库存取权限的功能以及记录系统处理日志的功能。
功能层的程序多半是用可视化编程工具开发的,也有使用COBOL和C语言的。
数据层就是数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 NHibernate CRM