BinaryFormatter
kullanıyorsanız, tam DTO'nun içerdiği montajı içeren verilerde adı yazın (türler her zaman derleme tarafından tanımlanır). Burada bir seçenek, her birinden başvuruda bulunduğunuz ayrı bir DTO kitaplığı oluşturmaktır - ancak sürümde BinaryFormatter
'un hala güvenilmez olduğunu unutmayın: DTO'larını düzenledikleri ve her şeyin çalışmayı bıraktıkları için insanların verileri kaybetmiş olduğunu gördüm.
Tipik olmayan bir seri hale getirici kullanmasını şiddetle tavsiye ederim; örneğin, XmlSerializer
/DataContractSerializer
/JSON.NET
/ServiceStack'ın JsonSerializer
veya protobuf-net. Bunların hepsi iyi çalışır ancak önemlisi iki farklı şekilde size savaşmazlar:
- oldukları çok sürüm dostu
- sen meclisleri arasındaki türlerini taşırsanız onlar umurumda değil
ile bile, seri hale getirilmiş tipler için ayrı bir DTO montajını sürdürmek en uygun olanıdır, ancak kuvveti sizin için değildir. Sonuç olarak, bu serileştiriciler OS/çapraz-sürüm/çapraz-dil/çapraz-CPU üzerinde çalışmaktan mutluluk duydukları için, sadece "farklı meclislerin" gerçeği "meh, her neyse" dir.
Anahtar teslimatı: BinaryFormatter
kırılgan olabilir. Uçuş verileri dışında hiçbir şey için asla tavsiye etmem (örneğin, iki AppDomain
örneği arasında remoting). Ben kesinlikle uzun bir süre için kalıcı olan herhangi bir şey için kullanmazdım, çünkü gelecekte yeniden yükleyebileceğimi garanti edemem.
.NET ikili seri hale getirme kullanıyorsanız, aslında aynı temel türüne (aynı DLL'deki gibi) başvuruyor olmanız gerekir. Farklı bir türe de aktarmanız gerekirse, farklı bir serileştirme protokolü kullanmanız gerekir. –
Seri hale getirilmiş sınıfın tanımını, her iki uygulamadan da referansladığınız (böylece sınıf tanımını paylaşan) ayrı bir sınıf kitaplığı derlemesine koymanız gerekir. –