Welcome to diepit.tk---> Hãy cùng khám phá---> Để-> Cùng nhau thành công & Cùng nhau tận hưởng

Tạo và sử dụng module

Bạn cần thực hiện các công việc sau:

Tăng hiệu quả thực thi và sử dụng bộ nhớ của ứng dụng bằng cách bảo đảm rằng bộ thực thi nạp các kiểu ít được sử dụng chỉ khi nào cần thiết.

Biên dịch các kiểu được viết trong C# thành một dạng có thể sử dụng lại được trong các ngôn ngữ .NET khác.

Sử dụng các kiểu được phát triển bằng một ngôn ngữ khác bên trong ứng dụng C# của bạn.

Sử dụng đối số /target:module (của trình biên dịch C#) để xây dựng mã nguồn C# của bạn thành một module. Sử dụng đối số /addmodule để kết hợp các module hiện có vào assembly của bạn.

Module là các khối cơ bản tạo dựng nên các assembly .NET. Module bao gồm một file đơn chứa:

Mã ngôn ngữ trung gian (Microsoft Intermediate LanguageMSIL): Được tạo từ mã nguồn C# trong quá trình biên dịch.

Siêu dữ liệu (metadata): Mô tả các kiểu nằm trong module.

Các tài nguyên (resource): Chẳng hạn icon và string table, được sử dụng bởi các kiểu trong module.

Assembly gồm một hay nhiều module và một manifest. Khi chỉ có một module, module và manifest thường được xây dựng thành một file cho thuận tiện. Khi có nhiều module, assembly là một nhóm luận lý của nhiều file được triển khai như một thể thống nhất. Trong trường hợp này, manifest có thể nằm trong một file riêng hay chung với một trong các module.

Việc xây dựng một assembly từ nhiều module gây khó khăn cho việc quản lý và triển khai assembly; nhưng trong một số trường hợp, cách này có nhiều lợi ích, bao gồm:

Bộ thực thi sẽ chỉ nạp một module khi các kiểu định nghĩa trong module này được yêu cầu. Do đó, khi có một tập các kiểu mà ứng dụng ít khi dùng, bạn có thể đặt chúng trong một module riêng mà bộ thực thi chỉ nạp khi cần. Việc này có các lợi ích sau:

Tăng hiệu quả thực thi, đặc biệt khi ứng dụng được nạp qua mạng.

Giảm thiểu nhu cầu sử dụng bộ nhớ.

Khả năng sử dụng nhiều ngôn ngữ khác nhau để viết các ứng dụng chạy trên bộ thực thi ngôn ngữ chung (Common Language RuntimeCLR) là một thế mạnh của .NET Framework. Tuy nhiên, trình biên dịch C# không thể biên dịch mã nguồn được viết bằng Microsoft Visual Basic .NET hay COBOL .NET trong assembly của bạn. Bạn phải sử dụng trình biên dịch của ngôn ngữ đó biên dịch mã nguồn thành MSIL theo một cấu trúc mà trình biên dịch C# có thể hiểu được—đó là module. Tương tự, nếu muốn lập trình viên của các ngôn ngữ khác sử dụng các kiểu được phát triển bằng C#, bạn phải xây dựng chúng thành một module.

Để biên dịch file nguồn ConsoleUtils.cs thành một module, sử dụng lệnh:

csc /target:module ConsoleUtils.cs

Lệnh này sẽ cho kết quả là một file có tên là ConsoleUtils.netmodule. Phần mở rộng netmodule là phần mở rộng mặc định cho module, và tên file trùng với tên file nguồn C#.

Bạn cũng có thể xây dựng một module từ nhiều file nguồn, cho kết quả là một file (module) chứa MSIL và siêu dữ liệu cho các kiểu chứa trong tất cả file nguồn. Ví dụ, lệnh:

csc /target:module ConsoleUtils.cs WindowsUtils.cs

biên dịch hai file nguồn ConsoleUtils.csWindowsUtils.cs thành một module có tên là ConsoleUtils.netmodule.

Tên của module được đặt theo tên file nguồn đầu tiên trừ khi bạn chỉ định cụ thể bằng đối số /out. Ví dụ, lệnh:

csc /target:module /out:Utilities.netmodule

ConsoleUtils.cs WindowsUtils.cs

sẽ cho kết quả là file Utilities.netmodule.

Để xây dựng một assembly gồm nhiều module, sử dụng đối số /addmodule. Ví dụ, để xây dựng file thực thi MyFirstApp.exe từ hai module: WindowsUtils.netmoduleConsoleUtils.netmodule và hai file nguồn: SourceOne.csSourceTwo.cs, sử dụng lệnh:

csc /out:MyFirstApp.exe /target:exe

/addmodule:WindowsUtils.netmodule,ConsoleUtils.netmodule

SourceOne.cs SourceTwo.cs

Lệnh này sẽ cho kết quả là một assembly gồm các file sau:

MyFirstApp.exe: Chứa manifest cũng như MSIL cho các kiểu được khai báo trong hai file nguồn SourceOne.csSourceTwo.cs.

ConsoleUtils.netmoduleWindowsUtils.netmodule: Giờ đây là một phần của assembly nhưng không thay đổi sau khi biên dịch. (Nếu bạn chạy MyFirstApp.exe mà không có các file netmodule, ngoại lệ System.IO.FileNotFoundException sẽ bị ném).

Trích từ "Các giải pháp lập trình C#"

Loading...

Đăng nhận xét

Cảm ơn các bạn đã ghé thăm blog của diepcothanh