3

伙计们,

有一个关于 Delphi 和 Datasnap 的信息我仍然无法找到或弄清楚......想象一下我想把我所有的智能都放在 Server 层。在这种情况下,当然,我将使用面向对象的概念,创建大量的类,每个类都有自己的方法和属性。由于在每个示例中我看到客户端仅检索有关一个服务器类的信息,我想知道:无论如何,是否有可能使用多个类,或者我是否仅限于一个包含一堆不同方法的类?

你们能明白吗?

谢谢你的帮助,

保罗

4

3 回答 3

1

还没有有用的答案,所以我决定给出一个。在给定的大多数示例中都有一个 TWebDataModule 如果没有,您可以在删除 DSServer 组件的地方使用数据模块。在那里你会发现 DSServerClass(1) 负责公开一个类的服务器方法。

所以你可以做的就是将另一个DSServerClass放到模块中。现在在 ObjectInsepecor 中转到属性 -> 服务器设置默认服务器,该服务器可能名称为 DSServer1(示例中的默认服务器)。转到事件-> OnGetClass双击,以便将处理程序分配给相同的处理程序。

现在你可以这样写(你可以看到现有的第一个 DSServerclass1 以供参考)设置PersistentClass := ServerMethodunit1.user; Here user是方法需要公开的类名。

于 2018-12-19T08:51:17.653 回答
0

DataSnap 服务器向客户端公开多个类是没有问题的。只是看看样品。甚至“基本”示例服务器也公开了三个服务器类。

于 2012-09-15T13:01:12.217 回答
0

这个场景的一个有用的设计模式 - 许多业务类,必须通过通信层与“外部”客户端应用程序通信 - 是Facade

外观是一个对象,它为更大的代码体(例如类库)提供简化的接口。

对于客户端,外观暴露了方法,这些方法反过来调用业务类的实例。

这还有一个优势,即您的业务模型类可以在 API 保持稳定的同时发展。

您还应该考虑Data Transfer Objects,这是一种避免暴露内部对象类和数据结构以实现更好封装的设计模式。

于 2012-09-15T12:34:22.920 回答