Tôi sử dụng một XmlSerializer
để tuần tự hóa/deserialize một số đối tượng. Vấn đề là hiệu suất. Khi lược tả, sử dụng XmlSerializer
làm cho ứng dụng của chúng tôi mất thêm 2 giây để bắt đầu. Chúng tôi lưu trữ XmlSerializer của chúng tôi và sử dụng lại chúng. Chúng tôi không thể sử dụng sgen.exe vì chúng tôi đang tạo XmlSerializer với XmlAttributeOverrides
.Cải thiện hiệu suất của XmlSerializer
Tôi cố gắng sử dụng thay thế tuần tự hóa như Json.Net và, lúc đầu, nó hoạt động rất tốt. Vấn đề là chúng ta cần phải tương thích ngược để tất cả các xml đã được tạo cần được phân tích cú pháp chính xác. Ngoài ra, đầu ra serialization đối tượng phải là Xml.
Để tóm tắt:
- tôi nhận dữ liệu Xml đăng bởi một XmlSerializer.
- Tôi cần phải deserialize dữ liệu Xml và chuyển đổi nó thành một đối tượng.
- tôi cần phải serialize đối tượng vào Xml (lý tưởng một định dạng XML như một một XmlSerializer sẽ làm)
Dữ liệu XML của bạn chứa thẻ mở '' và thẻ đóng ' DatastoreHistory>'. Tôi cho rằng đó là lỗi đánh máy. Hơn nữa trong câu hỏi của bạn, bạn xác định định dạng của dữ liệu đầu vào, nhưng không rõ ràng định nghĩa định dạng của đầu ra JSON. Chính xác như bạn có thể trình bày cùng một thông tin ở định dạng XML khác nhau, bạn có thể tạo ra dữ liệu JSON khác nhau với tập thông tin tương đương, nhưng các định dạng khác nhau. Tôi nghĩ bạn nên xác định rõ hơn định dạng của dữ liệu đầu ra. –
Oleg
Sẽ tốt nếu bạn cũng xóa hạn chế "Tôi không thể sử dụng XmlSerializer". Nếu lý do chỉ là hiệu suất, thì có rất nhiều cách để cải thiện hiệu suất, sử dụng sgen.exe hoặc bằng cách thực hiện giao diện 'ISerializable'. Điều gì là không rõ ràng nhất trong câu hỏi: tại sao bạn có định dạng đầu vào rất lạ nếu dữ liệu. Bạn có một tệp XML dài hay bạn có rất nhiều tệp như vậy? Thông thường, người ta có thông tin ban đầu trong cơ sở dữ liệu. Vậy tại sao bạn cần đầu vào XML lạ thay vì truy cập vào dữ liệu * gốc *? – Oleg
Tôi cập nhật câu hỏi của mình để đại diện hơn bởi vấn đề – Melursus