1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Giới thiệu pptx

18 202 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giới thiệu .NET của Microsoft
Thể loại Bài thuyết trình
Định dạng
Số trang 18
Dung lượng 358,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giới thiệu .NET của Microsoft Dẫn nhập Các quan sát viên cho rằng trong năm qua Microsoft đã phải đối diện với ba khó khăn lớn: • Sự hăng hái dùng Internet của thiên hạ đang dịu xuống, •

Trang 1

Giới thiệu NET của Microsoft

Dẫn nhập

Các quan sát viên cho rằng trong năm qua Microsoft đã phải đối diện với ba khó khăn lớn:

• Sự hăng hái dùng Internet của thiên hạ đang dịu xuống,

• Doanh thu trong việc bán các chương trình áp dụng (application software) của Microsoft đang đi xuống, và

• Vụ kiện tụng về việc Microsoft độc quyền thị trường (Antitrust case)

Giữa năm 2000, họ bắt đầu thấy Microsoft đã có đường hướng và kế hoạch từ lâu rất rõ ràng về cách cùng một lúc vượt qua tất cả những khó khăn nầy Đó là sự chào đời của Windows2000 và NET

Trong các bài khác của trang MCSE của Vovisoft sẽ nói nhiều về các ưu điểm của MSWindows2000 Trong phạm vi bài nầy tôi sẽ tập trung vào NET, một bộ sản phẩm phần mềm sẽ làm rung động nền Tin Học thế giới và sẽ có ảnh hưởng trong hằng thập niên tới

Tình hình trước đây

Trong chiến trường tin học trước đây, không kể các Database như Oracle, SQL Server, Informix v.v ta phải nhắc đến: Java, Linux hay Unix, C++, Delphi

MSWindows và Visual Basic Nếu muốn đeo đuổi với Unix ta cũng có thể dùng Linux, một Operating System trưởng thành, chắc chắn và miễn phí Thường thường hể nói Linux người ta hàm ý nó dùng XWindows để cung cấp một GUI (Graphical User Interface) tương đương với MSWindows3.1 ngồi phía trên MSDOS Có điều Linux thì thật sự multi-tasking, có nghĩa là ta có thể chạy nhiều chương trình cùng một lúc Viết chương trình bằng C hay C++ trên Linux và dùng XWindows không bao giờ là chuyện đơn giản

Sau nầy ta cũng có thể viết Java, một ngôn ngữ do Sun sáng tác cách đây hơn 5

năm và có thể chạy trên nhiều OS, độc lập với CPU (tức là Intel, Risc hay hiệu gì cũng không thành vấn đề) Đặc biệt Java rất thích hợp cho việc viết chương trình cho Internet Tuy nhiên, Java vẫn còn chạy chậm và trên thực tế vẫn chưa thật sự thịnh hành Mặc dầu Sun Corporation và IBM có đẩy mạnh Java, nhưng dường như Microsoft đã dùng ASP để chận bớt ảnh hưởng của Java

Để lập trình trên Web, lâu nay người ta vẫn dùng cgi-Perl, và gần đây dùng php,

môt ngôn ngữ giống như Perl nhưng cách dùng khiến nó chạy nhanh hơn Ta có thể triển khai Perl trên Unix/Linux hay MSWindows Tuy nhiên có nhiều người không

thích làm việc với regular expressions và những quy ước khác thường về lập trình

của Perl nên không ưa dùng Perl Hơn nữa, các phần cho thêm rất hay của Perl như User Interface, Database v.v được triển khai bởi những người khác nhau, chớ không phải từ cùng một tổ chức Do đó, ta không bao giờ đuợc đảm bảo về sự yểm trợ lâu dài hay biết rõ đuờng hướng tương lai của các thứ mình dùng

Còn trên MSWindows thì ta có thể viết chương trình bằng Visual C++, Delphi hay

Trang 2

Visual Basic Visual C++ thì làm được nhiều chuyện nhưng khó dùng Visual Basic thì đơn giản, dễ học và dễ dùng nhất nên nó rất thịnh hành Lý do chính là

Visual Basic giúp ta viết chương trình dùng MSWindows mà không bắt buộc ta phải biết rất nhiều về cách MSWindows hoạt động Ta chỉ cần có một số kiến thức căn bản tối thiểu về MSWindows là đủ rồi Từ quan điển của VB, mọi liên hệ với

MSWindows đều tự nhiên và dễ hiểu Có điều Visual Basic không phải là một ngôn ngữ Object Oriented

Delphi là hậu thân của Turbo Pascal của Borland Nó giống và tương đối dễ dùng

như Visual Basic Delphi thì Object Oriented Các controls dùng trên các Forms của một chương trình Delphi đều tự động generate codes Khổ nổi nếu ta sửa đổi các controls nhiều lần thì công tác code generation của Delphi thỉnh thoảng gặp trở ngại Ngoài ra, công ty Borland sản xuất Delphi bị Corel bên Gia Nã Đại mua rồi đổi tên, họ không đảm bảo tương lai của sản phẩm khi chuyển hướng bằng cách nhấn mạnh vào JBuilder (dùng cho Java) Trong lúc tình hình rối loạn, một số guru của Delphi về đầu thú với Microsoft, các version mới của Delphi không thật sự tiến bộ hơn bao nhiêu, nên người ta không dám đầu tư việc triển khai phần mềm vào Delphi

Trong khi đó Visual Basic không cần phải generate code nên Visual Basic bền vững hơn Delphi trong khi ta thiết kế các Forms Nói như thế, không phải che đậy nhiều khuyết điểm của Visual Basic như:

• Không yểm trợ OOD, nhất là khả năng thừa kế (inheritance)

• Giới hạn về việc chạy nhiều task nhẹ cùng một lúc (mutithreading) trong một application Thí dụ như ta không thể dùng VB để viết một service kiểu NT

• Khả năng Error Handling rất yếu, bất tiện cho môi trường multi-tier (phân code ra nhiều lớp)

• Khó dùng chung với các ngôn ngữ khác như C++ chẳng hạn

• Không có User Interface thích hợp cho Internet

Vì Visual Basic không thích hợp cho việc lập trình trên Web Server nên Microsoft

sáng tác ra Active Server Pages (ASP) Các trang ASP gồm có vừa HTML vừa

VBScript (hay JavaScript), nằm lẫn lộn nhau Khi xử lý một trang ASP hể HTML thì được gởi thẳng qua browser (client), còn VBScript thì tạo ra các dòng HTML để gởi qua browser Trừ các Sub hay Function, vị trí của VBScript trong các trang ASP rất quan trọng

Khi có nhóm codes nào ưng ý ta muốn biến nó thành một ActiveX và install nó trên Web Server Vì lý do an ninh, các Internet Service Provider (ISP) làm host cho Web site của chúng ta thường thường rất miễn cưỡng install một ActiveX lạ trên máy của

họ Ngoài ra, việc uninstall ActiveX trên MSWindowsNT 4.0 không phải dễ ăn nên công tác quản lý version của các ActiveX thừơng làm cho các Web administrators nhức đầu Ai đã từng trải qua việc quản lý các version của DLL trên MSWindows đều than phiền tại sao phải register các DLL và nhất là tại sao chỉ có thể register một

version của DLL mà thôi Họ chán quá, nên đặt ra từ "DLL hell" (địa ngục DLL).

Để giúp ta lập trình ASP nhanh, Microsoft cho ra Visual Interdev, một IDE

(Intergrated Development Environment) hơi giống như Visual Basic Visual Interdev cho ta các Design-Time Controls giống như các Intrinsic Controls của Visual Basic

Trang 3

(td: Label, Textbox, Listbox v.v ) Tiếc thay Visual Interdev không bền vững lắm nên sau khi dùng thử Visual Interdev một thời gian, đa số lập trình viên bỏ nó

Để thay thế Visual Interdev, Macromedia cho ra Drumbeat 2000 Drumbeat 2000

làm nhiều chuyện hơn, và dễ dùng hơn Visual Interdev Nó tự động generate

VBScript cho mọi hoàn cảnh và kết quả là các trang ASP rất linh động Nhưng có lẽ

vì mối liên hệ của Macromedia với các tác giả của Drumbeat 2000 (một sản phẩm do một công ty khác bán lại cho Macromedia) không tốt đẹp lắm nên Macromedia không còn yểm trợ Drumbeat 2000

Dầu sao bản thân ASP hãy còn một số khuyết điểm quan trọng, nhất là khi chạy trên Internet Information Server với NT4.0, ASP không đáng tin cậy lắm

Nói tóm lại, nếu ta theo trường phái Microsoft thì việc lập trình trên desktop, cho distributed system và Web không ăn rơ nhau Muốn di chuyển từ Desktop

development lên Web development là phải đi qua một chặn đường học hỏi thêm rất mệt xác

Nguồn gốc của NET

Đầu năm 1998, sau khi hoàn tất version 4 của Internet Information Server (IIS), một đội lập trình ở Microsoft nhận thấy họ còn rất nhiều sáng kiến để kiện toàn IIS

Họ bắt đầu thiết kế một architecture mới dựa trên những ý đó và project đuợc đặt tên là Next Generation Windows Services (NGWS)

Sau khi Visual Basic 6 đuợc trình làng vào cuối năm 1998, dự án kế tiếp mang tên Visual Studio 7 đuợc xáp nhập vào NGWS Đội ngũ COM+/MTS góp vào một

universal runtime cho tất cả các ngôn ngữ lập trình trong Visual Studio, mà họ có ý định cho ngay cả các ngôn ngữ lập trình của công ty khác dùng luôn

Công tác nầy được giữ bí mật mãi đến hội nghị Professional Developers' Conference

ở Orlando vào tháng 7/2000 Đến tháng 11/2000 thì Microsoft cho phát hành Beta 1 của NET gồm ba CD Tính đến lúc ấy thì Microsoft đã làm việc trên dự án ấy gần ba năm rồi Điều ấy cắt nghĩa tại sao Beta 1 version tương đối rất vững chải

.NET mang dấu tích những sáng kiến đã được áp dụng trước đây như p-code trong UCSD Pascal cho đến Java Virtual Marchine Có điều Microsoft góp nhặt những

sáng kiến của người khác, kết hợp với những sáng kiến của chính mình để làm nên một sản phẩm ăn rơ từ trong ra ngoài Có lẽ cuối năm 2001 hay đầu năm 2002 Microsoft mới phát hành NET Có người hỏi Microsoft xem NET quan trọng như thế nào Các "xếp" của Microsoft cho biết 80% tài khóa Research & Development

(Nghiên cứu và Triển khai) của Microsoft trong năm 2001 được dành cho NET, và tối hậu, tất cả sản phẩm của Microsoft đều sẽ được dọn nhà qua NET platform

Nhìn qua NET Framework

.NET gồm có hai phần: Framework và Integrated 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,

Trang 4

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# và 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 chót

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:

Trang 5

.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

Trang 6

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

Trang 7

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.NET và XML 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

Trang 8

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>

Trang 9

<UnitPrice>1.29</UnitPrice>

<ImagePath>images/milk4.gif</ImagePath>

<Manufacturer>Funny Farms</Manufacturer>

</Products>

</DocumentElement>

Tầng trên nhất

Tầng trên cùng nhất liên quan đến User và Program Interface

WinForms

Windows Forms (còn gọi tắt là WinForms) là một cách mới và hay hơn để làm các

hình display trong Win32 WinForms có nhiều điểm khác với VB6:

• Trong VB6, mỗi project có nhiều nhất là một MDI parent form Trong WinForms một project có thể có nhiều MDI parent forms

Do đó, bạn phải nói với MDI child form ai là MDI parent form của nó

Menu Editor của VB6 đuợc thay thế bằng một Menu control

trong WinForms Bây giờ làm Menu còn dễ hơn trước nữa

Bạn tạo Context menu bằng cách dùng Context Menu control Muốn dùng bao nhiêu Context Menu trong một form

cũng đuợc

Thay vì dùng Arrange method của một MDI parent, bây giờ bạn dùng LayoutMDI method

• Bạn có thể dùng Visual Inheritance từ base forms để inherit properties và tánh tình của các form ấy

• Trong WinForms bạn phải thận trọng trong việc dùng default property Ðiều nầy có nghĩa là khi làm việc với form, bạn phải nói thẳng thừng ra (reference explicitly) Text property của Textbox hay Label

Bây giờ bạn có Anchor và Dock properties để anchor hay

dock controls trong form

Có một số control mới như DomainUpDown, LinkLabel, ContextMenu, và Tooltip

• Bạn có thể sắp Tab Order visually bằng cách click các controls

theo thứ tự trong mode View Tab Order

• Bạn có thể display bất cứ form nào trong Modal mode bằng

cách dùng method ShowDialog() của form Bạn có thể nhận kết quả của form ấy bằng cách set DialogResult property của

form ấy trước khi close nó

Trang 10

• Trong WinForms, nếu bạn muốn access một control và

properties của nó trong một form, bạn cần phải set Modifiers property của nó thành Public (by Default nó là Private) Nếu

bạn muốn chỉ cho con cháu nó (inherited forms) dùng Property

của nó thì set Modifiers property thành Protected

• Không có Control arrays trong WinForms (giống như trong Delphi) Do đó nếu muốn nhiều control dùng chung một event bạn phải set cùng một Event Handler cho tất cả các control ấy Các control nầy không nhất thiết phải là cùng một loại

Trong WinForms bạn dùng ReadOnly thay cho Locked property của control Bây giờ Locked property được dùng cho move

hay resize control trong Design View

Có TopMost property mới để giữ form luôn luôn nằm trên hết.

• Control Class, base class của mọi WinForm controls, cho ta

SendMessage method với built-in constants Bạn không cần

phải dùng SendMessage API function với constant như LB_SETTABSTOPS nữa

Dưới đây là hình IDE của VisualStudio.NET

Ngày đăng: 24/01/2014, 02:20

TỪ KHÓA LIÊN QUAN

w