gpt4 book ai didi

c# - 大型机平面文件到 C# 类

转载 作者:行者123 更新时间:2023-11-30 22:13:59 25 4
gpt4 key购买 nike

我必须使用 IBM WebSphere 与 IBM 大型机进行通信。主机端的服务只能使用平面文件。

在我这边,我想使用 CQRS(命令/查询)

换句话说,我想序列化命令/查询并反序列化查询结果

我可以在场外使用标准反射来做到这一点,但我的问题是是否有更好的方法来做到这一点?

我可以使用动态吗?

Flatfile > ParsedObjectStructured > Dynamic type > static type

最佳答案

这将在很大程度上取决于平面文件的格式以及架构的工作方式 - 例如,它是自描述的吗?但是,在我看来,这里的大部分 工作都是理解平面文件格式(和模式绑定(bind))。从那里开始,“反序列化为静态类型”与“反序列化为动态类型”的选择有点没有实际意义,我想说反序列化为动态类型几乎没有意义,只需将其全部映射到静态类型类型。此外,如果文件格式需要规范,静态类型可以(同样,取决于文件格式的细节)是一个方便的地方来装饰类型以说“这是如何解释这个”。例如(我完全是在进行过程中编造的 - 不要指望这与您的格式有关):

[Frobber(Offset = 4, Format = DataFormat.LittleEndianInt32)]
public int Id {get;set;}

[Frobber(Offset = 0, Format = DataFormat.LittleEndianInt32)]
public int Index {get;set;}

[Frobber(Offset = 8, Format = DataFormat.FixedAscii, Size = 20)]
public string Name {get;set;}

[Frobber(Offset = 28, Format = DataFormat.Blob)] // implicit Size=16 as Guid
public Guid UniqueKey {get;set;}

其中 FrobberAttribute 只是您可能发明的用于指定文件格式的东西。当然,如果模式是在文件内部定义的,则可能没有必要。

再反射:如果数据的使用量相当小,基本反射就可以正常工作;但总的来说,反射可能非常昂贵。如果您需要它是最佳的,您可能希望实现考虑策略缓存(即只做一次发现工作)和元编程(将策略变成现成的 IL,而不是而不是在运行时产生反射开销)。

如果文件格式是一种常见/流行的格式,您可能会发现现有的工具可以读取该格式。如果没有,您可以自己动手,或者找一些喜欢编写序列化和元编程工具的疯子。这样的人确实存在...

关于c# - 大型机平面文件到 C# 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18714496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com