如何将代码(在这种情况下为类)发送到服务器/程序并接收输出

Posted

技术标签:

【中文标题】如何将代码(在这种情况下为类)发送到服务器/程序并接收输出【英文标题】:How do I send code ( a class in this case) to a server/program and receive output 【发布时间】:2011-02-17 15:27:01 【问题描述】:

情况如下:

我有一个庞大的数据集,需要快速访问。这是一个金融数据集,所以基本上它的设置方式是,在每个时间点,你都有数千只股票的数据。现在,将这些数据加载到程序中需要一段时间(20-40 秒),我希望避免每次更改代码时都必须这样做。

基本上,我有一个想法,我想知道它是否有意义/是否最佳。我正在考虑设置某种服务器,该服务器已加载所有数据和所有对象定义,然后从第二个程序/客户端,我想将预定义类型的类(策略类)发送到服务器,让服务器运行代码,然后让服务器将测试结果发回给我。

在这种情况下,我正在创建交易策略,因此我有一个抽象类来定义“策略”需要什么。我有一个市场模拟器,每次日期变化时都会调用派生的“策略”,然后策略买入或卖出股票,然后将策略的利润存储在某个结果对象中。所以我希望能够对策略部分进行编码,将其发送过来,然后接收结果部分。我想避免每次更改策略对象中的参数或原始代码时都加载所有数据。

我希望这对某人有意义,如果不是很清楚,我很抱歉。请让我知道这是否可能,然后,我将如何进行谷歌搜索?我什至不知道在这里搜索什么。

【问题讨论】:

离题; 20-40秒的加载时间;在这种情况下加载什么?我也许可以为您提供一些建议,以显着减少此时间 好吧,基本上数据的格式化方式就是这样。我有一个 csv 文件,其中每一行都有一个数据点。一个数据点由日期、代码、价格、idNum 组成,以保持简单。所以我所做的是我为每一列创建了序列化文件,当程序打开时,它循环遍历列并创建单独的“Stock”对象,然后将这些对象保存在“Stocks”对象中(本质上是一个带有 int 键的字典和股票价值)。有什么建议吗? 【参考方案1】:

我会定义一个接口,服务器将使用它来调用您的策略,然后在单独的程序集中实现每个策略。

然后,服务器会将每个程序集加载到单独的 AppDomain 中并在那里执行它。这将为服务器进程提供一些保护,防止策略实现中的错误,但更重要的是,它可以卸载程序集。

【讨论】:

好的,我会调查的。我想这就是我要找的。我用谷歌搜索了在单独的 AppDomains 中加载程序集,它看起来很有希望。 嘿劳伦斯,我有一个问题要问你。我正在尝试执行以下操作。我在另一个项目中编写我的策略,然后编译该文件。然后我想将它导入“服务器”程序,运行给定的策略,然后重复。但是,我遇到了文件访问问题。当我的“服务器”运行时,我无法编译和复制文件 (.dll)。我查看了影子文件,但这似乎没有帮助。有任何想法吗??提前致谢。 重要的是,策略程序集的 DLL 仅加载到服务器上的新 AppDomain 中,并且您永远不要在服务器的主 AppDomain 中使用任何反射方法来查看该程序集,因为这样做会锁定.dll 文件。其次,当你想用更新的版本覆盖 .dll 时,服务器必须先卸载子 AppDomain 才能解锁文件。 嘿劳伦斯,因为有点离题,我开始了一个新线程。我发布了我正在处理的代码(模拟)。我想知道您是否可以快速查看一下并让我知道我哪里出错了。再次感谢。这是链接:***.com/questions/5034654/…【参考方案2】:

这听起来像是一场潜在的安全噩梦,但如果这是你想要的......

考虑将序列化的工作流发送到服务器执行。这只是一个 XML 块。

【讨论】:

实际上这仅在我的机器上使用,所以我不关心安全性。我只是在测试不同的策略,我想避免每次都重新加载数据。这不是以任何方式分发的。

以上是关于如何将代码(在这种情况下为类)发送到服务器/程序并接收输出的主要内容,如果未能解决你的问题,请参考以下文章

如何在不放弃主线程的情况下为 Python 使用 CoreBluetooth

如何从一个数组中提取零并将非零部分保存到另一个数组?

如何在不使用“立即购买”按钮的情况下为自定义购物车集成 Paypal IPN

如何在不将其备份到 iCloud 的情况下为我的应用程序提供演示数据?

如何在不使用处理程序的情况下使用 ajax 从客户端将文件发送到服务器端?

如何显示在这种情况下为 1 的第一站?