Danh mục

Assemblies Cấu trúc Assembly

Số trang: 12      Loại file: pdf      Dung lượng: 130.22 KB      Lượt xem: 2      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Một assembly thường bao gồm nhiều thành phần như:Một Assembly metadata mô tả trọn vẹn assembly Một Type Metadata mô tả các kiểu dữ liệu và các phương thức Một MSIL code là đoạn mã viết theo ngôn ngữ trung gian Các Resources là những tài nguyên như hình ảnh, chuỗi . . .
Nội dung trích xuất từ tài liệu:
Assemblies Cấu trúc Assembly Assemblies Cấu trúc AssemblyMột assembly thường bao gồm nhiều thành phần như: Một Assembly metadata mô tả trọn vẹn assembly Một Type Metadata mô tả các kiểu dữ liệu và các phương thức Một MSIL code là đoạn mã viết theo ngôn ngữ trung gian Các Resources là những tài nguyên như hình ảnh, chuỗi . . .Được thể hiện như hình dưới đây : Hình trên đây chỉ gồm một file component.dll duy nhất, tất cả nằm trọntrong một tâp tin.Tuy nhiên một assembly cũng có thể trải dài trên nhiều tập tin mà ta gọi làmultifile assembly Ở hình dưới đây assembly được trải dài trên ba tập tin vàba tập tin kể trên hình thành một assembly duy nhất.Metadata là gì ? Metadata là thông tin được lưu trữ trên assembly mô tả những kiểudữ liệu và những phương thức thuộc assembly cung cấp những tin tức hữuích khác liên quan đến assembly .Chính nhờ metadata nên các assembly thường được gọi là seft-describing(mô tả bản thân) vì nó mô tả một cách trọn vẹn mỗi module.Assembly Manifests Mỗi assembly đều có một mainfest được gắn liền còn được gọi làassembly metadata mô tả những gì được chứa trong assembly, bao gồm : Tên nhận diện (identity name) Một danh sách các tập tin thuộc assembly. Một assembly đơn lẻ phảicó ít nhất một tập tin, nhưng có thể chứa số các tập tin. Một danh sách các assembly được qui chiếu. tất cả các tập tin khácđược dùng bởi assembly này bao gồm số phiên bản và các khoá dùng chung.Khoá dùng chung được sử dụng duy nhất để xác định assemblies. Một bộ các yêu cầu cho phép (permission request) những quyền hạncần có dể được phép chạy assembly này. Một danh sách các kiểu dữ liệu và nguồn lực trong assembly, một bảnđồ nối liền các kiểu dữ liệu public với các đoạn mã thi công.Private and Shared Assemblies Assemblies nằm ở hai dạng: private assembly và shared assembly.Dạng thứ nhất private assembly là một tập hợp (collection) những kiểu dữliệu chỉ dành riêng cho một ứng dụng sử dụng. Dạng thứ hai sharedassembly thì lại được chia sẽ sử dụng bởi nhiều ứng dụng.Viewing Assemblies Assemblies có thể được hiển thị khi sử dụng tiện ích command -lineildasm dưới hỗ trợ của MSIL . Một assembly được mở khi bắt đầu ildasmtừ command_line với đối số assembly hoặc chọn lựa từ File | open menuhình sau sẽ miêu tả một ildasm khi chúng ta xây dựng HelloCSharp.exe. hiển thịildasm the manifest, và HelloCSharp type trongWrox.ProCSharp.Assemblies.CrossLanguage namespace. Chúng ta có thểthấy the version number, và thuộc tính assembly ngay khi mở assembliesvà versions của chúng. Mở phương thức của lớp , chúng ta có thể thấyđuợc đoạn mã MSILildasm SymbolsCác kí hiệu được sử dụng với ildasm trình bày dưới đây:Symbol Description Biểu diễn một namespace. Biểu diễn một kiểu tham chiếu một lớp.Tương tự các ký hiệu được sử dụng bởi các kiểu giá trị, nó có màu sáng Biểu diễn một phương thức nhận và thiết lập các accessors của một thuộc tính; S trong đồ hoạ có nghĩa là phương thức tĩnh Biểu diễn một trường Biểu diễn một sự kiện Biểu diễn một thuộc tính Có nghĩa là có nhiều thông tin có giá trị như thông tin manifest hoặc thông tin về miêu tả một lớpXây dựng (Building Assemblies) Chúng ta vừa biết được assembly tiếp theo chúng ta biết cách để xâydụng chúng. chúng ta sẽ xây dựng xuyên suốt bời vì .NET có khả năng thihành assembly phức tạp.nhưng chúng ta hãy xem trường hợp cụ thể choassemblies.Tạo các Modules và Assemblies Tất cả dự án (project) C# trong Visual Studio .NET đều tạo mộtassembly. Cho dù bạn chọn một kiểu dự án DLL hoặc EXE , một assemblyluôn được tạo. Với trình biên dịch command-line C# csc, Nó cũng có khảnăng tạo modules. Một module là một DLL assembly không thuộc tính(nên nó không có assembly, nhưng nó được thêm vào một assemblies lúcsau). Dòng lệnh như sau:csc /target:module hello.csTạo một module hello.netmodule. Nó có thể nhìn thấy module này khi sửdụng ildasm. Một module cũng có một manifest, Nhưng chúng không có phần.assembly bên trong the manifest (ngoại trừ assemblies nội , Chúng đượckham khảo), Vì một module không có assembly thuộc tính. Nó không thểđược cấu hình versions hoặc chấp nhận với modules; Chúng chỉ có thể tạiassembly gốc. Trong manifest của module, kham khảo đến assemblies cóthể được tìm thấy.Để so sánh modules của assemblies, Ta tạo một lớp A và biên dịch nó:csc /target:module A.cs Biên dịch tạo ra một file A.netmodule, Nó không có thông tin c ủaassembly (như chúng ta thấy khi sử dụng ildasm nhìn thấy ở manifest). Themanifest của module miêu tả kham khảo assembly mscorlib và the .moduleentry: Tiếp theo ,Ta tạo một assembly B nó bao gồm module A.netmodule.Nó không cần thiết source file để sinh ra assembly này. Dòng lệnh sinhassembly là:csc /target:library /addmodule:A.netmodule /out:B.dll Khi nhìn vào assembly sử dụng ildasm, chỉ có một manifest có thể thấy.Trong manifest, assembly mscorlib là kham khảo .Tiếp theo chúng ta thấyassembly section với một thuật toán (algorithm) và version. số lượngalgorithm phụ thuộc loại algorithm được sử dụng để tạo ra code củaassembly. Khi tạo một assembly lập trình đi vào chọn lựa algorithm. Phầncủa manifest là một danh sách tất cả modules đang thuộc assembly. Ta thấy.module A.netmodule phụ thuộc assembly. Các lớp xuất ra ngoài từ cácmodules là phần assembly manifest; Mục đích của modules là cái gì? Modules có thể giúp khởi động nhanhhơn assemblies bởi vì không phải tất cả ở trong một file ...

Tài liệu được xem nhiều: