Danh mục

Assemblies Hỗ trợ ngôn ngữ xuyên xuốt (Cross-Language Support)

Số trang: 10      Loại file: pdf      Dung lượng: 131.53 KB      Lượt xem: 10      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:

Trước tiên chúng ta biết Common Type System (CTS) là gì ? .NET định nghĩa thế nào các kiểu giá trị và các kiểu tham chiếu. Bố trí bộ nhớ của các kiểu dữ liệu. Nhưng CTS không đảm bảo kiểu mà nó định nghĩa từ bất kì ngôn ngữ nào, được sử dụng từ bất kì ngôn ngữ khác. Đây là vai trò của Common Language Specification (CLS). CLS xác định yêu cầu tối thiểu của các kiểu dữ liệu mà chúng được hỗ trợ bởi .NET language. ...
Nội dung trích xuất từ tài liệu:
Assemblies Hỗ trợ ngôn ngữ xuyên xuốt (Cross-Language Support) Assemblies Hỗ trợ ngôn ngữ xuyên xuốt (Cross-Language Support) Trước tiên chúng ta biết Common Type System (CTS) là gì ? .NETđịnh nghĩa thế nào các kiểu giá trị và các kiểu tham chiếu. Bố trí bộ nhớ củacác kiểu dữ liệu. Nhưng CTS không đảm bảo kiểu mà nó định nghĩa từ bấtkì ngôn ngữ nào, được sử dụng từ bất kì ngôn ngữ khác. Đây là vai trò củaCommon Language Specification (CLS). CLS xác định yêu cầu tối thiểucủa các kiểu dữ liệu mà chúng được hỗ trợ bởi .NET language.Chúng ta đề cập một cách ngắn gọn về CTS và CLS Trong chương nàychúng ta sẽ được học: Common Type System (CTS) và Common Language Specification(CLS) Ngôn ngữ độc lập trong hành động (Language independence inaction) tạo bởi C++, Visual Basic .NET và C# . Chúng ta quan sát mãMSIL để biết chúng được sinh ra từ trình biên dịch của chúng. Những yêu cầu của đặc tả ngôn ngữ chung (Common LanguageSpecification.).CTS và CLS Tất cả các kiểu dữ liệu được khai báo dưới sự chỉ đạo củaCommon Type System (CTS). CTS định nghĩa một bộ quy tắc mà trình biênđịch phải tuân thủ, tham chiếu, sử dụng, và lưu trữ cả hai kiểu tham khảo vàkiểu giá trị. Do đó CTS, các đối tượng được viết bằng các ngôn ngữ khácnhau có thể được tương tác lẫn nhau.Tuy nhiên, Không phải tất cả các kiểu đều sử dụng trong tất cả ngôn ngữ lậptrình. Để xây dựng các thành phần có thể truy cập từ tất cả ngôn ngữ .NET ,Đặc tả ngôn ngữ chung Common Language Specification (CLS) nên đượcsử dụng. Với CLS, Trình biên dịch có thể kiểm tra sự hợp lệ đoạn code trongđặc tả của CLS .Nhiều ngôn ngữ hỗ trợ .NET không chỉ hạn chế các tập con tính năngchung, nó được định nghĩa với CLS; thậm chí với .NET nó vẫn có khả năngtạo các thành phần mà không thể sử dụng từ các ngôn ngữ khác. .NET Framework đã được thiết kế với mục tiêu hỗ trợ đa ngôn ngữ.Trong suốt giai đoạn thiết kế .NET, Microsoft đã mời nhiều nhà sản xuấttrình biên dịch để xây dựng .NET languages cho chính họ. Chính Microsoftphân phối Visual Basic .NET, Managed C++, C#, J#, và JScript.NET. Thêmvào đó hơn hai mươi ngôn ngữ từ các nhà sản xuất khác nhau như COBOL,Smalltalk, Perl, và Eiffel. Mỗi loại đều có những thuận lợi riêng biệt vànhiều tính năng khác nhau. Các trình biên dịch của những ngôn ngữ này đềuđược mở rộng để hỗ trợ .NET. CLS là đặc tả những yêu cầu tối thiểu mà một ngôn ngữ phải hỗQuantrọng trợ. Có nghĩa là nếu chúng ta giới hạn các phương thức công cộng (public methods) của chúng ta cho CLS, thì tất cả các ngôn ngữ đang hỗ trợ .NET có thể sử dụng các lớp của chúng ta !Common Type System (CTS) Common Type System ( còn gọi là Common Type Specification, đặctả kiểu dữ liệu thông dụng), có nghĩa là ngôn ngữ trung gian IL(Intermediate Language) xuất hiện với một lô kiểu dữ liệu bẩm sinh(predefined, hoặc built-in) được định nghĩa rõ ràng. Trong thực tế, nhữngkiểu dữ liệu này được tổ chức theo một đẳng cấp kiểu (type hierachy), đ iểnhình trong môi trường thiên đối tượng. Lý do CTS rất quan trọng là, nếu một lớp được dẫn xuất từ một lớp nàođó hoặc chứa những thể hiện (instance) của những lớp khác, nó cần biết kiểudữ liệu mà các lớp khác sử dụng đến. Trong quá khứ, chính việc thiếu mộtcơ chế khai báo loại thông tin này là một cản trở cho việc kế thừa xuyênngôn ngữ. Loại thông tin này đơn giản không có trong tập tin .EXE chuẩnhoặc DLL. Một phần nào đó, vấn đề lấy thông tin về kiểu dữ liệu đã được giải quyếtthông tin qua metadate trong assembly. Thí dụ, giả sử bạn đang viết một lớptheo C#, và bạn muốn lớp này được dẫn xuất từ một lớp được viết theoVB.NET. Muốn làm được điều này, bạn sẽ yêu cầu trình biên dịch qui chiếuvề assembly mà lớp VB.NET đã được khai báo. Lúc này, trình biên dịch sẽdùng metadata trên assembly này để lần ra tất cả các phương thức, thuộc tínhvà vùng mục tin (field), v.v... liên quan đến lớp VB.NET. Rõ ràng là trìnhbiên dịch cần đến thông tin này để có thể biên dịch đoạn mã của bạn. Tuy nhiên, trình biện dịch lại cần đến nhiều thông tin hơn những gìmetadata cung cấp. thí dụ, giả sử một trong những phương thức trên lớpVB.NET được định nghĩa trả về một Integer - là một trong những kiểu dữliệu bẩm sinh trên VB.NET. Tuy nhiên, C# lại không có kiểu dữ liệu mangtên Integer này. Rõ là chúng ta chỉ có thể dẫn xuất từ lớp và sử dụng phươngthức này và sử dung kiểu dữ liệu trả về từ đoạn mã C# nếu trình biên dịchbiết làm thế nào ánh xạ (map) kiểu dữ liệu Integer của VB.NET lên một kiểudữ liệu nào đó được định nghĩa trên C#. Điều này có thể thực hiện được vì CTS đã định nghĩa những kiểu dữ liệubẩm sinh có sẵn trên Intermediate Language (IL), như vậy tất cả các ngônngữ tuân thủ .NET Framework sẽ kết sinh ra đoạn mã dựa cuối cùng vàonhững kiểu dữ liệu này. T ...

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