Reference assemblies là gì

  -  

Trước khi nền tảng .NET được giới thiệu, họ đã phải giải quyết với chi phí assembly, DLL thường cung cấp các hàm dùng thông thường và COM DLLs cung cấp các lớp COM. Microsoft tự ra mắt cụm tự "DLL-Hell" để biểu thị những vấn đề truyền thống lâu đời với DLL, những sự việc này ngoài ra chúng ta vẫn biết sẽ là Thường những chương trình vận dụng bị giới hạn hoặc lỗi chính vì ứng dụng thiết lập gần duy nhất ghi đè một DLL lên ứng dụng trước đó, DLL này cũng được sử dụng do một ứng dụng...




Bạn đang xem: Reference assemblies là gì


Assemblies Assembly là gì ? Trước khi nền tảng .NET được giới thiệu, bọn họ đã phải giải quyếtvới tiền assembly, DLL thường cung cấp các hàm dùng tầm thường và COMDLLs hỗ trợ các lớp COM. Microsoft tự giới thiệu cụm tự "DLL-Hell" đểmô tả đều vấn đề truyền thống lịch sử với DLL, những vấn đề này nhịn nhường nhưchúng ta sẽ biết sẽ là Thường các chương trình vận dụng bị ngừng hoặc lỗibởi bởi vì ứng dụng cài đặt gần độc nhất ghi đè một DLL lên áp dụng trước đó,DLL này cũng được sử dụng vày một vận dụng khác. Thỉnh thoảng nó xảyra sự thiết đặt thay vậy một DLL bắt đầu cho một cái cũ chính vì sự thiết lập chươngtrình không khám nghiệm phiên phiên bản một cách bao gồm xác, hoặc phiên bản khôngthiết lập một cách thiết yếu xác. Bình thường chúng không tồn tại vấn đề gì nhưngthực sự chúng bao gồm sự khác biệt, đúng ra DLL mới yêu cầu được lùi lại tích hợpvới DLL cũ tuy vậy thỉnh thoảng không giống như vậy, nhiều lúc trường thích hợp này lạisảy ra quá thường xuyên.DLL Hell gốc rễ .NET đó là DLL Hell và toàn bộ vấn đề của nó làassemblies. Assemblies là bộ thiết đặt chính nó, gồm 1 hoặc nhiềufiles. Một assembly có thể là một đối kháng DLL hoặc EXE bao gồm cả metadata,hoặc nó hoàn toàn có thể đuợc tạo từ khá nhiều file khác, thí dụ, các file nguồn, metadata,DLLs, và một EXE. Sự thiết đặt của một assembly hoàn toàn có thể đơn giản như thể saochép tất cả các file của chính nó. Một tính năng mạnh mẽ của assemblies làchúng rất có thể là private hoặc shared. Với COM đây là sự khác hoàn toàn khôngtồn tại, trước đây gần như tất cả các nguyên tố COM phần đông được phân chia sè.Nếu bạn tìm tìm thành phần COM sống trong Registry hoặc sử dụngOleView,bạn đề nghị lục lội trong hàng trăm và sản phẩm trăm các thành phần. Chỉmột số nhỏ tuổi các thành phần đã được có mang để sử dụng từ một trong những ứngdụng, nhưng lại mỗi yếu tố phải gồm một khai báo toàn thể duy độc nhất vô nhị (globalunique identifier) (GUID).Có sự khác biệt lớn thân private với shared assemblies. Các nhà phạt triểnsẽ say mê hơn ví như chỉ bao gồm private assemblies. Ko có thống trị riêng, đăng ký,xác định phiên phiên bản và vậy phải cần thao tác làm việc với private assemblies. Chỉ duynhất áp dụng chúng có sự việc về phiên bạn dạng với private assemblies thì chínhlà vận dụng của bạn. Các thành private nhưng mà bạn sử dụng mà vận dụng củabạn ko được thiết lập cùng thời hạn với ứng dụng. Thư mục áp dụng cụcbộ được sử dụng cho những thành phần của assemblies, cho nên bạn không nêncó bất kỳ vấn đề về phiên bản. Ứng dụng khác chưa ghi đè lên trên privateassemblies của bạn. Tất yếu nó cũng giỏi khi khi thực hiện phiên phiên bản privateassemblies. Nó có ích khi biến hóa code, Nhưng vấn đề này không yêu cầutrong .NET.Khi sử dụng shared assemblies, Một vài ứng dụng hoàn toàn có thể sử dụng assemblynày và bao gồm sự lệ thuộc vào chúng. Với shared assemblies, bắt buộc thoả mãn mộtsố qui tắc. Một shared assembly phải gồm số phiên bạn dạng cụ thể, một tên duynhất với thường nó được thiết đặt trong global assembly cache (GAC).Các kỹ năng của AssembliesCác công dụng của assemblies có thể được cầm tắt như sau: Assemblies là miêu tả bạn dạng thân (self-describing). Nó không cầnthiết để đk để dìm thư viện từ nơi khác. Assemblies bao gồm metadatanó diễn tả assembly. The metadata bao gồm các kiểu sinh ra từ assembly vàmột manifest; bọn họ sẽ mày mò a manifest tại phần sau.

Xem thêm: Top 5 Video Huong Dan Tai Game Raft Thành Công 100%, Hướng Dẫn Cách Tải Và Cài Đặt Game Raft



Xem thêm: Xem Phim Bữa Tiệc Của Các Vị Thần Thuyết Minh, Feast Of The Gods Tập 30

Độc lập phiên bạn dạng (Version dependencies) được ghi lại bên trongassembly manifest. Bằng phương pháp chứa phiên bạn dạng của những tham khảoassemblies vào manifest của assembly, chúng ta có thể biết đúng mực sốphiên bản cả xem thêm assembly nó đuợc sử dụng trong suốt quá trình pháttriển. Phiên phiên bản của tham chiếu assembly nó được sử dụng để thông số kỹ thuật bởi cácnhà phạt trỉên và nhà cai quản trị khối hệ thống (system administrator).Phần sau củachương này bọn họ sẽ biết chúng thao tác như nuốm nào. Assemblies hoàn toàn có thể được hấp thụ side-by-side. Thực hiện Windows 2000chúng ta có từng bước một một những tính năng và ở đâu là sự biệt lập các phiênbản của thuộc DLL được thực hiện trong hệ thống .NET không ngừng mở rộng các tínhnăng mang đến Windows 2000, chất nhận được các phiên phiên bản khác nhau của cùngassembly để sử dụng bên phía trong một quy trình đơn giản, Vậy tiện ích ở đâu ?Nếu assembly A xem thêm version 1 của shared assembly được phân chia sẽ, vàassembly B áp dụng version 2 của shared assembly được phân tách sẽ, và bạnđang áp dụng cả hai assembly A và B, đoán coi versions của sharedassembly phân tách sẽ nào được sử dụng trong ứng dụng của người sử dụng - bạn phải cả hai, vàvới .NET cả nhị versions được nạp và sử dụng. Ứng dụng độc lập được đảm bảo sử dụng (vùng cài ứng dụng)application domains. Cùng với application domains một số các ứng dụng có thểchạy một cách tự do trong một đối kháng tiến trình. điểm yếu trong một ứngdụng cần thiết trực tiếp ảnh hưởng các vận dụng khác bên trong cùng tiếntrình. Sự thiết lập dễ dàng như sao chép file nó nhờ vào vào assembly.Xcopy hoàn toàn có thể sao chép đẩy đủ. Chức năng này có tên là zero-impactinstallation.Tại sao Microsoft Windows Installer (MSI) vẫn còn quan trọng.Tôi hay hỏi nguyên nhân Microsoft Windows Installer vẫn quan trọng trong khixcopy sẽ đủ để thiết lập các vận dụng .NET. Câu trả lời dễ dàng đó là chúngta hay muốn coppy nhiều file hơn một tệp tin khi setup các ứng dụngWindows.Thường chúng ta truy xuất ứng dụng từ Start menu, thiết lập thư mục bé củaProgram Files, họ làm vài chuyển đổi , hiển thị bạn dạng quyền, vân vân . .The Windows Installer cung cấp rất nhiều bản lĩnh thêm vào khi không thểgiải quyết với assemblies. Những ứng dụng áp dụng với chính Registrysettings, group policies để dễ ợt hơn trong quản lý nơi tín đồ sử dụngtruy xuất các tính năng riêng biệt biệt, advertisement để thiết lập các ứng dụngsau này, khi yêu cầu bởi vì user, cùng sữa chữa những file bị không nên lạc.Application Domains Application domain ("địa bàn hoạt động" của ứng dụng, như thể nhưnamespace là "địa bàn hoạt động" của các tên) là một đổi mới quan trọng mà.NET đem lại trước việc tiêu hao ký ức (gọi là overheah) khá nhiều để bảođảm các ứng dụng đề xuất được bí quyết ly (isolation) trọn vẹn với nhau, nhưngvẫn hoàn toàn có thể liên lạc cùng với nhau. Bạn cứ hình dung hai sân quần vợt nằm kế cận,và cả hai đều phải sở hữu người chơi. Sự việc là quả bóng của bên này hoàn toàn có thể nhảyqua bên kia, phá quấy cuộc chơi. Phải làm vắt nào để bí quyết ly nhị sân chơi. Mãi tới giờ, phương án duy tuyệt nhất để phương pháp ly đoạn mã là trải qua tiến trìnhprocess. Khi chúng ta khởi đụng một ứng dụng, thì vận dụng này chạy trongphạm vi một process Appliction Domain có thiết kế như là một cách để cách ly các cấu kiệnvới nhau, dẫu vậy không bớt thiểu hiệu năng hoạt động do bài toán trao thay đổi dữliệu giữa các process. Ý niệm nằm ẩn dưới là chia bất kể process như thế nào thànhmột số "địa bàn hoạt động vui chơi của ứng dụng (appliction domain). Mỗi applictiondomain tương ứng so với một ứng dụng đối kháng lẻ, và mỗi mạch trình (thread)thi hành sẽ tiến hành chạy vào một application domain đặc biệt nào đó. Nếu đầy đủ đoạn mã khả thi khác biệt đều chạy vào cùng không khí kýức của process, cụ thể là chúng bao gồm thể chia sẻ sử dụng dữ liệu vì theo lýthuyết chúng có thể thấy được dữ liệu của nhau. Mặc dù có chức năng nhưthế, nhưng .NET runtime bảo đảm an toàn là sẽ không còn xảy ra, trong thực tiễn thôngqua việc kiểm tra đoạn mã của mỗi vận dụng đang chạy bảo vệ đoạn mãkhông thể chạy không tính vùng dữ liệu được cấp phát riêng cho mình. Nhờ vấn đề kiểm tra chặt chẽ về kiểu dữ liệu của IL, nên các điều nhắc trên cóthể triển khai được. Trong phần lớn trường hợp, kiểu dữ liệu được sữ dụng sẽbảo đảm là cam kết ức sẽ không được tróc nã xuất một cách bất đúng theo lệ. Thí dụ, kiểudữ liệu kiểu phiên bản dãy (array) của .NET bảo đảm an toàn kiểm tra số lượng giới hạn thấp cùng cao(lower và upper bound) cấm đoán phép bản dãy chuyển động quá giới hạn.Ví dụ: DomainTest bao gồm trong mã nguồn chúng ta có thể download nhằm tham khảo.Trong lấy ví dụ như này kết quả sẽ trả về vùngdomain đang hoạt động.using System;namespace Wrox.ProCSharp.Assemblies.AppDomainsclass Class1public Class1(int val1, int val2)Console.WriteLine("Constructor with the values 0, 1" +" in domain 2 called", val1, val2,AppDomain.CurrentDomain.FriendlyName);static void Main(string<> args)Console.WriteLine("Main in domain name 0 called",AppDomain.CurrentDomain.FriendlyName);Console.ReadLine();