Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 1
LỜI CẢM ƠN Suốt quá trình học tập trong trường đại học vừa qua, chúng em đã
được quý thầy cô cung cấp và truyền đạt tất cả kiến thức chuyên môn cần
thiết và quý giá nhất. Ngoài ra, chúng em còn được rèn luyện một tinh thần
học tập và làm việc độc lập, sáng tạo. Đây là tính cách hết sức cần thiết để
có thể thành công khi bắt tay vào nghề nghiệp trong tương lai.
Luận văn tốt nghiệp là cơ hội để chúng em có thể áp dụng, tổng kết
lại những kiến thức mà mình đã học. Đồng thời, rút ra những kinh nghiệm
thực tế và quý giá trong suốt quá trình thực hiện đề tài. Sau một học kỳ
chúng em tập trung công sức cho đề tài và cùng làm việc cực lực với nhau,
đặc biệt là nhờ sự chỉ đạo và hướng dẫn tận tình của thầy
Nguyễn Chánh Thành cùng với các thầy cô trong khoa, đã giúp cho chúng
em hoàn thành đề tài này một cách thuận lợi và gặt hái được một số kết quả
khá khả quan. Bên cạnh những kết quả khiêm tốn mà chúng em đạt được,
chắc chắn không tránh khỏi những sai lầm, thiếu sót khi thực hiện luận văn
của mình, kính mong thầy cô thông cảm và tha thứ. Sự phê bình, góp ý của
quý thầy cô sẽ là những bài học kinh nghiệm rất quý báu cho công việc thực
tế của chúng em sau này.
Là sinh viên ngành máy tính, chúng em rất tự hào về khoa mà mình
đang theo học, tự hào về tất cả các thầy cô của mình.
Lời cảm ơn 1
Mục lục 2
Chương I : Giới Thiệu 3
Phần 1 : .NET FrameWork 3
Phần 2 :Tìm Hiểu Về Visual C# 8
Phần 3 : ADO.NET 22
Phần 4 : SQL Server 27
Phần 5 : Dòch Vụ Windows Services 32
Phần 6 : WebService và Các Công Nghệ Liên Quan 36
Phần 7 :Giới thiệu XML 50
Chương II : Phân Tích và Thiết Kế hệ Thống 59
Chương III : Demo và hình ảnh 67
Chương IV : Tổng kết và đánh giá 71
Tài liệu tham khảo 73
và đến lúc được thực thi ,nó sẽ được biên dòch tức thời (just-in-time
Compile hay còn gọi là JIT compile) sang dạng thực thi cuối cùng.
Có hai thành phần chính đối với .NET FrameWork :Môi trường
thực thi ngôn ngữ chung (Common Language Runtime (CLR)) và
thư viện các lớp .NET FrameWork.
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 4
Sơ đồ cấu trúc .NET FrameWork
Các thành phần chính của Microsoft.NET Framework: Sơ đồ các thành phần chính của .NET Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 5
Môi trường thực thi ngôn ngữ chung(CLR): là trung tâm điểm của .NET
FrameWork, mà .NET cung cấp để quản lý các lớp managed Extensions
C++ ,nó là cơ chế để chạy các tính năng của .NET . Trong Net mọi ngôn
ngữ lập trình đều được biên dòch ra ngôn ngữ trung gian (Microsoft
Intermediate Langage(IL)) ,thực thi ngôn ngữ cuả Microsoft có tên
Microsoft Intermediate Language ,hoặc MSIL .Sau đó mã IL này được biên
dòch đúng lúc thành mã bẩm sinh vào lúc chạy .Điều này có nghóa là ,bất
kể ngôn ngữ ban đầu của mả nguồn ,các tập tin thi hành và DLL của .NET
luôn được triển khai trong IL ,do đó không có điểm khác biệt nào giữa các
thành phần thoạt đầu được viết bằng C# và những thành phần được viết
bằng VB.NET .
Nhờ bắt buộc mọi ngôn ngữ đều phải dùng cùng các loại cùng hệ thống
các kiểu dữ liệu thông dụng (Common Type Sytem (CTS)), CLR có thể
kiểm soát mọi giao tiếp (interface), gọi giữa các thành phần và cho phép
các ngôn ngữ có thể kết hợp với nhau . Tức trong .NET , Chương trình
VB.NET có thể kế thừa C# và ngược lại một cách tự nhiên .
Gom Rác : Một trong những dòch vụ quan trọng nhất mà CRL cung cấp là
cơ chế gom rác [garbage collection ] .Trong C và C++ ,nếu một đối
tượng được lập minh dụ [instantiated ] ,bộ nhớ mà nó sử dụng cần được giải
phóng trước khi có thể dùng lại .Nếu không thể thực hiện điều naỳ ,ta sẽ bò
“rò rỉ bộ nhớ ” [ memory leak ]-hệ thống không thể thu hồi bộ nhớ
rảnh.khả năng vận hành của ứng dụng hiển nhiên bò xuống cấp .CRL giải
quyết sự cố này bằng cách thực thi một bộ gom gác .Theo quãng thời gian
đònh kỳ (khi không còn chỗ tên vùng phân tạm [head]) ,bộ gom gác sẽ kiểm
tra tất cả các tham chiếu đối tượng ,và phóng thích bộ nhớ được lưu giữ bởi
các đối đượng đã hết hoạt vi [spoce] và có thể không còn ứng dụng truy cập
.Điều này miễn cho lập trình viên khỏi phải huỷ các đối tượng tường minh
,và giải quyết sự cố rò ró bộ nhớ .
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 8 Sơ đồ cấu trúc tổng quát của gói hợp ngữ PHẦN 2 :
TÌM HIỂU VỀ VISUAL C#
1. C# là gì ?
C# là một ngôn ngữ hiện đại hướng đối tượng, là một ngôn ngữ lập
trình mới duy nhất phù hợp với các môi trường ở đó năng suất ,năng lực ,
và Internet là quan trọng .Nó có nguồn gốc từ trong C,C++,java ,và trong
một mức độ giới hạn của ngôn ngữ Visual Basic .
Với C# ta có thể tạo các dạng đề án khác nhau : Các ứng dụng Console
,các ứng dụng Windows,các ứng dụng ASP.NET ,các thành phần .NET ,và
Web Services. Các đề án này có thể phối hợp với nhau để thực thi các ứng
dụng n tầng ,có phân phối .
2. C# và Các Ngôn Ngữ Khác + C# và Java :
xây dựng các giao diện người dùng bằng cách kéo các điều khiển từ một
hộp công cụ ,thả chúng lên các biểu mẩu ,và viết các trình điều quản sự
kiện cho chúng .C# khai thác tiến trình với hiệu quả cao ,không những
áp dụng nó trong việc phát triển các giao diện người dùng má còn cấu
thành các đối tượng doanh nghiệp .Đây là điểm giống nhau thực sự duy
nhất giữa C# và VB6 ,bởi các khả năng đối tượng của VB6 không thể so
sánh được với các khả năng của C # .
Với VB.NET ,đây là phiên bản kế tiếp của VB ,mặc dù được
tăng cường các đặc cụ đối tượng của VB trông giống như C# với các từ
khóa khác.Thực tế ,các chuyên khu trên web đã cho thấy cùng mã nguồn
biên dòch bằng trình biên dòch VB cũng sẽ biên dòch bằng trình biên dòch
C# sau khi tay toàn cục vài từ khoá.
Ưu điểm nổi bật nhất của C# so với VB.NET là nó chứa các
khối mã C++ nhúng,nhanh,hiệu quả.
Một ưu điểm đáng kể cuả C# đó là nó có thể dễ dàng thực hiện
các lệnh gọi Windows API.
C# và C++ :
C# và C++ có liên quan với nhau .Thực tế ,có thể xem C# là một
tập con đơn giản hơn,năng suất hơn ,an toàn hơn, của C++.
- Tính đơn giản của C# đó là cách tiếp cận mã hoá trọn gói của nó
đối với việc bảo trì mã :
Trong C++ ,phần khai báo được đặt trong các tập tin phần đầu (.h)
ăn khớp với các thực thi của chúng trong các tập tin hệ phục vụ (.cpp)
.Trong khi,C# gói riêng phần đònh nghóa và thực thi của mỗi lớp vào một
khối mả trong một tập tin C# (.cs) đơn lẽ.
Ngoài ra,tính đơn giản của C# còn thể hiện ở cách mà nó phân gỉai
các sự phụ thuộc vào các thành phần bên ngoài .C++ yêu cầu các thành
phần tham chiếu ở 2 nơi : 1)Trong các câu lệnh #include trong mã nguồn
của đề án và 2)trong danh sách tham chiếu của đề án khách.Để dùng một
thành phần phục vụ .NET từ một hệ khách C# ,bạn chỉ cần bổ sung một
Jscript là một ngôn ngử khác có thể dùng để lập trình .NET.Cú pháp
của nó tương tự như C,song đơn giản hơn.
Về cơ bản ,Jscript là ngôn ngữ ký mả[scripting] dùng để thực hiện HTML
động phía khách ,cả Netcape Navigator lẫn Internet Explorer đều có thể
nhận ra Jscript .
Giống như C# ,Jscript thừa kế một cú pháp xúc tích và lòch lảm từ C.
Khác với C#,Jscript yếu về kiểu;tất cả các biến Jscript đều được khai báo
bằng từ khoá Var và theo mặc đònh có thể chuyển đổi từ gía trò này sang giá
trò khác.
Do C# sạch hơn và mạnh hơn Jscript ,nên hầu hết các nhà phát triển
hướng C sẽ chọn C# nhiều hơn Jscript cho các ứng dụng phía phục vụ.Tuy
nhiên , do Netcape Navigator lẫn Internet Explorer đều có thể nhận ra
Jscript nên vẫn có thể dùng Jscript để phát triển Các điều khiển web phía
khách. Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 11
Đôi khi có những lỗi xảy ra bên trong mã của ứng dụng. Những lỗi
nghiêm trọng có thể là nguyên nhân một ứng dụng không đáp ứng lệnh,
thông thường yêu cầu người sử dụng khởi động lại ứng dụng, và không lưu
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 12 lại những gì ta đã làm. Quá trình tìm ra và sửa lỗi gọi là gỡ rối. C# cung cấp
nhiều công cụ giúp chúng ta phân tích ứng dụng làm việc như thế nào.
Những công cụ gỡ rối đặt biệt hữu ích trong việc tìm ra nguồn gốc lỗi,
nhưng chúng ta cũng có thể dùng những công cụ này để kiểm tra chương
trình hoặc tìm hiểu những ứng dụng khác nhau làm việc như thế nào.
Xử lý ổ đóa, thư mục và file
Khi lập trình trong Windows, nó rất quan trọng để có khả năng thêm, di
chuyển, tạo mới hoặc xóa những thư mục và file, lấy thông tin về và xử lý ổ
đóa. C# cho phép chúng ta xử lý ổ đóa, thư mục và file bằng hai phương pháp
: qua những phương thức cũ như là điều lệnh Open, Write, và qua một tập
hợp các công cụ mới như FSO (File System Object) .
Thiết kế cho việc thi hành và tính tương thích
C# chia xẻ hầu hết những tính năng ngôn ngữ trong VS.NET cho những
ứng dụng, bao gồm :các ứng dụng Console,các ứng dụng Windows,các đề
án ASP.NET,và các dòch vụ web,….
chúng được yêu cầu ,ta có thể dùng các ngôn ngữ .NET có đầy đủ tính năng
(kể cả C#) để mã hoá các trang biên dòch thành IL. Lần đầu tiên khi một
trang ASP.NET như vậy được yêu cầu ,mã ASP.NET được phiên dòch thành
một tập tin .cs ( hoặc một .vb) mà sẽ được biên dòch sau đó.
Trình biên dòch Just-in-Time sẽ chuyển đỗi IL kết qủa thành mã bẩm sinh
,lập cache nó để phòng trường hợp trang được yêu cầu lại .Với cách tiếp cận
này ,các trang ASP.NET sẽ chuyển đạt nhanh hơn nhiều so với trang ASP
trước đây.
Các dòch vụ Web : với các đề án WebService ,cung cấp thông tin cho các
thành phần và các ứng dụng khác .Nói một cách đơn giản ,một dòch vụ
Web là một lớp có một trình tiền tiêu web.Một trang ASP.NET kết hợp
với lớp sẽ cho phép các lớp khác gọi các phương pháp trên lớp đó qua
Internet .Dạng thức của các yêu cầu,và dạng thức của các giá trò trả về
là giao thức SOAP.Trong WWW mà Microsoft hình dung,tất cả các dòch
vụ web khắp thế giới sẽ cung cấp cho các ứng dụng khách tất cả các
kiểu thông tin động,từ gía cả thò trường chứng khoán đến các baó cáo
thời tiết.
Nét đẹp của một dòch vụ web đó là khả năng dễ dàng tạo ra nó.
4. Tóm Tắt Ngôn Ngữ
4.1. Biến
Biến được dùng để lưu tạm thời các giá trò tính toán trong quá
trình xử lý chương trình.
Cách khai báo biến
Khai báo một biến trong C# có cú pháp như sau :
Type variable-name[=initialization]
Ở đây type là kiểu biến ,va variable-name là tên biến có thể chứa chữ
cái,số,và dấu gạch dưới.Tuy nhiên tên biến phải bắt đầu bằng hoặc là dấu
gạch dưới hoặc là chử cái và không được bắt đầu bằng số .
Dưới đây là các ví dụ về khai báo biến :
int _999 ;//hợp lệ
Các kiểu gía trò gồm có :
ºCác kiểu đơn giản (int ,char,….)
ºstructs
ºenums
Các kiểu đònh sẳn
Tên kiểu Mô Ta’
sbyte Nguyên có dấu 8-bit
short Nguyên có dấu 16-bit
Int Nguyên có dấu 32-bit
Long Nguyên có dấu 64-bit
Byte Nguyên không dấu 8-bit
Ushort Nguyên không dấu 16-bit
Uint Nguyên không dấu 32-bit
Ulong Nguyên không dấu 64-bit
Float Số chấm động có độ chính xác đơn
Double Số chấm động có độ chính xác đôi
Bool Kiểu logic-true hay false
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 15 Char Ký tự Unicode
Decimal số thập phân có 28 chử số có nghóa
Phát biểu If
Cú pháp phát biểu if như sau :
Cú pháp 1 :
If( conditional-expression)
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 16 Phát biểu lệnh đơn ;
Hoặc :
If( conditional-expression){
Một hay nhiều câu lệnh ;
}
Cú Pháp 2 :
If( conditional-expression)
Phát biểu lệnh đơn ;
Else
Phát biểu lệnh đơn ;
Hoặc :
If( conditional-expression){
Một hay nhiều câu lệnh ;
}else {
Một hay nhiều câu lệnh ;
Cú pháp :
While (<biểu thức điều kiện> ){
<các câu lệnh> ;
}
Vòng lặp do … while
Cú pháp :
Do{
<các câu lệnh> ;
}while(< biêủ thức điều kiện>) ;
Mệnh đề foreach :
Cú Pháp :
Foreach (element_type variable in expression )
Statement ;
Với element_type là kiểu dữ liệu đươc sử trong việc khai báo biến
,expression có thể là một mảng array hay một lớp tập hợp(collection
class) chứa các phần tử có kiểu element_type.
Câu lệnh For :
Cú Pháp :
Một câu lệnh for được điều khiển bởi ba biểu thức trong dấu ngoặc đơn-
một biểu thức khởi tạo [initilizer],một biểu thức điều kiện ,và một biểu
thức lập :
For(initilizer ;codition;iterator)
Statement ;
4.5. Gọi Các Thủ Tục (phương pháp):
Tiến trình đònh nghiã và gọi các Thủ Tục trong C# theo sát mô hình
C++ /Java.
Điều này có nghóa là mọi thủ tục phải có một khai báo tuân thủ khuôn mẩu
dưới đây ,ở đó các mục trong các dấu ngoặc vuông là tùy chọn :
4.6. Không Gian Tên (Namespace)
C# sử dụng không gian tên hổ trợ trợ cho việc cô lập và việc đóng
gói các lớp (class),các giao diện ,và các struct có liên quan thành một đơn
vò (unit).
Kiến trúc .NET sử dụng các không gian tên(namespace) lồng
nhau xuất phát từ không gian tên System .Microsoft cũng đã cung cấp các
lớp (class) ,và các giao diện được đặt dưới không gian tên (namespace)
Microsoft dành cho chức năng riêng biệt của windows.
Cú pháp cho việc khai báo một không gian tên :
Namesapce some-namespace-name{
//Cac1 lớp (class),các giao diện ,các struct ,.v.v
}
Sử dụng các thực thể bên trong một không gian tên có thể được
thực hiện hai cách khác nhau . Cách dễ nhất để truy cập các thực thể bên
trong một không gian tên là sử dụng chỉ thò using .
Vi dụ : Using System ;//sử dụng không gian tên system. Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 19 Sự lựa chọn thứ hai là sử dụng tên đầy đủ của một thực thể riêng
mảng chử nhật ,mọi hàng có cùng chiều dài .Mặc khác ,một mảng răng cưa
đơn gỉan là một mảng các mảng một chiều mỗi mảng có thể có một chiều
dài khác nhau nếu muốn .
Một ví dụ minh hoạ Mảng đa chiều :
Using System;
Class Test
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 20 {
public static int main( )
{
int [,] arr2 ;//khai báo mảng chử nhật
int [ ][ ] arr4 ; // khai báo mảng 2 chiều răng cưa
int [ ] [ ][] arr5; // khai báo mảng 3 chiều răng cưa
arr2= new int[5,5] ;
arr4=new int[3][ ];
arr4[0] =new int[5];
arr4[1]=new int[3];
arr4[2]=new int[4]; arr5=new int[2][ ][ ];
Như một phương pháp hoặc trường.
ArgumentException -Một đối số cho một phương pháp không
Hợp lệ
ArgumentNullException -Một đối số null được truyền cho một
Phương pháp không chấp nhận nó.
ArgumentOutOfRangeException - Gía trò đối số nằm ngoài miền.
ArithmeticException -Sự cố tràn trên hoặc tràn dưới số học xảy
ra.
DivideByZeroException -Đã gắng chia zero. FormatException -Dạng thức một đối số bò sai.
IndexOutOfRangeException -Một chỉ mục nằm ngoài các cận.
NotFiniteNumberException -Một số không hợp lệ .
OutOfMemoryException -Không đủ bộ nhớ để thi hành.
StackOverflowException - Một ngăn Xếp đã tràn. Để chặn bắt những ngo lệ trên ,ta dùng cú pháp try…catch :
PHẦN 3 :
ADO.NET 1. ADO. NET là gì ?
ADO.NET là một tập hợp các hàm API chiến lược của Microsoft
cho phép truy cập dữ liệu theo mô hình phân tán hiện đại trên nền Microsoft
.ADO.NET chứa một tập các giao diện interface và lớp cho phép bạn làm
việc với dữ liệu trong một phạm vi rất nhiều cơ sở dữ liệu bao gồm SQL
Server ,Oracle,Sybase,Microsoft Access,…
1.1 Nhà cung cấp dữ liệu (ADO.NET Data Providers):
ADO.NET sử dụng khái niệm nhà cung cấp dữ liệu cho phép truy
cập đến nhiều cơ sở dữ liệu khác nhau một cách hiệu quả .Mỗi nhà
cung cấp dữ liệu bao gồm các lớp cho phép kết nối với một kiểu cơ sở
dữ liệu đặc biệt .
.NET FrameWork bao gồm hai nhà cung cấp dữ liệu chính là: Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
OleDbCommand, OleDbParameter, OleDbDataReader,
OleDbTransaction, và OleDbDataAdapter .
System::Data::SqlType
Đònh nghóa những lớp đại diện cho kiểu dữ liệu nguyên gốc của SQL
Server.
System::Xml
Đònh nghóa những lớp liên quan đến XML, ADO.NET tích hợp rất
chặt chẽ với XML.
1.3 Gói hợp ngữ ADO.NET:
Phần lớp các lớp của ADO.NET được chứa trong gói hợp ngữ
System::Data ( trừ lớp XmlDataDocument, chứa trong System::Xml)
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 24 .Để sử dụng những gói hợp ngữ này ,bạn khai báo các phát biểu sau
trong ứng dụng:
# using < System.Data.dll>
# using < System.XMl.dll>
Sau khi đã nhập vào những gói hợp ngữ này, bạn có thể nhập thêm
những namespace theo yêu cầu khác của riêng ứng dụng.
2. Tạo một ứng dựng kết nối :
Trong các kết nối đến cơ sở dữ liệu SQL Server .Bạn sẽ sử dụng
đối tượng SqlConnection để thiết lập kết nối này.
Khi bạn đã có được kết nối ,bạn sẽ tạo đối tượng SqlCommand để đại
diện cho câu lệnh SQL và thực hiện những nhiệm vụ sau:
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 25
DataRowCollection DataRow ConstraintCollection Constraint
DataRelationCollection DataRelation
DataRelationCollection DataRelation DataSet là một tập các đối tượng DataTable trong bộ nhớ và quan hệ
với DataTables .Bạn có thể tạo nhiều DataTables trong một DataSet để nắm
giữ kết quả của câu truy vấn SQL.
DataTable có một tập hợp các đối tượng DataColumn .Những
DataColumn này là thông tin mô tả cột dữ liệu như tên cột,kiểu dữ liệu, giá