Đang tải dữ liệu...
ParkOur Việt

 Bản tin | Bài viết | Thư viện | Diễn đàn | Giới thiệu | Liên hệ | Tìm kiếm 
  Trang chủ  >  Diễn đàn .NET Việt Nam  >  Công nghệ nền tảng .NET/Mono  >  Căn bản về .NET Framework
  Căn bản về .NET Framework
Trang:  1/3    Sau >  |   Cuối >>
  Căn bản về .NET  14781 / 20
Đỗ Hoàng Tùng
Mới học .NET
Đăng ký:  30/05/2005
Tham gia:  30/05/2005
Điểm:  458
Bài:  118
  Gửi lúc:  23/07/2005 12:58:00 AM
NET gồm có hai phần: FrameworkIntegrated Development Environment (IDE). Framework cung cấp tất cả những gì cần thiết căn bản. Chữ Framework có nghĩa là cái Khung hay khung cảnh trong đó ta dùng những hạ tầng cơ sở theo một qui ước nhất định để công việc trôi chảy. Còn IDE cung cấp một môi trường giúp ta triển khai dễ dàng, nhanh chóng hơn. Nếu không có IDE ta cũng có thể dùng Notepad và line commands để triển khai nhưng nó chậm hơn. Do đó, nếu có chỗ nào IDE genareted code có vẽ quá rắc rối, bạn nên trở về Framework để xem mình thật sự tối thiểu cần những thứ gì. Vì nói cho cùng, Framework là quan trọng nhất, còn IDE bất quá chỉ là một công cụ gắn lên phía trên Framework thôi. Trong .NET, C#VB.NET đều dùng cùng một IDE.
Thứ nhất, ta thấy Framework của .NET gói Operating System (OS) lại, khiến lập trình viên không phải quan tâm đến những việc liên hệ đến OS như file handling và memory allocation. Nó cho ta mọi tầng lớp triển khai phần mềm từ việc trình bày (presentation) cho đến các bộ phận (components) và dữ kiện (data).
Thứ hai, .NET đã được thiết kế từ con số không để giúp ta có thể lập trình cho Internet dễ dàng như cho desktop.

Tầng dưới cùng

Trong hình trên, ở tầng dưới chót là Common Language Runtime (CLR) . Ðây là trung tâm điểm của .NET Famework, nó là hầm máy để chạy các năng tính của .NET. Nó gồm có một hệ thống chung cho data types (các loại dữ kiện) để giúp việc thừa kế từ các ngôn ngữ lập trình khác nhau có thể thực hiện đuợc.
Ngoài việc allocation và management of memory, CLR còn giữ các refrerence đến objects và đỗ rác (handle garbage collection), tức là thâu lại các mảnh vụn memory không cần dùng nữa. Trước đây, mỗi khi một DLL đuợc loaded vào memory, system sẽ ghi nhận có bao nhiêu task dùng nó để khi task cuối cùng chấm dứt thì system unload DLL và trả lại phần memory nó dùng trước đây để system dùng cho chuyện khác. Chớ nếu allocate memory để dùng mà không nhớ dispose nó thì sẽ bị memory leak (rỉ ), lần lần ta dùng hết memory, bị bắt buộc phải reboot OS. Nhưng bây giờ .NET dùng một process độc lập để làm việc garbage collection. Cả hai cách góp lại memory nầy đều có ưu và khuyết điểm tùy theo tình huống.
CLR có thể đuợc trình bày chi tiết hơn như dưới đây:

.NET cho phép các ngôn ngữ lập trình khác nhau có thể được compile ra một ngôn ngữ trung gian, gọi là Microsoft Intermediate Language (MSIL) hay gọi tắt là Intermediate Language (IL), giống giống như p-code hay Java Byte-Code. Nếu trong Java ta cần Java Vitual Machine thì ở đây ta cần CLR để chạy chương trình. Ðộc lập với CPU hardware, IL code chạy trong CLR đuợc nói là managed code. Tức là CLR lãnh trách nhiệm dòm ngó, không cho code làm bậy như nhảy đến một chỗ không tưởng, viết bừa chồng lên memory của người khác hay đi ngoài giới hạn của một array.
Khi IL code chạy, nó đuợc chuyển ra machine language của target CPU bằng một Just-in-Time (JIT) Compiler. Trong .NET, Microsoft yểm trợ các ngôn ngữ C++, JScript, VB.NET (còn gọi là VB 7) và C# (đọc là C sharp, như nốt C với dấu thăng trong âm nhạc), một ngôn ngữ mới do guru Anders Hejlsberg chế ra. Hejlsberg là người thiết kế Delphi ở Borland trước đây.
Microsoft đã bỏ J++. Người ta nói hầu hết .NET Framework đuợc viết bằng C#, có lẽ rất nhiều code của MFC (Microsoft Foundation Classes) và J++ Class libraries đều đuợc port qua C# một cách dễ dàng vì C# rất giống Java.
Một số công ty đang hợp tác với Microsoft để triển khai các ngôn ngữ Cobol, Eiffel, Lisp, Python và Smalltalk cho CLR. Công ty Rational, hảng bán công cụ nổi tiếng UML Rose, sắp hoàn thành một Java to IL compiler. Dĩ nhiên, ta biết đây chỉ là một chiêu thức tiếp thị của Microsoft mà thôi. Chớ nói lập trình bằng Java mà không hưởng những phúc lợi của J2EE platform APIs như RMI (Remote Method Invocation), JDBC (Java Database Connectivity), JSP (Java Sever Pages), .v.v.. thì như nói trong tiếng Anh có câu "the syntax says Java. but Java it ain't!" (cú pháp là Java, nhưng chả là Java gì cả).
Thật ra, trên lý thuyết, muốn thêm một ngôn ngữ lập trình mới vào .NET ta chỉ cần làm sao ngôn ngữ theo đúng qui ước ngôn ngữ của IL gọi là Common Language Specification (CLS), rồi viết một compiler để compile từ ngôn ngữ ấy ra IL. Nói thì dễ, nhưng để Visual Basic comply với CLS, Microsoft đã biến dạng VB6 ra VB7 mà lơ mơ chúng ta nhận không ra là Visual Basic.
Nói tóm lại, .NET chỉ yểm trợ một ngôn ngữ duy nhất, IL. Qua IL ta có inheritance lai giống giữa các ngôn ngữ khác nhau. Ở tầng IL ta có debugger dùng cho mọi ngôn ngữ.
Trong Framework, các classes cung cấp tất cả các dịch vụ và APIs cần thiết cho việc triển khai lập trình ứng dụng. Chúng được sắp xếp theo tầng lớp (hierarchy) và tự có documentation (cẩm nang).



Example of Base Framework Class Hierarchy

Trong Framework, application code đuợc compile thành Assembly. Một assembly gồm một hay nhiều modules và một Manifest để tự giới thiệu cái assembly.


Tức là mỗi assembly phải có một manifest. Có thể nó nằm riêng trong một file hay nằm bên trong một module.
Manifest chứa những tin tức sau đây:
  • Tên và Version number của assembly
  • Những assembly khác (kể cả version number của assembly) mà assembly nầy tùy thuộc vào để chạy
  • Types (classes và members) mà assembly nầy cho xuất khẩu
  • Assembly nầy đòi hỏi điều kiện an ninh nào (security permissions)
Manifest cho phép ta dùng hơn một version của assembly (tương đương với DLL trước đây) cùng một lúc. Từ đây không còn register DLL nữa. Thay vào đó, ta chỉ cần copy các assembly vào một subfolder /bin của chương trình chính.

Tầng giữa

Tầng giữa của Framework gồm những dịch vụ tổng quát thiết yếu của system trong tương lai, hy vọng chúng sẽ được trở thành chuẩn trong kỹ nghệ như ADO.NETXML. Các dịch vụ nầy có thể phục vụ tất cả các ngôn ngữ lập trình. ADO.NET là ADO đuợc kiện toàn hơn để tiện cho Internet. Một đặc điểm của lập trình trên Web là mỗi lần Browser tiếp chuyện với Server là Server hỏi "anh là ai", nó không nhớ là nó vừa nói chuyện xong với browser ngay trước đó. Lý do là mỗi lần browser nói chuyện với server, nó chỉ connect với server lâu đủ để trao đổi một message. Lập trình kiểu nầy gọi là stateless, nghĩa là không được có trạng thái bền vững như trường hợp ta lập trình trên desktop. Do đó thay vì chỉ lấy từng data row từ database table như ADO, ADO.NET chứa một hay nhiều tables cùng một lúc để làm việc cho tiện. Cái collection of tables trong ADO.NET nầy đuợc gọi là Dataset. ADO.NET không dùng Recordset.
Một XML message thông thường gồm có hai phần: phần thứ nhì chứa dữ kiện, và phần đầu cắt nghĩa các dữ kiện chứa trong message là những thứ gì. Phần cắt nghĩa nầy được gọi là schema như trong thí dụ XML file dưới đây:
<?xml version="1.0"?>
<schema id="DocumentElement" targetNamespace="" xmlns="http://www.w3.org/1999/XMLSchema"
xmlns:xdo="urn:schemas-microsoft-com:xml-xdo" xdo:DataSetName="DocumentElement">
    <element name="Products">
        <complexType content="elementOnly">
            <all>
                <element name="ProductID" type="int"></element>
                <element name="CategoryID" minOccurs="0" type="int"></element>
                <element name="ProductName" type="string"></element>
                <element name="ProductDescription" minOccurs="0" type="string"></element>
                <element name="UnitPrice" type="decimal"></element>
                <element name="ImagePath" minOccurs="0" type="string"></element>
                <element name="Manufacturer" minOccurs="0" type="string"></element>
            </all>
        </complexType>
    </element>
</schema>
<DocumentElement>
    <Products>
        <ProductID>1001</ProductID>
        <CategoryID>1</CategoryID>
        <ProductName>Chocolate City Milk</ProductName>
        <ProductDescription>Chocolate City Milk Description</ProductDescription>
        <UnitPrice>2</UnitPrice>
        <ImagePath>images/milk5.gif</ImagePath>
        <Manufacturer>Chocolate City</Manufacturer>
    </Products>
    <Products>
        <ProductID>1002</ProductID>
        <CategoryID>1</CategoryID>
        <ProductName>Bessie Brand 2% Milk</ProductName>
        <ProductDescription>Bessie Brand 2% Milk Description</ProductDescription>
        <UnitPrice>1.19</UnitPrice>
        <ImagePath>images/milk1.gif</ImagePath>
        <Manufacturer>Milk Factory</Manufacturer>
    </Products>
    <Products>
        <ProductID>1003</ProductID>
        <CategoryID>1</CategoryID>
        <ProductName>Funny Farms  Milk</ProductName>
        <ProductDescription>Funny Farms Whole Milk Description</ProductDescription>
        <UnitPrice>1.29</UnitPrice>
        <ImagePath>images/milk4.gif</ImagePath>
        <Manufacturer>Funny Farms</Manufacturer>
    </Products>
 </DocumentElement>

Tầng trên cùng

Tầng trên cùng nhất liên quan đến User và Program Interface.
Quỳnh Nguyễn
Mới học .NET
Đăng ký:  30/03/2005
Tham gia:  31/03/2005
Điểm:  798
Bài:  220
  Gửi lúc:  22/08/2005 05:10:41 PM

NET gồm có hai phần: FrameworkIntegrated Development Environment (IDE). Framework cung cấp tất cả những gì cần thiết căn bản. Chữ Framework có nghĩa là cái Khung hay khung cảnh trong đó ta dùng những hạ tầng cơ sở theo một qui ước nhất định để công việc trôi chảy. Còn IDE cung cấp một môi trường giúp ta triển khai dễ dàng, nhanh chóng hơn. Nếu không có IDE ta cũng có thể dùng Notepad và line commands để triển khai nhưng nó chậm hơn. Do đó, nếu có chỗ nào IDE genareted code có vẽ quá rắc rối, bạn nên trở về Framework để xem mình thật sự tối thiểu cần những thứ gì. Vì nói cho cùng, Framework là quan trọng nhất, còn IDE bất quá chỉ là một công cụ gắn lên phía trên Framework thôi. Trong .NET, C#VB.NET đều dùng cùng một IDE.

Theo tôi, cái IDE là phần tool phát triển, cái IDE này có thể nhiều cung cấp, tất nhiên là trong đó cái Visual Studio .NET của MS là ngon rất rồi. Nhưng IDE không thể gọi là một thành phần của .NET được, .NET chỉ là các thành phần hệ thống thôi, do đó, theo tôi .NET chính là cái Framework được nhắc ở trên.

PS: À, bác link image từ www.vivosoft.com ra thì rất hay, nhưng không hiểu vì lý do gì mà các ISP ở VN lại chặn cái site này, nên cóc hiện được ảnh, thế mới bực.

troioilatroi
Mới học .NET
Đăng ký:  23/08/2005
Tham gia:  23/08/2005
Điểm:  3
Bài:  3
  Gửi lúc:  23/08/2005 11:11:57 AM
Bài viết chi tiết thật nhưng toàn chữ, em đọc mà rối cả lên. Bác làm ơn xem lại cái link ảnh đi. Nhiều khi xem ảnh lại dễ hiểu và nhớ lâu hơn.
Burn4Free
Mới học .NET
Đăng ký:  27/08/2005
Tham gia:  27/08/2005
Điểm:  59
Bài:  13
  Gửi lúc:  27/08/2005 09:13:40 PM
Hình như cái Vivosoft.com bị các ISP ở VN chặn thì phải?

Bác admin ới ời, bác lấy cái ảnh về đi, post lại cho anh em xem với...
Autumn Water
Mới học .NET
Đăng ký:  17/11/2005
Tham gia:  17/11/2005
Điểm:  42
Bài:  8
  Gửi lúc:  18/11/2005 03:56:50 PM   -   Quỳnh Nguyễn  sửa đổi lúc:  30/11/2005 12:45:03 PM

Không phải là vivosoft ma la vovisoft.com cac bac a.

Nếu tôi không nhầm thì link về bài đó đây nè:
http://www.vovisoft.com/dotNET/Bai01/Bai01.htm

 

chieuphong
Mới học .NET
Đăng ký:  11/12/2005
Tham gia:  11/12/2005
Điểm:  11
Bài:  3
  Gửi lúc:  11/12/2005 09:47:56 PM
vovisoft van vao duoc binh thuong ma cac bac
Vu Anh Tuan
Mới học .NET
Đăng ký:  13/12/2005
Tham gia:  13/12/2005
Điểm:  1
Bài:  1
  Gửi lúc:  14/12/2005 09:20:12 AM
Em go dia chi la http://vovisoft.com thi vao duoc ma go dia chi la http://www.vovisoft.com thi lai khong vao duoc, thay kho hieu qua
Nguyen Minh Quang
Mới học .NET
Đăng ký:  06/01/2006
Tham gia:  06/01/2006
Điểm:  2
Bài:  2
  Gửi lúc:  06/01/2006 07:33:44 PM
troi dat, thao luan linh tinh qua'
Trang:  1/3    Sau >  |   Cuối >>
Chủ đề mới:
  • cho mình hỏi câu cơ bản tí thanks trước nhé (75/1)  
  • Bắt đầu học Dot Net như thể nào? (9273/48)  
  • Điểm khác nhau giữa hai đoạn code (420/4)  
  • Giải phóng bộ nhớ (1390/3)  
  • Xin chương trình dịch ngược mã nguồn của .NET ? (7214/23)  
  • LAP TRINH HUONG DOI TUONG (3514/18)  
  • convert từ .net framework 1.1 sang framework 2.0 (188/2)  
  • Chủ đề khác:
  • Tự học C# căn bản. (3088/6)
  • net framework 3.5 configuration tool? (1582/1)
  • Socket and Port (1690/5)
  • Không hiển thị image, icon! (1139/1)
  • Data Access & n-tiers (2489/6)
  • Design Pattern (3. Memento Pattern) (1658/1)
  • tài liệu về xử lí word trong VB (1677/0)
  • Thống kê thành viên online
    Số lượt truy cập: 4.306.824
    Số người trực tuyến: 81
     Trang chủ | Giới thiệu | Liên hệ BQT | Tìm kiếm