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.
Hỗ trợ các công cụ rất đầy đủ : XML,cơ sở dữ liệu
,ASP.NET,VC++,VB.NET…….
Một lần nữa, chúng em xin chân thành cảm ơn công lao dạy dỗ của
quý thầy cô. Kính chúc quý thầy cô mạnh khỏe, tiếp tục đạt được nhiều
thắng lợi trong nghiên cứu khoa học và sự nghiệp trồng người.
Trân trọng kính chào!
Sinh viên thực hiện
Lê Phước Hùng
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 2
MỤC LỤC
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
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 3
CHƯƠNG I :
GIỚI THIỆU
PHẦN 1 :
.NET FrameWork
.NET FrameWork là một nền tảng cho thế hệ máy tính mới được
thiết kế bởi Microsoft nhằm mục đích đơn giản hoá việc phát triển các ứng
dụng hiện đại như :
Những chương trình mà ứng dụng cách viết theo
Microsoft.NET , sử dụng giao diện đồ hoạ GUIs phức tạp phía
người dùng đầu cuối.
Những ứng dụng hay chương trình sử dụng Internet.
Các ứng dụng truy xuất cơ sở dữ liệu …….
Thật ra, .NET cài đặt một chế độ biên dòch nhiều tầng : trước tiên
,chương trình sẽ được biên dòch sang một dạng trung gian khả chuyển
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
Ứng dụng .NET được chia ra làm hai loại: cho Internet gọi là
ASP.NET, gồm có Web Forms và Web Services và cho destop gọi là
Windows Forms .XML được hỗ trợ tối đa , có hai giao thức được sử
dụng thông thường nhất trong .NET là TCP/IP và HTTP
Việc thiết kế môi trường thực thi ngôn ngữ chung gồm những mục tiêu
chính sau:
Việc triển khai đơn giản và nhanh hơn :người phát triển sẽ dành
nhiều thời gian quyết đònh nối những thành phần của phần mềm
nào lại với nhau nhiều hơn là lập trình thật sự .
Các công tác thiết yếu như : quản lý bộ nhớ ,xử lý thông tin ….
được giúp đỡ một cách tự động.
Hỗ trợ các công cụ rất đầy đủ XML,cơ sở dữ liệu ,…….
Cài đặt đơn giản và an toàn, hỗ trợ mọi tập tin .DLL .
Sử dụng cho từ WindowsCE đến Destop , và Web.
Sơ đồ mô tả môi trường thực thi ngôn ngữ
chung (CLR)
Siêu dữ liệu (Metadata): Các lớp. Net là những lớp có khả năng tự mô
tả,chúng mang thông tin miêu tả đi cùng với mình ngay trong file đã biên
dòch ra .EXE hoặc DLL.Thông tin này được gọi là siêu dữ liệu(Metadata).
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 6
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ớ .
Thư viện các lớp của .NET FrameWork : Là một thư viện các
lớp hướng đối tượng cung cấp hầu hết dụng cụ và phương tiện cần thiết để
viết nhiều chưong trình ứng dụng đa dạng .Thư viện các lớp .NET
FrameWork cung cấp một tập các lớp mà có thể sử dụng từ bất kì ngôn ngữ
.NET nào , vì nó được cài đặt để làm việc ở cấp ngôn ngữ IL .
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 7
Đặc tả ngôn ngữ thông dụng (Common Language Specification
(CLS)) :là tập hợp những qui tắc và ràng buộc ,mà trình biên dòch và thư
viện mà người lập trình viết ra cần phải tuân theo để bảo đảm cho ngôn
ngữ và mã sinh ra có thể tích hợp được với những ngôn ngữ .NET khác
.CLS là một tập con của CTS ,và nếu một ngôn ngữ hoặc thư viện tuân
thủ theo CLS thì nó hoàn toàn tương hợp với những ngôn ngữ thuộc
họ.NET .
Assembly(Hợp ngữ): Ứng dụng .NET xây dựng từ các gói hợp
ngữ (assemblies) là đơn vò cơ bản của việc đóng gói và nâng cấp phiên
bản .Gói hợp ngữ chứa đựng mã IL ( ngôn ngữ trung gian),siêu dữ liệu
dùng để mô tả gói hợp ngữ và nội dung của nó,cùng với những file khác
cần cho quá trình thực thi.Nó có thể là một tập tin thi hành (.exe ),một
DLL,một ứng dụng web ASP.NET được biên dòch ,hay dòch vụ web .
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 :
- Chắc chắn các đoạn mã C# có thể rất giống với các đoạn mã Java
tương đương về công năng .Ví dụ ,cả 2 ngôn ngữ ủng hộ tính năng mã
hoá tron gói [one-stop coding] ,gom nhóm các lớp ,các giao diện và
cách thực thi với nhau trong một tập tin để các nhà phát triển có thể
hiệu chỉnh mã dễ dàng hơn .C# và Java cũng điều quản các đối tượng
khá giống nhau : thông qua các tham chiếu thay vì các biến trỏ .
- C# giữ lại nhiều tính năng mạnh của C++ hơn .Ví dụ ,C # sử dụng tính
năng qúa tải toán tử [operator overloading] , các kiểu điểm doanh an
toàn kiểu ,các tính năng mà java hoàn toàn bỏ qua .
- Một khiá cạnh mà java vượt trội hơn C# đó là sự độc lập về nền tảng
.Trên lý thuyết , với bytecode java nó có thể đựơc thực thi trên bất kỳ
nền tảng nào được trang bò một maý ảo java . Trong khi C# sử dụng
một CLR (Common Language Runtime) cũng có tính năng tương tự
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 9
như máy aỏ của Java nhưng CLR chỉ thực thi trên nền tảng Windows
mà thôi .
+ C# và VB6, VB.NET :
- Những điễm khác biệt giữa VB6 và VB.NET là sâu sắc.
Với VB6 ,C # mượn cách tiếp cận của VB6 để thiết kế biểu mẩu
,thiết kế giao diện người dùng ; trong cả hai ngôn ngữ ,các nhà phát triển
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
tham chiếu vào thành phần với bằng lệnh đơn Add Reference ,hoặc
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 10
Solution Explorer .Không cần #include một tập tin phần đầu.Như vậy ,trong
cách tiếp cận đơn giản của nó với các phụ thuộc bên ngoài ,C# giống VB6
nhiều hơn C++.
- Ngoài việc đơn giản hơn C++,C# cũng an toàn hơn-cho cả nhà
phát triển lẩn môi trường thi hành. C# an toàn hơn cho nhà phát
triển ở chổ với nó ta viết mã khó gặp lổi hơn .Các ví dụ về sự an
toàn này bao gồm việc C# loại bỏ các thành ngữ dễ gặp lổi như
các macrô tiền xử lý và các câu lệnh switch … case chuồi qua,cũng
như sự cố chấp của trình biên dòch buộc các biến phải được khởi
tạo trước khi các giá trò chủa chúng được tham chiếu . C# an toàn
hơn cho môi trường phát triển ở chổ nó loại bỏ các biến con trỏ và
sự dựa cậy của nó vào tiến trình gom gác cài sẳn khiến không còn
rò rỉ bộ nhớ .
- C# tỏ ra nuâng suất hơn so với C++ ở chổ nó chấp nhận phương
pháp hộp công cụ /điều khiển /biểu mẩu để xây dựng các ứng
dụng GUI ,nhờ đó có thể nhanh chóng hoàn tất việc thiết kế giao
diện người dùng.
C# và Jscript :
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
3. Chúng Ta Có thể Làm gì Với C #?
Tạo giao diện người sử dụng
Giao diện người sử dụng có lẽ là thành phần quan trọng nhất của một ứng
dụng. Đối với người sử dụng, giao diện chính là ứng dụng ; họ không cần
chú ý đến thành phần mã thực thi bên dưới. Ứng dụng của chúng ta có thể
phổ biến được hay không phụ thuộc vào giao diện.
Sử dụng những điều khiển chuẩn của C#
Ta dùng những điều khiển để lấy thông tin mà người sử dụng nhập vào,
và để hiển thò kết xuất. Những điều khiển mà ta có thể dùng trong ứng dụng
bao gồm hộp văn bản, nút lệnh, và hộp danh sách,…. Những điều khiển khác
cho ta truy xuất những ứng dụng khác, xử lý dữ liệu của nó như là một thành
phần mã trong ứng dụng của bạn.
Lập trình với những đối tượng.
Những đối tượng là thành phần chủ yếu để lập tình Visual Basic. Những
đối tượng có thể là winform, những điều khiển hay cơ sở dữ liệu.
Đáp ứng những sự kiện chuột và bàn phím
Những ứng dụng C# có thể đáp ứng một lượng lớn sự kiện chuột và bàn
phím. Ví dụ form, hộp ảnh, và những điều khiển ảnh có thể phát hiện vò trí
con trỏ chuột, có thể quyết đònh phím trái hay phím phải được nhấn, và có
thể đáp ứng những tổ hợp của phím chuột với phím Shift, Ctrl, hay Alt. Sử
dụng những điều khiển phím, ta có thể lập trình những điều khiển và form
để đáp ứng các hành động phím hoặc phiên dòch và xử lý mã Ascii của ký
tự.
Gỡ rối mã và quản lý lỗi
Đô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,….
Với ứng dụng Console : công dụng phổ biến nhất của ứng dụng console
đó là trắc nghiệm các thành phần khác .
Với ứng dụng Windows :Khi thi hành ,một chương trình WinForm hiển
thò các cửa sổ để người dùng có thể tương tác bằng cách điều tác nhiều
điều khiển :hộp liệt kê,nút ,và hộp văn bản khác nhau….
Các đề án ASP.NET :
+ Active Server Pages (ASP) là một công nghệ phổ dụng của
Microsoft để tạo các ứng dụng gốc trình duyệt.Một ứng dụng ASP bao gồm
một loạt các trang ASP lưu trữ chung với nhau trong một thư mục trên một
hệ phục vụ Web.Mỗi trang là một tập tin .asp chứa các khối HTML pha
trộn với các khối VBScript hoặc Jscript phiá phục vụ.Khi một trình duyệt
yêu cầu một trang ASP,hệ phục void bàn giao HTML trong trang cho trình
duyệt yêu cầu và xử lý các chùm ký mã phía phục vụ mà nó gặp khi nó
phục vụ tư liệu. Như vậy ,trong các khối ký mã phía phục vụ các trang ASP
có thể triệu gọi các đối tượng doanh nghiệp để truy nạp dữ liệu từ cơ sở dữ
liệu hoặc để thực hiện các dòch vụ khác ,tạo các trang động có nội dung
thay đổi.
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 13
+Với ASP.NET hứa hẹn tăng cường đáng kể khả năng khả năng
vận hành của ASP bằng cách cho phép các nhà phát triển tạo các trang được
biên dòch [compiled] thay vì được diễn dòch [interpreted] .Đúng vậy ;thay vì
dùng Jscript hoặc VBScript để mã hoá các trang được diễn dòch lại mỗi lần
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ệ
int a_dog ;//hợp lệ
int 123_go ;//không hợp lệ
Phạm vi sử dụng biến
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 14
Phạm vi sử dụng biến tùy thuộc cách ta khai báo và chỗ ta đặt dòng lệnh
khai báo biến.
Nếu ta khai báo trong phần General, biến có thể được dùng ở bất kỳ
đoạn lệnh nào trong from và cũng chỉ mất đi khi from được giải phóng
khỏi bộ nhớ.
Nếu ta khai báo biến trong phần viết lệnh cho một sự kiện của một đối
tượng (tức khai báo giữa dấu “{“ bắt đầu mã lệnh và dấu “}” kết thúc
của mã lệnh đó) thì biến chỉ tồn tại và dùng được trong phạm vi dấu “{“
bắt đầu mã lệnh và dấu “}” kết thúc của mã lệnh đó mà thôi. Biến như
vậy gọi là biến riêng hay biến nội bộ.
Nếu ta dùng từ khóa Public để khai báo biến , biến sẽ tồn tại trong suốt thời
gian thực hiện chương trình và có thể dùng được trong bất cứ đoạn lệnh nào
của chương trình. Biến như vậy gọi là biến chung hay biến toàn cục.
4.2. Các kiểu dữ liệu C#
C# có hai nhóm kiểu dữ liệu riêng biệt ,có tên các kiểu giá trò và các kiểu
tham chiếu .
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
Các kiểu tham chiếu được truy cập gián tiếp bằng các biến tham chiếu
trỏ đến đối tượng.Do trong C# ngăn cấm các biến trỏ nên nếu muốn dùng
các biến trỏ ta chỉ có thể thực hiện trong mả ‘không an tòan’ (unsafe) ở
đó cơ chế gom gác không hoạt động.
C# cung cấp hai kiểu tham chiếu đònh sẳn object và string.Tất cả các lớp
khác đều dựa vào object ,cho dù chúng không đòi tính thừa kế từ các
lớp khác .
4.3. Các toán tử trong C#
Bảng dưới đây liệt kê tất cả các toán tử hổ trợ bởi C# :
Phạm Trù Các toán tử
Số học + , - , * , / , %
Lôgic & , | , ! , ^ ,~,&& ,||
Ghép chuỗi +
Gia số và Giảm số ++ , _ _
Chuyển bit << , >>
So sánh = = ,!= ,< ,> ,<= ,>=
Gán = ,+=,-=,*=,/=,%=,&=,|=,^=
,<<=,>>=
Truy cập thành viên .
Lập chỉ mục [ ]
p đổi ( )
Taọ đối tượng new
4.4. Cấu trúc tuyển và cấu trúc lặp
4.4.1. Cấu trúc phát biểu lệnh (statements)
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 ;
}
Phát biểu switch :
Cú Pháp :
Switch <biến hay biểu thức>{ ‘xét biến hay biểu thức này
Case <các giá trò> ‘Nếu biến hay biểu thức bằng các giá
trò này
<các câu lệnh> ‘thì thực hiện đoạn lệnh này
…
break ;
Case <các giá trò>
<các câu lệnh>
…
break ;
Default :
<các câu lệnh> ‘thì thực hiện đoạn lệnh này
…
break;
}
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 17
4.4.2. Các cấu trúc lặp
Mệnh đề While :
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 :
[modifier] return-type method-name([parameterlist])
{
. . . . . .
}
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 18
Mọi thủ tục phải có một kiểu trả về ;Nếu thủ tục không trả về một giá trò
,kiểu trả về của nó là void.Một thủ tục có thể không chấp nhận tham số nào
,trong trường hợp đó theo sau tên thủ tục là các dấu ngoặc đơn trống .
Theo sau khai báo thủ tục là thân thủ tục ,có dạng một khối mã (tức là các
câu lệnh chứa trong các dấu “( )” .
Ví dụ dưới đây nêu phần đònh nghóa của square ,chấp nhận một giá trò
float và trả về bình phương của nó :
double square(float n)
{
return n*n;
}
Để gọi một thủ tục,ta dùng tên nó ,cung cấp các đối số cần thiết ,và lưu
giá trò trả về .
Ví dụ :
Double d=square(3.0F);
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
biệt .
Ví dụ ,lớp Console tồn tại bên trong không gian tên System .Thay vì sử
dụng chỉ thò using ,nó có thể dùng tên đấy đủ để thay vào ,như được trình
baỳ sau đây :
System . ConSole.WriteLine(“ abc“);
4.7. Arrays (Mảng) :
Trong C# ,Array (mảng) là đối tượng khá đặt biệt .Tất cả các đối
tượng kiểu mảng đều được ngầm đònh là kế thừa từ kiểu dử liệu
System.Array .Lớp cơ sở System.Array cung cấp rết nhiều phương thức
được sử dụng trong qúa trình thao tác trên mảng .
Cú Pháp sau đây được sử dụng để cấp phát một mảng cấp 1
Array-type[ ] var = new array-type [size]
Mảng trong C# sử dụng chỉ mục đếm từ 0.
Mảng Array trong C# không nhất thiết là một chiều .Cú pháp để khởi tạo
các mảng đa chiều là một phần mở rộng đơn giản của trường hợp chiều
đơn.
Các Mảng đa chiều :
C# hổ trợ hai kiểu mảng đa chiều –chử nhật và răng cưa .Trong
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][ ][ ];
arr5[0]=new int[3][ ];
arr5[0][0]=new int[3 ];
arr5[0][1]=new int[4];
return 0;
}
}
4.7. Các Lớp Ngoại Lệ
C# cung cấp một số lớp ngoại lệ ,tất cả đều thừa kế từ lớp
System.Exception .Các lớp ngoại lệ chung mà bạn có thể gặp khi viết
mã ứng dụng được tổng kết trong bảng sau :
Lớp Ngoại Lệ Nguyên Nhân
SystemException -
Một kiểm tra thời gian chạy bò thất bại
;được dùng như một lớp cơ sở cho các
ngoại lệ khác .
AccessException - Không thể truy cập một thành viên
kiểu,
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 21
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 :
Try {
//code có thể bò lỗi
}catch( System Exception se ){
//xữ lý một ngo lệ vừa phát sinh.
}
Tìm Hiểu C# và WebService GVHD : Nguyễn Chánh Thành
SVTH : Lê Phước Hùng Trang 22
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
SVTH : Lê Phước Hùng Trang 23
SQL Server .NET data provider :Chứa các lớp cho phép truy
cập một cách tối ưu hoá đến dữ liệu của Microsoft SQL Server
7.0 hoặc mới hơn.
OLEDB.NET :Chứa các lớp cho phép truy cập một cách tối ưu
hoá đến dữ liệu của Microsoft SQL Server 6.5 ,đồng thời cho
phép truy cập đến những cơ sở dữ liệu khác như
Oracle,Syhase,Aceess….
1.2 ADO.NET Namespaces :
Các lớp ADO.NET được chia và lưu trong sáu không gian tên
namespace như sau:
System::Data
Namespace này là lõi trong ADO.NET ,nó chứa các lớp chung được
sử dụng cho môi kiểu dữ liệu nguồn .
System::Data::Common
Đònh nghóa những giao diện chung được dùng để cài đặt thích hợp
bởi mỗi nhà cung cấp dữ liệu.
System::Data::SqlClient
Đònh nghóa các lớp cho nhà cung cấp dữ liệu SQL Server .Những lớp
này bao gồm SqlConnection,SqlCommand, SqlParameter,
SqlDataReader, SqlTransaction, SqlDataAdapter .
System::Data::OleDb
Đònh nghóa các lớp cho nhà cung cấp dữ liệu OLEDDB .Những lớp
này bao gồm :
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:
Thực thi phát biểu và nhận kết quả trả về là một giá trò đơn .
SqlCommand sử dụng phương thức ExecuteScalar cho mục đích
này.
Thực thi phát biểu cập nhật cơ sở dữ liệu . SqlCommand sử dụng
phương thức ExecuteNonQuery cho mục đích này.
Thực thi phát biểu truy vấn cơ sở dữ liệu . SqlCommand sử dụng
phương thức ExecuteReader cho mục đích này. ExecuteReader
trả về đối tượng SqlDataReader cung cấp cơ chế truy xuất nhanh
vào một hàng dữ liệu duy nhất trong kết quả truy vấn được . Bạn
sẽ sử dụng đối tượng SqlDataReader này để xử lý kết quả thu
được.
3.
Tạo ứng dựng ngắt kết nối:
Ứng dụng ngắt kết nối (disconnected application)là một ứng dụng
không cần duy trì kết nối thường xuyên với nguồn dữ liệu . Ví dụ ,một
người bán hàng có thể đòi hỏi ứng dụng khả năng truy cập dữ liệu trong cơ
sở dữ liệu trung tâm ,thâm chí khi họ ra khỏi văn phòng.
ADO.NET cung cấp lớp DataSet cho phép bạn khả năng truy cập được dữ
liệu trong những ứng dụng ngắt kết nối.
DataSet
DataTableCollection DataTable
DataColumnCollection DataColumn
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á
trò
DataTable có một tập hợp các đối tượng DataRow .Những DataRow này
chứa dữ liệu cho DataSet . Để điền đầy đủ một tập DataSet với dữ liệu ,bạn
phải sử dụng đối tượng tiếp hợp dữ liệu.
Dưới đây là hình minh họa cách làm việc của bộ tiếp hợp dữ liệu với
những tập dữ liệu DataSet.
Data
Source
DataAdapter
DataTable
Fill
Update