系统构架问题

niuzhenjun 2003-02-13 02:33:06
最近我在考虑用CB6连接大型数据库(如ORACLE,SQLSERVER等)的三层或多层架构问题,有如下问题:
1. 对于客户端显示层与应用程序服务器的业务逻辑层之间的通讯方式:大多数CB的书都详细解释了DCOME连接方式,但由于DCOME是不固定端口的连接,如果应用程序服务器在防火墙内,除了80等必要端口外都封了,这种连接是不是就不行了。是否可以采用其他的如WEBSERVICE等连接,他们的优缺点是什么?对于您的回答,怎么详细都不为过,我也想找一些这方面的资料来看,希望推荐一些好书。另外CB6的书实在是太少了。
2. 应用程序服务器和数据库服务器的连接当然可以用ADO连接,但是如果我们用类的方式去实现数据库的存储和更新,那么我们怎么实现将多个对象存储作为一个事务来实现,有人推荐我用COM+实现,但太过于复杂,有谁有好的解决办法。

无论是提解决思路还是推荐好书,如果证实可行,我都给分,分数可以再加,我不介意。当然,如果能给我实际项目的解决方案就更好了。
...全文
46 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
snla 2003-02-19
  • 打赏
  • 举报
回复
还有什么地方不明白吗?
snla 2003-02-18
  • 打赏
  • 举报
回复
明白了,事务处理基本有以下几种解决办法
数据库事务处理
数据库事务处理是在 Transact-SQL 中实现的,Transact-SQL 将所需的操作打包在 BEGIN TRANSACTION 和 COMMIT/ROLLBACK TRANSACTION 语句中。

手动事务处理
手动控制事务处理范围是通过使用一组 ADO.NET 对象进行的,使用明确的指令开始和结束事务处理。

自动事务处理
在 Microsoft Windows® 2000 组件服务 (COM+) 中注册 .NET 类,以便参与事务处理。该类具有声明性属性的标记,指定该类参与事务处理的方式。

代码参见
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdadotnettransact1.asp
niuzhenjun 2003-02-17
  • 打赏
  • 举报
回复
snla你好:
第2个问题是这么回事,它和ado没有什么冲突,完全是面向对象设计带来的问题,就是所有的问题都用类来实现。加入有一个人类和一个日志类,他们的实现都在中间层,当一个人存钱时,人类信息需要更新,同时需要写一个日志,他们的保存方法都在自己的类内,每个类内都有ADO连接来实现自身的保存,当然自身事务可以保证,但是这两个类应该为一个事务,我现在闹不清怎样实现将这两个类作为一个事务来更新。
如果单存用类的更新返回状态来判断下一个更新是否进行是不行的,如果人类保存成功,日志类保存失败,那么人类就应该rollback,当需要更新的类很多并且都是同一个事务时就更明显了。我们不可能将所有类似的更新都做单独的类,那样面向对象的优点就没了。
zahuifan 2003-02-14
  • 打赏
  • 举报
回复
听说李维的 DEPHIE 数据库开发的书不错,包括 WEBSERVICE 和 dbExpress
方面。虽说是 DEPHIE 的,但像你这样的高手一定看得懂。
snla 2003-02-14
  • 打赏
  • 举报
回复
1、如果应用程序服务器在防火墙内,除非开放相应端口和服务,否则无法实现DCOM连接。用webservice是个不错的办法。borland公司的webservice开发环境我不敢恭维,推荐用.net的,毕竟是微软成熟,不像borland公司是临时抱佛脚。如果你觉得还要学C#太麻烦,那就看看李维的《C++Builder6 SOAP/Web Service开发》吧。
2、用类的方式实现对数据库的操作和用ADO有冲突吗?你所说的将多个对象存储作为一个事物来实现具体是怎么一回事?

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧