关于三层结构的问题,急得很 ( 积分: 100 )

  • 主题发起人 主题发起人 YuD
  • 开始时间 开始时间
Y

YuD

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个项目,以前是C/S二层结构,现在要增加些功能,并且要按照国家标准的去做,这样一来改动很大(很多代码要重写).这次准备用C/S三层机构和B/S结构(中心的管理和统计用C/S,外地的业务用B/S).
1.本人对三层结构了解甚少,不知道我得想法能否实现?
2.如果能够实现,C/S和B/S能否共用一个服务端程序?
3.我对三层是菜鸟,请专家指点怎样能有快速上手?
 
有一个项目,以前是C/S二层结构,现在要增加些功能,并且要按照国家标准的去做,这样一来改动很大(很多代码要重写).这次准备用C/S三层机构和B/S结构(中心的管理和统计用C/S,外地的业务用B/S).
1.本人对三层结构了解甚少,不知道我得想法能否实现?
2.如果能够实现,C/S和B/S能否共用一个服务端程序?
3.我对三层是菜鸟,请专家指点怎样能有快速上手?
 
1、没问题
2、使用 webservices 发布一致的接口
3、看 李维的经典之作
 
谢谢 LSUPER 兄的指点,我会认真研究兄台的建议的,
李维的书在看
企盼每一位路过的富翁都留下宝贵的建议,如果分少何以在加,我想尽快找到最优的方法.
希望能得到一段理想的演示,最好是在实际应用中的演示
 
请各位三层的高手再给些建议,让兄弟我多学些知识呀.
 
不要搞三层,看不出有什么好处~~ 写起来到比两层复杂多了~
有搞三层的成本买个好的服务器早结了~~
 
如果要同时支持C/S和B/S的话,使用webservices就可以了
 
同时支持CS和BS,在CS中也可以用两层,三层麻烦,不就是统计吗?功能少,建议用两层
 
to:zdr690929
首先谢谢你的参与.
我是为了日后的维护方便,听说三层的中间层集成了商业规则,如果客户哪天要求更改规则,我们只要对中间层修改就可以了,如果用同时用三层和两层工作量就大了很多.
谢谢 zdr690929
谢谢 jxhdy2001
 
三层开发基本概念介绍
三层客户 / 服务器
一:优点:灵活性和可扩展性。
应用三层开发技术 ( 分布式 ) 的原因
( 参考书目 : Delphi 5.x 分布式多层应用系统篇 )
一 : 解决客户机 / 服务器结构的维护成本问题,改善客户机 / 服务器结构延展性问题。
客户机 / 服务器结构支持的用户人数有一定限度( 200 人以下)。则种结构限制了 Internet/Intranet 及电子商务的发展。三层开发应用 Database Pooling, Object pooling,Resource Pooling, 线程模式提供了高度延展性。
二 : 解决应用逻辑重复使用的问题。
例如 : 当企业要在原有的客户机 / 服务器结构上添加 Web 浏览服务时,就需要配置 Web 服务器,重新编写所有应用逻辑,并且更新 MIS 系统。在三层结构中,用 COM/DCOM, CORBA(Common Object Request Broker Architecture) 对象,或 Enterprise Java Bean 等,封装企业的逻辑程序代码 ( 称之为企业对象 ) ,可以解决上述问题。大大降低开发和维护的成本。
三 : 整合不同系统结构的需要,及时应用新技术的需要。
二: Microsoft 的三层服务模型
1: 结构 : 是 windows DNA(distributed internet applications, 分布式内部网 )COM(component object model ,构件对象模型 ) 构件作为实现系统及应用程序服务的工具。
l 用户服务
l 业务服务
l 数据服务
(1) 用户服务 : windows DNA 定义了四种可用于实现用户服务层的客户:
n 标准浏览客户:依赖于简单,基于页面的 HTML 来管理数据表示和与用户进行交互 . 其兼容性 很好,功能不丰富。
n 增强型浏览器客户 : 汲取某个特殊浏览器 (ex: Dynamic HTML , 脚本及 ActiveX 控件 ) 的优点来最大化用户接口的丰富性和功能 ,适用于公司 intranet .
n 依赖型 Internet 客户:能在客户机器上将对 Internet 的访问和对操作系统的访问集成在一块。
n 增强型 Internet 客户: Microsoft Office 97 和 Microsoft Visual Studio.
(2) 业务服务 : 通过将基于服务器的 Microsoft 产品与定制的 COM 构件运行环境集成在一块来实现。
n Web 服务 ( Microfsoft Internet Information Server 与 Active Server Pages ).
n 事务和构件服务 (Microsoft Transaction server 和 COM) .
n 消息服务 (Microsoft 消息队列服务器 ) 。
n 通用数据访问 (universal data access)(Microsoft 数据访问过件 )
l 大型机环境的互操作 (Microsoft SNA 服务器 ). 其详细信息在下面的专题中列出。
(3) 数据服务 :

n Microsoft SQL Server7 数据库。
n Microsoft Exchange server 5.5 版本的目录和信息库。
专题:
业务服务
一 :Web 服务 ( Microsoft Internet Information Server 与 Active Server Pages ).
Web 服务对象模型:
1,server对象:提供对服务器上方法和属性的访问.例:问(universal data access)(Microsoft数据访问构件) setobjmyobject=server.createobject( “ businessserver.myruleobject ” )
2:Session对象: 用来存储一个特定用户会话所必须的信息。
3 : Application 对象 : 用来使某个应用程序的所有用户共享息。
4 : Request 对象 : 略。
5:Response 对象 : 略 .
二 : 事务和构件服务 (Microsoft Transaction server 和 COM)
1:Microsoft 事务服务器 (MTS) 是基于构件的事务处理系统,用来满足复杂事务处理。 MTS 支 持 SQL Server 和任
何基于 X/open 算法的 XA 协议的数据库 ( 见注释 ) 。
MTS 提供的服务有 :
n 对分布事务的支持。
n 用于控制实例化和使用对象安全的服务。
n 过程和线程的自动管理。
n 对象实例的管理。
n 数据库连接管理 ( 连接池 ) 。
在应用程序中可声明相应的构件完成以上服务。
2 : MTS 和 SQL server 事务一样 , 要求原子执行,或整个成功 , 整个失败。 Transaction Server 与 Microsoft Distributed Transaction Coordinator(MSDTC) 交互确认事务满足 ACID( 原子性 Atomicity, 一致性 Consistency, 分离性 Isolatation 和耐久性 Durability) 。
3:MTS 和 SQL server 事务的区别 .MTS 可以用 visual basic ,visual c++ 等封装的 MTS 构件实现 , Recordset 对
象的 addnew 方法添加新行。 SQL server 事务只能由 Transact-SQL 代码编写 , 如 (ADO).
4:Windows DNA(windows distributed internet application architecture): 将客户 / 服务模式开发与 web 和在一起的战略 .
使用 HTML,DHTML,Active server pages 向用户提供第一层 ( 表达层 ), MTS 和 MTS 的构件 , 如 IIS(internet information server),IIS/ASP 构件及 ASP 脚本占据中间层 ( 业务逻辑层 ),SQL server 作为数据服务层。
5:MTS 使用分布事务协调者 (Distributed Transaction Coordinator , DTC) 事务引擎 .DTC 使用两级段交付标准。
关于 DTC 的信息可通过一下方法得到 : 用 MMC(Microsoft Management Console) 打开 c:/winnt/system32/services.msc,
在右边的列表中找到 DTC 服务,察看其属性。
6: 使用 MTS 最大化系统性能。 ( 注意事项 )
n 避免传递或返回对象。
n 尽可能通过值 (BY VAL) 来传递参数。 (By Val 关键字使网络间的旅程最小 )
n 避免创建数据库游标。少用 RecordSet 对象。
n 通过使对象包容器线程化 (Apartment Threaded) , MTS 可以在多个对象中执行并发的客户请求。
7:
注释 :XA 是一种由 X/Open 组织定义的两相提交协议,允许多个数据库服务期间的事务协同,并将其看作一个事务。 (Unix 数据库 , 包括 oracle ,informix,db2 都支持 )
三 : 消息服务 (Microsoft 消息队列服务器 ) 。
1 : Microsoft 消息队列 (Microsoft Message Queue ,MSMQ) 为应用程序提供了异步通信功能 .MSMQ 被认为是连接分布式应用程序中业务与数据服务层的桥梁。
2 : MSMQ 自动与 MTS 集成。应用程序可以将 MSMQ 消息封装在 MTS 事务中。
3 : MSMQ 与 Microsoft exchange 服务器的不同 .exchange 提供用户到用户 (person -to -person) 的消息传送 . 而 MSMQ 提供应用程序到应用程序 (application - to -application) 的消息传送 .
四 : 通用数据访问 (universal data access)(Microsoft 数据访问构件 )
数据访问构件跨越了业务服务层和数据服务层之间的界限。 ADO,OLE DB( 嵌入式数据库 ) 以及 ODBC 共同组成了 Microsoft 数据访问构件 (MDAC).
五 : 大型机环境的互操作 (Microsoft SNA 服务器 )
Microsoft 的 COM &DCOM( 简介 )
一 :COM 是一种定义对象服务器如何与对象客户进行交互的协议。对象服务器 (object server) 是实现 COM 类的模块。对象客户 (object consumer) 是使用 COM 对象的模块。
DCOM 扩展了 COM 协议,使得对象服务器可以位于一台与客户不同的计算机。 通过 RPC 向对象服务器调用。 (CORBA 也是分布对象协议 )
COM 通过 SSPI(Security Support Provider Interface, 安全支持提供者接口 ) 来管理对象的安全性。
二 : 应用服务器 ( 中间层 ) 应具备的特性 :
n 远层启动,监视和中止的能力。
n 可扩展的能力。
n 易于配置的能力。
n 安全失效的能力。
远层启动功能:如果用户想在远程计算机上创建一个 COM 对象,远程机上的 DCOM 服务控制管理器 (Service Control Manager ,SCM) 会自动启动 COM 服务器并使 COM 对象可用。具体信息可在开始菜单中运行 DCOMCNFG 命令。
易于配置的能力:在 Windows 资源管理器中右击一个 COM DLL 或 EXE 就可激活注册或撤销注册。
可扩展的能力:可扩展的第一等级和第二等级。 DCOM 提供的两种负载均衡。 1 ),静态负载均衡 ( 指定应用服务器的运行机器 ) ,可在 DCOMCNFG 中的应用程序的属性中指定。 2 ) : 动态负载均衡,由调度程序进行分配。
Delphi 提供的相关技术 :
u COM / DCOM / COM+ 企业对象。
u CORBA 企业对象。
u XML / HTML
u CGI / SAPI/NSAPI
u ASP
u Active X (Active Form)
u ADO / OLE DB
u BDE / IDAPI SQL Links
u MTS 对象
u MIDAS 服务器
u CORBA 服务器。
相关组件在 1) File 菜单 /new/ Multitier 和 ActiveX 页中。
2) 在组件面板中的 ADO, Midas, Internet Express, ActiveX 等页中。
Corba 简介
1 :什么是 corba ( common object request broker architecture )?
Corba 是由 object manangement group(OMG) 定义的分布式对象标准结构。语言中立,使用了面向对象的设计结构,允许软件对象在不同的操作系统平台和应用程序中重复使用。
如果想实现一下功能, corba 是较好的解决方案:
l 应用系统要整合异质平台和操作系统。
l 应用程序服务器必须执行在 linux/unix 机器中。
l 应用系统必须执行关键性任务,具备安全强固的容错能力,必须稳定,有效率。
l 想开发使用 Web 对象的 Internet/Intranet 解决方案。
l 应用系统未来想和 Java 整合。
2 : corba 的结构
corba 对象是一个提供特定服务的组件,它通过定义一组输出接口来声明可以提供的服务。在这个输出接口中, corba 对象定义了客户端可以调用的方法和存取属性。客户端只要指明提供服务的 corba 对象的名称以及要调用的方法或是要
存取的属性就可以通过 ORB 得到 corba 对象提供服务。
术语介绍:
ORB: object request broker. 联结客户端和中介的 corb 对象。
Stub 对象 : 运行在客户端的 corba 对象的复制品,在客户端调用的是 Stub 对象,然后 Stub 对象通过 ORB 远程调用
CORBA 对象, Stub 对象用 Marshaling( 对象指针转换,使对方程序能够识别 ) 自动为你传递参数和数据。
Skeleton 对象 : 运行在服务器端的对象,将传递到服务器的数据还原成服务器端使用格式。然后根据自动根据客户端要求调用 CORBA 对象。
调用方式:
u 静态调用:客户端程序通过 Stub 对象将数据传递到 corba 对象, corba 对象执行完毕后,通过 Skeleton 对象
把结果再 Marshaling 回客户端的 Stub 对象,经由 Stub 对象回复数据格式后,再回传给客户端的应用程序。
动态调用 (Dynamic Interface Invocation DII) :客户端不需要先有 stub 对象,也不需要知道远程 corba 对象提供的方法和属性, corba 程序可以在执行时取得这些信息,然后动态的调用 corba 对象。
DII 比静态调用有更大的弹性,但编程较难,且执行效率不如静态调用。
3 : corba 提供的核心服务
n Event Service: 以“提供者 — 消费者( Supplier_consumer )“模型通过一个事件信道然提供者对象以异步的方式传递事件给消费者对象。
n Naming Service: 允许程序员使用阶层式的方式为企业对象命名,然后在程序中可以使用这些有意义的名称来存取这些对象。
n Transaction Service: 提供分布式应用系统能够执行关键任务,允许企业对象在异质平台和数据库之间进行数据的 Two-Phase Commit 的交易管理。
n Security Service : 包括存取控制 (Access control), 稽查控制 (Auding), 认证控制 (Authen
tication), 存取政策控制 (Plicy Control).
MIDAS 介绍
一 :MIDAS 概念
MIDAS (Multi-tier Distributed Application Services Suite ( 多层分布式应用程序服务器 )) 是开发多层应用系统使用的中介透明引擎。通过 MIDAS ,程序员可以通过相同的组件存取不同的后端应用程序服务器(如, COM/DCOM 应用程序服务器 ,CORBA 应用程序服务器 ,MTS 中介软件), MIDAS 也提供容错能力,负载平衡以及高执行效率的能力。
中介者和功能:
u 远程数据中介者 (Remote Data Broker) :提供客户端存取远程数据的能力。
u Constraint 中介者 : 允许客户端应用程序下载远程数据库对数据设定的 constraint 。让数据在客户端被数据库的 constraint 检查。减少网络流量。
u 企业对象中介者 (Business Object Broker): 允许应用系统开发执行企业逻辑的企业对象。
u 容错能力:当一个客户端联结的应用程序服务器发生错误时,企业对象中介者就会在网络中寻找另一个提供相同功能的应用程序服务器,将客户端联结到该应用程序服务器上,客户并不知道发生的一切。这时必须使用无状态对象。
u 负载平衡:当客户端多于服务器数目时,企业对象中介者自动平衡服务器的连接数目。
二:数据处理
应用程序服务器从数据库取出客户端想要的数据,进行数据封包( data packet ) , 通过 Iappserver 接口以 OleVariant 的形式传递给客户端,到达后,通过客户端的 MIDASServer 整理,加入到 ClientDataSet 的数据快储内存中,这时,客户端于应用程序服务器的连接断开。
在客户端应用了 TclientDataSet 的 ApplyUpdates 方法要求更新时, MIDASServer 把更新之前的数据封装在数据封包中,然后再封装被更新的数据(只含被改变的),当应用程序服务器收到这些 Delta 数据封包之后, Resolver 先将其解析,
然后对于每一笔更新的数据, Resolver 首先根据第一笔封装的原始数据到数据库中寻找纪录,如果纪录已经被其他用户改变了, MIDAS 会把原来客户端传来的数据和数据库中最新的这笔数据一块传回客户端,要求用户决定如何处理。
如果数据更新失败,则 MIDAS 会把发生问题的数据封装在数据封包之中传回客户端
 
谢谢 无泪 的支持!!
希望各位富翁不吝赐教
 
先把程序写成三层的,然后客户端用websnap写一个浏览器就行了
 
我也在学习多层开发,顶下!
 
三层好,但是要看你怎么写了,写的不科学比二层还不稳定,三层连接起来有时候有问题,但是总体比二层结构的要好点.
 
三层比较好,业务逻辑比较清淅,项目大建议用三层,更主要看钱:)
 
引用楼主的话:
有一个项目,以前是C/S二层结构,现在要增加些功能,并且要按照国家标准的去做,这样一来改动很大(很多代码要重写).这次准备用C/S三层机构和B/S结构(中心的管理和统计用C/S,外地的业务用B/S).
1.本人对三层结构了解甚少,不知道我得想法能否实现?
2.如果能够实现,C/S和B/S能否共用一个服务端程序?
3.我对三层是菜鸟,请专家指点怎样能有快速上手?
--------------------------------------------------------------------------------
这个需要用到三层吗?
我是这样理解的:原先的系统是基于C/S的。假设是总公司内部的一个系统。现在要增加B/S系统。假设是分公司使用的系统。使B/S系统的数据能与总公司内部的系统保持一致。那其实这两个系统使用的就是一个数据库而已。你只要在原有的数据库上增加些标志字段来判断B/S系统上来的数据是否可以进行最终管理和统计便可。
这样既不要动C/S系统太多。又可以减少整体改变架构。
 
学习,关注!!顶一下。
正在学习三层,不是太了解,但是感觉也许对于相对简单的应用,可能没有必要用三层,似乎三层比较复杂,继续听各位高人的讲解。[:D]
 
我感觉现在无论懂多少软件知识的张嘴闭嘴都说B/S,我们以前的客户也经常问我们B/S方面的东西(如:有没有B/S结构版本?),好像B/S才够时尚,才够领先.我们这样做也是为了迎合客户.不过B/S结构在某些方面的确有很大优势,好像现在全构的车管系统,驾管系统都是B/S结构的(好像是用java做的).在软件发放方面占尽了优势.
请各位专家给些指导,发表一下观点,给兄弟些建议.
 
谢谢各位的支持和帮助,我会很认真的参考这些信息的.
 
后退
顶部