我们正在使用自定义智能卡,通过COM(通过USB)接口读取和写入数据。正在使用交易智能卡写作的好主意?
每当我们添加或更新记录时,需要在卡上进行一些管理以确保更新其他信息(主要是指针)。卡上的信息基本上是一个64k字节的数组。在单个添加或更新时,数据在字节数组中的各个点处被读取和写入。
我想强制执行一个方法来完成原子化的整个更新。如果我们处于写入过程中,并且智能卡被拔出,数据很容易被破坏,尤其是因为实际上它只是一个连续的字节数组,所以一个字节不合适会混淆整个数组的有效性。我想尽可能少地发生这种情况。
我查看了TransactionScope
,但是这主要看起来是用于数据库事务。像这样的机制对我的问题有用吗?或者我应该考虑其他方法来强制我的软件块以有效的方式读取和写入?
我们使用的智能卡是由政府机构提供给我们的,因此不会更改。它有一个内存芯片,就像你在你的SIM卡上看到的一样,你的电话也有很多银行卡(相对于磁条)。 该卡使用ISO-7816-15规格设计。卡和卡的接口最初是由另一个程序员设计的,他基本上对我说:我只处理进入的字节和字节,我不做任何验证。这对我来说似乎很奇怪,因为我认为他的责任是不让卡片变得如此容易损坏。显然它是我的。
我会研究更多的技术规格,虽然这导致我走出了我的舒适区,除非我绝对需要,我不想惹他的代码。也许这张卡有比目前做的更好的方法。
有一个简单的READ命令,它只支持一次读取231个连续的字节。当我问他为什么这么做,为什么我不能一次性得到整个字节数组时,他说这就是所有的卡都支持的。所以阅读整个文件真的很尴尬。它变得更糟,因为一旦它“满”,它应该跳到数组的开头。 :S
写一个事务性文件系统(2阶段提交)(如果设备SDK不具有一个)... – 2013-04-22 08:08:18
为什么-4?我尽力解释问题所在。 – Davio 2013-04-22 08:30:57