2012-10-05 15 views
9

Używam podglądu Azure Cache i trzeba zrobić kilka klas Serializable.Wada tworzenia klasy Serializable

Czy jest jakaś wada polegająca na tym, że dana klasa może być poddawana Serializacji - na przykład problem z wydajnością?

[Serializable] 
public class MyClass {} 

Znalazłem kilka powiązanych pytań, ale nie dotyczą one wad.

  1. Are all .NET exceptions serializable?

  2. Drawbacks of marking a class as Serializable

Dziękuję z góry

+1

Jedyną wadą, z którą się zetknąłem, jest to, że może uniemożliwić obfuscatorom zaciemnianie kodu. Jeśli klasa zostanie oznaczona jako Serializowalna, nazwy pozostaną bez zmian. – Rob

Odpowiedz

8

Nie, nie ma po prostu nieodłącznym napowietrznych w oznaczony jako [Serializable]. Jedyny problem, jaki mam, to to, że BinaryFormatter i NetDataContractSerializer są marnymi serializatorami, a większość innych serializerów nie jest zainteresowanych tą flagą (ok, mogę być stronniczy)

5

Zakładając, że mówisz o koszcie używania Serializable atrybut zamiast rzeczywistego procesu serializacji, jedną wadą byłoby to, że osoba trzecia normalnie zakłada, że ​​klasa jest przeznaczona do serializacji. Chociaż może tak być, jeśli tylko zaznaczysz, że jest to możliwe do serializacji (i istnieje szansa, że ​​strona trzecia może z nią współdziałać), to prawdopodobnie chcesz poświęcić czas na zapewnienie odpowiedniej klasy być serializowane w wydajny sposób. Więc z tego punktu widzenia jest to bardziej kompromis zasobowy niż techniczny.

Z technicznego punktu widzenia, jak powiedział Marc Gravell, samo użycie atrybutu nie będzie miało żadnych kosztów ogólnych.

Powiązane problemy