2012-02-23 13 views
7

Tôi đang học .NET framework và đang đọc qua Siêu dữ liệuTệp kê khai.Sự khác biệt giữa Siêu dữ liệu và Tệp kê khai

"Siêu dữ liệu là dữ liệu về dữ liệu và Tệp kê khai là dữ liệu về lắp ráp !!"

Q: Vì vậy, không hiển thị siêu dữ liệu?

Vậy sự khác biệt của nó là gì?

+0

Tuyên bố được trích dẫn đó có chất lượng đáng ngờ. Nó đưa ra một định nghĩa về "biểu hiện" trong ngữ cảnh cụ thể của .NET, nhưng thay vì làm tương tự cho thuật ngữ "siêu dữ liệu", nó rơi trở lại một định nghĩa rất chung chung của từ đó không hề có ích liên quan đến .NET. Trong .NET, "siêu dữ liệu" thường có nghĩa là một cái gì đó dọc theo dòng, "thông tin, nhúng trong một hội đồng, về tất cả các loại và các thành viên của họ được xác định trong hoặc tham chiếu từ hội đồng đó". Nguồn trích dẫn của bạn là gì? – stakx

Trả lời

13

Tệp kê khai duy trì thông tin về hội đồng như phiên bản, tên miền địa phương và tên mạnh tùy chọn nhận dạng duy nhất lắp ráp. Thông tin này hiển thị thông tin được CLR sử dụng. Tệp kê khai cũng chứa yêu cầu bảo mật để xác minh hội đồng này. Nó cũng chứa tên và băm của tất cả các tập tin tạo thành lắp ráp. Tệp kê khai assembly .NET chứa một mã băm mật mã của các mô-đun khác nhau trong assembly. Và khi lắp ráp được nạp, CLR tính toán lại hàm băm của các mô-đun trong tay và so sánh nó với hàm băm nhúng . Nếu băm được tạo ra trong thời gian chạy là khác nhau từ tìm thấy trong tệp kê khai, .NET từ chối tải assembly và ném một ngoại lệ.

Siêu dữ liệu có nghĩa là dữ liệu về dữ liệu. Siêu dữ liệu tạo ra các loại có sẵn trong hội đồng đó, tức là. các lớp, giao diện, các enums, cấu trúc, vv và các không gian tên chứa của chúng, tên của từng loại, phạm vi/phạm vi, lớp cơ sở của nó, các giao diện được triển khai, phương pháp và phạm vi của chúng, và thông số của mỗi phương thức , loại thuộc tính, v.v. Siêu dữ liệu lắp ráp được tạo bởi các trình biên dịch cấp cao tự động từ các tệp nguồn. Trình biên dịch nhúng siêu dữ liệu vào tệp đầu ra đích, một dll, một .exe hoặc một .netmodule trong trường hợp đa lắp ráp lắp ráp.

+0

vì vậy có biểu hiện siêu dữ liệu hay không? –

+2

cố gắng trả lời câu hỏi hoặc đề xuất các liên kết đến nơi có thể nhận được câu trả lời tôn trọng. tránh sao chép dán! –

+1

Không có Tệp kê khai Mastero nào không phải là siêu dữ liệu .., Manifest hoạt động ở cấp cao hơn i; e trên cấp độ lắp ráp để kiểm tra Tên, phiên bản và tất cả mạnh mẽ của chúng, và chấp nhận việc lắp ráp hoặc từ chối nó theo mã băm được tạo . Siêu dữ liệu là tất cả thông tin về các lớp, giao diện, v.v. như tôi đã đề xuất trong câu trả lời. Hy vọng bạn có một số cách này thời gian .. :-) –

0

Từ "Programming .NET Components, Second Edition" By Juval Lowy published by O'Reilly Page 39 đoạn đầu tiên:

Metadata:

Metadata là cách hoàn toàn mô tả những gì đang ở trong một assembly .NET. Việc đào sâu vào siêu dữ liệu sẽ tạo ra các loại có sẵn trong hội đồng đó, viz. các lớp, giao diện, enums, cấu trúc, v.v., và các vùng chứa không gian tên, tên của từng loại, phạm vi/phạm vi, lớp cơ sở của nó, giao diện được triển khai, phương thức và phạm vi của chúng và tham số của mỗi phương thức, loại thuộc tính, v.v. Việc lắp ráp metada được tạo ra bởi các trình biên dịch cấp cao tự động từ các tệp nguồn . Trình biên dịch nhúng siêu dữ liệu vào đầu ra mục tiêu tệp, một dll, một .exe hoặc một .netmodule trong trường hợp lắp ráp đa mô-đun . Trong trường hợp của một mô-đun đa mô-đun bao giờ mô-đun mà chứa IL phải có siêu dữ liệu nhúng trong nó để mô tả các loại trong mô-đun đó. Mỗi trình biên dịch nhắm mục tiêu cho.NET CLR là bắt buộc để tạo và nhúng siêu dữ liệu trong tệp xuất và rằng siêu dữ liệu phải ở định dạng chuẩn. .NET Reflection rộng rãi sử dụng thông tin siêu dữ liệu để biết thông tin loại động.

Siêu dữ liệu là thông tin bổ sung trong hội đồng được quản lý mô tả những thứ như loại, nhập tên, tên phương thức, v.v ... (về cơ bản, thông tin bạn có thể truy xuất từ ​​dịch vụ Phản ánh). Xem http://msdn2.microsoft.com/en-us/library/ms404430.aspx để biết thêm chi tiết.

hội Manifest:

Metadata mô tả các nội dung trong một hội đồng, trong khi manifest mô tả việc lắp ráp riêng của mình, cung cấp các thuộc tính logic chia sẻ bởi tất cả các mô-đun và tất cả các thành phần trong hội đồng . Tệp kê khai chứa tên lắp ráp, số phiên bản, ngôn ngữ và một tên tùy chọn xác định duy nhất lắp ráp. Thông tin này hiển thị thông tin được CLR sử dụng. Tệp kê khai cũng chứa các yêu cầu bảo mật để xác minh hội đồng này. Nó cũng chứa các tên và băm của tất cả các tập tin tạo thành hội đồng. Tệp kê khai lắp ráp .NET chứa băm mật mã của các mô-đun khác nhau trong hội đồng. Và khi lắp ráp được nạp, CLR tính lại hàm băm của các mô-đun trong tay và so sánh nó với mã băm được nhúng. Nếu hàm băm được tạo ra trong thời gian chạy khác với mã băm được tìm thấy trong tệp kê khai, .NET từ chối tải assembly và ném ra một ngoại lệ . Điều này khác với COM, dưới COM, có thể trao đổi tệp DLL gốc hoặc tệp EXE với một tệp khác có cùng loại Thư viện/Giao diện và gây hư hại cho hệ thống, bằng cách chạy mã độc hại. Tệp kê khai cũng được tạo tự động bởi trình biên dịch cấp cao từ các tệp nguồn của tất cả các mô-đun trong assembly . Tệp kê khai được nhúng vào chỉ một tệp vật lý và chỉ một lần vì tệp này phổ biến cho tất cả các mô-đun trong một hội đồng, trong khi siêu dữ liệu cần phải được nhúng tất cả các mô-đun. Trình biên dịch .NET CLR tương thích phải tạo tệp kê khai và nó phải ở định dạng tiêu chuẩn. Sử dụng tệp kê khai .NET nắm bắt thông tin về các assembly khác được tham chiếu . Điều này đảm bảo khả năng tương thích phiên bản và lắp ráp tương tác với bộ chính xác đáng tin cậy của các cụm khác mà nó mong đợi. Tệp kê khai chứa mọi tên assembly được đính kèm , khóa công khai của nó (nếu có tên mạnh), phiên bản và miền địa phương của nó. Trong khi chạy assembly này, .NET đảm bảo rằng chỉ những assembly cụ thể được sử dụng, và chỉ có các phiên bản tương thích mới được nạp.

"Tệp kê khai" là một cụm từ quá tải. Trong .NET, một "manifest assembly" là một số metadata trong một assembly mô tả các công cụ versioning. Xem tại đây http://msdn2.microsoft.com/en-us/library/1w45z383.aspx để biết thêm chi tiết.

bạn có thể đọc thêm về lắp ráp manifest here

Metadata về lắp ráp tổng thể và mô-đun được gọi là biểu hiện

+1

Nó được coi là thực hành tốt để bao gồm nguồn cho dấu ngoặc kép. Có phải [this] (http://kamleshsingh.wetpaint.com/page/Assembly+manifest,metadata) không? –

+0

oops xin lỗi. Để tôi kiểm tra lại. Bởi vì tôi đã googling này cả ngày và phát hiện ra một cái gì đó dễ hiểu. –

+0

Nguồn: dotNetFunda và MSDN –

0

Metadata mô tả các nội dung trong một hội đồng, trong khi các biểu hiện mô tả các lắp ráp chính nó, cung cấp các thuộc tính logic được chia sẻ bởi tất cả các mô đun và tất cả các thành phần trong assembly. Tệp kê khai chứa tên lắp ráp, số phiên bản, ngôn ngữ và một tên mạnh tùy chọn để nhận dạng duy nhất assembly.

3

Tệp kê khai: lưu trữ thông tin (như tên của hội đồng, phiên bản v.v.) về các cụm được CLR yêu cầu để tải các cụm.

Metadata: Nó lưu trữ các chi tiết của cụm như tên phương pháp, đó là thành viên, vv

Cả các tập tin được tạo ra tự động bởi trình biên dịch khi chuyển đổi mã để MSIL.

6

Dưới đây là câu trả lời đơn giản nhất.

Lắp ráp: Một hoặc nhiều Tệp bao gồm chương trình của bạn. Thông thường Exe hoặc dll hoặc kết hợp các tệp này và một số tệp khác

MetaData: Chứa cả hai 1) Siêu dữ liệu lắp ráp 2) Loại siêu dữ liệu.

1) Siêu dữ liệu lắp ráp còn được gọi là MANIFEST, Nó chứa tên, phiên bản, văn hóa, thông tin tên mạnh, thông tin lắp ráp tham chiếu ... v.v.

2) Loại siêu dữ liệu là loại dữ liệu được xuất và Phương thức lắp ráp.

enter image description here