簡體   English   中英

大型機平面文件到C#類

[英]Mainframe Flat file to C# classes

我必須使用IBM WebSphere與IBM主機通信。 主機側的服務只能使用平面文件。

在我這邊,我想使用CQRS(命令/查詢)

換句話說,我想序列化命令/查詢並反序列化查詢結果

我可以在標准反射場上做到這一點,但是我的問題是,是否有更好的方法呢?

我可以利用動力嗎?

Flatfile > ParsedObjectStructured > Dynamic type > static type

這將取決於哪些平面文件的格式是一個可怕很多 ,並且架構是如何工作的-它是自描述的,例如? 但是,在我看來,這里的大部分工作都是在了解平面文件格式(以及架構綁定)中。 從那里開始,選擇“反序列化為靜態類型”還是“反序列化為動態類型”有點兒爭議,我想說的是,將反序列化為動態類型的一點點就是必須將所有內容都映射到靜態類型類型。 此外,靜態類型可以 (再次,根據文件格式的細節)是裝飾類型說“這里是如何解讀這個”,如果文件格式需要規范一個方便的地方。 例如(隨着我的前進,我將完全彌補這一點-不要指望這與您的格式有關):

[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),而不是在以下位置產生反射開銷運行)。

如果文件格式是常見/流行的文件格式,則可能會發現已有讀取該格式的工具。 如果沒有,您可以自己動手,也可以找一些喜歡寫序列化和元編程工具的瘋子。 這樣的人確實存在...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM