iyi haber; açıkladığınız şey (mevcut C# sınıflarına sahip olmak), protobuf-net'in beklenen kullanım durumudur. Tüm .proto maddeleri ("protogen", VS eklentisi, vs.) hepsi sonradan eklenmiştir. Protobuf-net'in çekirdeği onları bilmiyor ya da önemsemiyor.
protokol arabellekleri, uygulamalar arasında paylaşılan bir DSL (.proto, belirtildiği gibi) tanımlar ve (bazen) kod üretimi için kullanılır. İlk kez protobuf-net'i yazdığımda, kod-jenerasyon yönü benim en büyük kaygım değildi - sadece .NET geliştiricileri genellikle “ilk sözleşme” yerine “ilk uygulama” dan suçlu (kendimi dahil ettim). Sonuç olarak, protobuf-net 'un çalışması içinproto dosyalarına gerek yoktur; atıfta bulunulan bir sınıf, açık bir şekilde serileştirmek/serpiştirmek için yeterlidir. Sadece Serializer.Serialize
, .Merge
ve .Deserialize
(vb.) Kullanın.
Bu; o içermez bazı geliştirilen altında ve bunun için deneysel destek çok:
string proto = Serializer.GetProto<YourType>();
Bu tamamlanmasına daha çok, ama basit türleri için çalışabilir. Başarısız olduğu bazı özel durumlarınız varsa, bana bildirin (bir yorum ekleyin veya bir sorunu kaydedin). Ancak; çoğu zaman, .proto ile ilgilenen insanlar .proto ilk yazıp oradan çalışacaklardır.
İşe göre dekore edilmiş tiplere örnekler project home page; WCF öznitelikleri, xml öznitelikleri veya protobuf-net öznitelikleri kullanıp kullanmamanız tamamen size bağlıdır (ikincisi miras ve sayısal düzenler gibi bazı özel serileştirme noktaları üzerinde daha fazla denetim sağlasa da).
Harika, bu benim gereksinimlerime o zaman uygun olurdu. Bununla birlikte, bir şey daha, Protobuf-Net Protobuf'un tüm özelliklerini uygular mı? –
Güzel-çok; tel formatı spec, dürüst olmak gerekirse, geniş değildir. Ayrı bir propro uygulamasıyla ortak çalışmak mı istiyorsunuz? İyi çalışmalı, ama * bir .proto (diğer uç için) varsa, bir DTO (.proto'dan) oluşturmanızı ve türünüzden şemasını yapmanızı tavsiye ederim. Aynı zamanda yaratıcı olur ve protobuf-net'in kalıtımı desteklemesine izin verir (** 'nin bir kısmı değil .proto spekülasyonu), ancak diğer istemcilerle tam etkileşime izin veren bir şekilde yapılır. –
Başka bir uygulama ile birlikte çalışmak istemiyorum. Protobuf-ağı, iki uygulama arasında bütün bir nesne hiyerarşisini serileştirmek/serpmek için verimli bir mekanizma olarak kullanacağım. –