【问题标题】:What is **the** way to interconnect two Smalltalk(s)?**连接两个 Smalltalk 的**方法是什么?
【发布时间】:2019-09-03 12:00:51
【问题描述】:

如果我想将两个 Smalltalks 互连,即 Smalltalk/XGemStone/S,你会推荐什么方法?我想在Smalltalk/X 中有一个应用程序,在GemStone/S 中有持久对象。

在进行任何开发之前,我曾尝试调查此问题。我发现了一些开源实现——我喜欢从别人的错误中学习,所以我不会重复它们。

我找到了 Pharo 的实现 - gt4gemstone - Glamorous Toolkit,用于与 Gemstone/S 进行远程工作。

我还从 James Foster 那里找到了 - Jade,它取得了更多的成就,因为它是一个

在 Microsoft Windows 上运行的 GemStone/S 替代开发环境 (IDE)。

您建议从哪里开始?是否会阅读gt4gemstoneJade,然后想出与GemStone/S 进行互连 Smalltalk/X 类似的方法?

【问题讨论】:

    标签: smalltalk gemstone smalltalkx


    【解决方案1】:

    很高兴听到您对 GemStone 感兴趣(我的热情之一!)。与 GemStone 互操作性的关键是为 GemStone C 接口 (GCI) 提供包装,这是一个用于连接到 GemStone 的 C 库。这是每个 GemStone 客户端(无论是 C、Smalltalk 还是其他)用来与系统通信的方法。

    有关 Smalltalk 示例,请参阅 Jade 中的 GciLibrary*GciSession

    有关其他一些可能是更清晰的起点的最近示例,请参阅GciForJavaScriptGciForPython

    有关较旧的(红宝石)示例,请参阅gemstone_ruby

    所以,我建议您调查一下Smalltalk/X外来函数接口 (FFI) 的作用,然后按照上面的示例连接到 GemStone。

    【讨论】:

    • 很好的答案!我在 GemStone 上看到了您的 101(无价),会再看几次,因为它包含了很多信息!感谢詹姆斯的辛勤工作。我知道 ruby​​,所以我会读 + 你的 Jade 客户端看起来非常好 - 你的代码可读性很好,我很喜欢(python 接近 ruby​​,所以我可以阅读,使用 javascript 我尽量避免它能够)。我今年没能去ESUG,我希望下一个能去。希望你喜欢它!
    • 我认为最好的方法是移植 Jade 代码的相关部分。在 Smalltalk/X 中,您可以使用以下命令加载 Dolphin 的 .cls 文件: ``` '/tmp/Jade/sources/GciThreadSafeLibrary.cls' asFilename readingFileDo:[ :s | ChangeSet fromDolphinPACStream: s ] ``` 至于 FFI,快速浏览一下 Smalltalk/X 字节码编译器和 stc 编译让我觉得 Dolphin FFI 语法是开箱即用的。如果没有,从 Dolphin 到 St/X 语法的自动重构应该很简单。 ChangeSet fromDolphinPACStream: 可能还需要一些调整。
    • @J.V.感谢您的评论,将尝试这样做:)。顺便问一下 James Jade 和 Jadeite 有什么区别(Jade 的叉子,为什么需要叉子?)
    • @tukan,以 Jade[ite] 为例,GemTalk 想要开发一个支持 Rowan 的“官方”IDE,我们同意使用新名称进行分叉,以便该项目继续进行预计会有一些重大变化。是的,这可以通过一个分支来完成,但“官方”版本似乎不适合放在我的个人存储库中。我预计,一旦事情稳定下来,Jade 最终会融入 Jadeite 的功能。或者,也许我们会将 Jade 的一些更改(例如,对 Unicode 的支持)合并到 Jadeite 中。
    • @JamesFoster 我明白了,谢谢你清理它。 unicode,你的意思是 Jade 中的 UTF-16?我已经在 VS 2019 社区版中成功编译了 DolpinVMJade - 有一些小事情需要注意,但除此之外它编译得很好。
    猜你喜欢
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多