2009-05-29 34 views
18

Tôi có một ứng dụng .net 2.0 C# ClickOnce và nó kết nối với dữ liệu của nó thông qua Dịch vụ Web. Tôi đã nói rằng một cách để có khả năng tăng tốc ứng dụng là tạo ra một hội đồng tuần tự hóa trước đó. Tôi có một số câu hỏi về mặt trận này.Lắp ráp tuần tự hóa. Có cần thiết hay không?

  1. Cài đặt mặc định là có tạo cụm nối tiếp tự động hay không. VS2005 sử dụng những tiêu chí nào để quyết định có nên tạo ra một hội đồng tuần tự hóa hay không? Nó có vẻ như nó không tạo ra theo cấu hình Debug, nhưng nó không theo cấu hình phát hành, nhưng tôi không thể nói chắc chắn và không thể thông tin ở bất cứ đâu.

  2. Hội đồng tuần tự hóa có thực sự cải thiện việc khởi động ứng dụng không? Cụ thể những gì nó cải thiện? Tôi thực sự cần một hội đồng tuần tự hóa?

Trả lời

13

Nó thực sự được hỏi "Tôi có sẵn tạo ra các cụm serialization và bao gồm nó trong dự án triển khai hoặc tôi sẽ rơi trở lại trên mặc định tạo ra các hội đồng một cách nhanh chóng?" Nói chung điều đó sẽ không làm tổn thương quá nhiều sau lần đánh đầu tiên hoàn hảo. Nơi mà nó có thể chơi trong là các hội đồng tuần tự hóa được tạo ra trong %SYSTEMROOT%\TEMP. Trong một số trường hợp, quy trình không thể truy cập, dẫn đến trường hợp ngoại lệ gây tử vong trong hầu hết các trường hợp.

4

Trong hầu hết các trường hợp, bạn không có khả năng thấy lợi ích to lớn từ việc này, đặc biệt nếu bạn giữ ứng dụng mở một lúc. Tạo trước một hội đồng tuần tự hóa chủ yếu giúp thời gian đầu tiên (trong thời gian tồn tại) mà bạn sắp xếp từng loại cụ thể dưới dạng xml.

6

Điều này không liên quan đến trường hợp của bạn, nhưng có một lý do chính đáng khác để tạo trước hội đồng tuần tự hóa - cần thiết khi lưu trữ mã của bạn trong SQL Server (ví dụ: SQLCLR). SQL Server không cho phép các assembly này được tạo động, vì vậy mã tuần tự hóa của bạn sẽ thất bại bên trong SQL Server.

1

Theo Intellitrace, chỉ lần đầu tiên bạn sắp xếp theo thứ tự XML một loại, một FileNotFoundException được ném và sau đó bị bắt. Điều này có nghĩa là CLR dự kiến ​​sẽ tải một assembly chứa tất cả các XML-Serializers cho Assembly cụ thể đó và khi nó không được tìm thấy, một FileNotFoundException được ném ra để báo hiệu XmlSerializer: "Hey! Tạo assembly darn!" và đây là những gì xảy ra trong thời gian đó "Catch" và sau đó các tập tin không tìm thấy trước đó tồn tại.

Tôi đã đọc ở đâu đó rằng việc sử dụng try-catch cho logic là một bài tập tồi. IDK tại sao Microsoft đã sử dụng cách tiếp cận này ...

Các vấn đề liên quan