- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如果我的问题不清楚,请通过评论帮助我改进。
我是 Delphi 和 dbExpress 的新手,我刚刚熟悉 TSQLDataset、TDataSetProvider、TClientDataSet 和 TDataSource 类。
我正在从事的项目以一种对我来说很奇怪的方式使用这些组件。有一个巨大的数据模块单元,其中包含许多前面描述的四重奏类。我猜想有更好的(和更模块化的)方法来做到这一点。 DataSnap仅用于将此数据模块放置在服务器应用程序中,以便客户端通过它访问数据。
所以,让我试着解释一下我的一些疑惑:
对不起,如果我不够清楚。提前致谢。
最佳答案
组件
TDataSource 是数据感知控件和它们从中获取值的数据集(TDataSet 后代)之间的桥梁。
TClientDataSet 就是这样一个数据集。 TClientDataSet 可以单独使用,例如访问 xml 文件中包含的数据,但也可以连接到 TDataSetProvider。
TDataSetProvider 是内存中的 TClientDataSet 和通过某种驱动程序从数据库中获取数据的实际数据集之间的桥梁。在客户端服务器开发中,您通常会看到一个 TRemoteDataSetProvider(名称可能不同,我不经常使用这些组件),它弥合了客户端和服务器之间的差距。
TSQLDataSet 是从某个数据库获取数据的实际数据集。
如果我在一个可执行文件中看到这四个部分,我会觉得很奇怪。我希望服务器端的 TSQLDataSet 连接到 TRemoteDataSetProvider 的对应部分。但是,我想对于嵌入式数据库,它可能是支持公文包模型的一种方式,这正是 TClientDataSet 真正有用的地方(TClientDataset 非常强大,这只是它的强项之一。)
单个数据模块
哎呀。一个巨大的数据模块是惰性编程或对如何使用数据模块的误解的结果。拥有一个“托管”数据库连接的数据模块是完全正常的,然后由更紧密地关注应用程序各个方面的各种其他数据模块使用。
领域抽象
关于抽象您的业务模型,dbexpress 和 datasnap 真的不应该出现在您的业务模型中。它们应该是您的数据层的一部分。
TDataSource、TClientDataSet 和自定义 TDataSetProvider 后代可用于利用 UI 中数据感知控件的强大功能,同时仍将 UI 与业务模型分开。在这种情况下,自定义 TDataSetProvider 将成为客户端数据集与域层中的集合和实例之间的桥梁。
即便如此,我仍然希望看到一个单独的数据层,使用 TRemoteDataSetProviders 或直接的 TDataSet 后代(如 TSQLDataSet)为域层提供数据。
您提到的单个大数据模块可能是该数据层的一部分,客户端数据集为业务层提供数据。正如您还提到 TDataSource 作为常见四重奏的一部分一样,该应用程序可能是以 RAD 数据感知方式开发的,其中 UI 控件基本上直接连接到数据库列/表。
如果您想将此应用程序转换为具有更多层次的架构,请谨慎而缓慢地进行。首先了解当前的体系结构,并充分了解它,以了解这种转换将产生的影响。 Serg 提供的链接肯定会帮助您。 Pawel Glowacki 撰写了大量有关 DataSnap 的文章。
关于database - 如何使用 dbExpress 和 Delphi(也可能是 DataSnap)来抽象我的业务模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7627876/
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在这里感觉有些不对劲,所以我希望社区提供意见 - 也许我以错误的方式处理这个问题...... 问:是否适合使用传统的基础架构日志框架(如 log4net)来记录业务事件? 当我说业务事件时,我的意思
技术也好,业务也罢; 01 【什么是业务?】 对于那些久经职场的人,也很难一句话说明白; 业务,作为工作中绝对的核心点,即便在一个公司待的足够久,
三天研发,两天设计; 01 【优先做设计方案】 职场中的那些魔幻操作,研发最烦的是哪个? 作为一个数年且资深的互联网普通开发,可以来说明一下为什么
业务、系统、接口(interface)、持久化类是什么意思?用一些例子解释一下? 最佳答案 业务可能是应用程序中所有功能部分发生的部分(即计算或规则) 系统是您的操作系统 接口(interface),
我无法创建带有指向移动应用的外部链接的简单广告。我已正确设置访问权限,可以创建广告系列、广告集、加载图像,但在创建广告期间出现错误: Ads and ad creatives must be asso
我是软件工程专业的学生,现在我正在为我的期末项目工作,安排在交易日进行商务配对。 这个想法是将卖家(开发人员)和买家(有经济能力的人)在一起。 算法应该像“快速约会”。 假设我有 15 张 table
我们只需按照以下说明在 AWS Cloudformation 上部署企业 WhatsApp API: AWS WhatsApp API 所以一切正常,部署正确完成,问题出在“SSL 配置”选项上,我们
我的应用因为以下原因被拒绝了 Guideline 3.2 - Business We found that your app is not appropriate for the App Store
您好,我想在我的网络应用程序中使用 WhatsApp 业务 API。我已经在 postman 中测试过了。 每当在 WhatsApp 选项卡下的 Facebook 业务页面中运行示例 curl 代码时
我是 Skype for Business 技术的新手,我正在尝试部署一个我愿意与 Skype WebSDK 和 AppSDK 一起使用的服务器。 起初我尝试使用Skype进行在线商务,但websdk
Apple 开发人员以此为由拒绝了我的应用。 “业务 - 3.1.1您的应用程序包含一个帐户注册功能,该功能被视为对外部机制的访问,以便在应用程序中使用购买或订阅。此功能不符合 App Store 审
我正在玩 Realm for Android。 我喜欢自动更新对象的想法,但我对它的软件架构有顾虑。 我已经看到许多提议的架构都指定了一个层来处理数据/数据库访问,理想情况下,更高层不会知道有关数据库
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 10 个月前。 Impro
我正在尝试设置 Whatsapp 业务 API。 引用Link用于设置。 我正在使用 Windows 10 操作系统。 -- 仅供引用。 在初始设置部分,使用命令 docker-compose up
我正在尝试使用 Facebook Business SDK 创建一个 facebook Adaccount .但是当我使用方法 createAdAccount 时,它会给我一个错误。请参阅下面的图片。
我想写一个概念证明 MonoMac使用 c# 和 Razor 呈现 html“ View ”的应用程序。 这可能吗? 如果没有,是否有人推荐与 Razor 的简单性相比的任何其他模板引擎。如果必须的话
无法解析 ':business:diary@debug/compileClasspath': Could not resolve project :fun:push. 的依赖关系 无法解析项目:fun
当我尝试在 Visual Studio Professional 2015 14.0.23107.0 中打开某些 XML 文件时,XML 编辑器出现白屏并显示以下文本: 为什么我不能编辑这个文件?此项
我是一名优秀的程序员,十分优秀!