2010-08-11 24 views
6

Cấu hình ASP.NET xử lý phiên bản như thế nào? Tôi biết bởi vì dữ liệu được tuần tự hóa này có thể là một vấn đề mà với bảng nó không phải là.ASP.NET Profiles versioning?

Nó sẽ ném một số loại lỗi tuần tự hóa?

Ví dụ: Tôi lưu trữ đối tượng v1 vào cấu hình. Tôi cập nhật ứng dụng web của mình bằng phiên bản v2 mới nhưng cơ sở dữ liệu vẫn chứa đối tượng v1.

Điều gì sẽ xảy ra khi tôi cố gắng deserialize đối tượng v1 vào đối tượng v2? Và các giải pháp tốt nhất cho vấn đề này là gì?

Trả lời

3

Thông thường ASP.NET xử lý dữ liệu hồ sơ như một túi thuộc tính - vì vậy nó có thể bỏ qua thuộc tính (đã được lưu trữ trong kho dữ liệu) nhưng bị xóa khỏi cấu hình. Tương tự, đối với thuộc tính mới được thêm, nó sẽ sử dụng giá trị mặc định. Bây giờ, kiểu thuộc tính cũng sẽ quan trọng - nếu kiểu thuộc tính là lớp tùy chỉnh của bạn thì việc tuần tự hóa của nó sẽ được xử lý bởi XmlSerializer hoặc BinaryFormatter. XmlSerializer là một mặc định và thường là một serializer khoan dung (thiếu tài sản sẽ được bỏ qua vv). Bạn có thể sử dụng các thuộc tính để kiểm soát xml serialization. Trong trường hợp của BinaryFormatter, giống như serialization runtime và nếu bạn muốn hỗ trợ versioning, tốt nhất là bạn triển khai ISerializable và xử lý bất kỳ vấn đề versioning nào. Tôi không chắc chắn điều gì sẽ xảy ra trong trường hợp bạn có thuộc tính hồ sơ của một số loại A và sau đó bạn xóa loại đó. Tôi đoán là bạn sẽ nhận được một lỗi nhưng tôi không phải là ceratin về nó.

tôi thường thích để cuộn lên thực hiện của riêng tôi để hỗ trợ tính năng lý lịch thành viên vì

  1. Những điều như phiên bản vv có thể được điều khiển theo ý thích của tôi
  2. Lựa chọn sơ đồ lưu trữ và bảo quản có thể độc lập (điều này có thể là trong cấu hình ASP.NET theo tùy chỉnh nhà cung cấp tiểu sử)
  3. Nó có thể dễ dàng đưa vào ứng dụng lớp và dữ liệu hồ sơ cũng có sẵn cho bất kỳ khách hàng nào không phải là web nếu cần
  4. Mặc dù nó có nghĩa là phát minh lại bánh xe và có thêm nỗ lực, giá trị của nó cho bất kỳ phần mềm nào có thời lượng trên 2-3 năm.
  5. Tôi có thể kiểm soát chính xác thời điểm để lưu trữ/truy xuất dữ liệu hồ sơ từ lưu trữ dữ liệu.
Các vấn đề liên quan