Giáo trình Lập trình mạng (Phần 2)
Tóm tắt Giáo trình Lập trình mạng (Phần 2): ...chia phần mềm trờn mỗi thiết bị ra làm hai thành phần logic tương ứng với mỗi kờnh. Thành phần Protocol Interpreter (PI) là thành phần quản lý kờnh ủiều khiển, với chức năng phỏt và nhận lệnh. Thành phần Data Transfer Process (DTP) cú chức năng gửi và nhận dữ liệu giữa phớa client với server. ...teLine(request); break; } case "PASS": { sw.WriteLine("230. Dang nhap thanh cong"); sw.Flush(); Console.WriteLine(request); break; } 85 case "MKD": { string folderName = request.Substring(4, request.Length - 4); folderName = rootDir + "/" + folderName.Trim(); t...so * ps1.th_ps.mauso; kq.th_ps.mauso = ps1.th_ps.mauso * ps2.th_ps.mauso; return kq; } Cài ủặt hàm cập nhật từ ủối tượng xử lý phõn số khỏc public void CapNhat(XL_PHANSO ps) { this.th_ps.tuso = ps.th_ps.tuso; this.th_ps.mauso = ps.th_ps.mauso; } Cài ủặt hàm rỳt gọn phõn số ...
i ra, TcpChannel và HttpChannel đều cĩ khả năng extend thành
những Custom Channel của bạn.
Làm sao để tạo một Object cĩ thể Remote được trong .NET Remoting?
- Một Object remote được chỉ là một object thơng thường nhưng phải được inherit từ
MarshalByRefObject. ðoạn code sample ở hình 4.2 là một ví dụ đơn giản về
Remotable Object. ðối tượng SampleObject trong hình cĩ một số method đơn giản trả
về phép tính tổng, hiệu, tích, thương của hai số nguyên. Giá trị trả về của hàm là kiểu
số nguyên, kiểu built-in của .NET framework. Nếu bạn muốn trả về kiểu dữ liệu bạn tự
định nghĩa, hoặc một instance của class bạn định nghĩa thì lớp đĩ của bạn phải được
khai báo với attribute Serializable.
using System;
public class SampleObject: MarshalByRefObject
{
public int Add(int a, int b)
{
int c = a + b;
104
return c;
}
public int Subtract(int a, int b)
{
int c = a - b;
return c;
}
public int Multiply(int a, int b)
{
int c = a * b;
return c;
}
public int Divide(int a, int b)
{
int c;
if (b != 0)
c = a / b;
else
c = 0;
return c;
}
}
Hình 4.2: Remotable Object Sample
Tạo chương trình Server để host Remotable Object
- Kế tiếp, chúng ta cần tạo ra một chương trình server để lắng nghe những request từ
phía client. Trong ví dụ này chúng ta sẽ sử dụng TCP/IP channel. ðầu tiên chúng ta
tạo một instance channel và đăng kí một port tương ứng cho nĩ. Khi cĩ một Request từ
phía client, server sẽ nhận request đĩ và Remote Object của chúng ta sẽ thực thi
Request này. Trong .NET Remoting, cĩ hai cơ chế để tạo instance của Remote Object
rồi từ đĩ thực thi request: Singleton và Singlecall. Tùy vào mục đích sử dụng, nhu cầu
của chương trình mà server của bạn cĩ thể khai báo theo cơ chế
WellKnownObjectMode.SingleCall, hay WellKnownObjectMode.Singleton. Khi khai
báo Singleton, Remote Object sẽ được sinh ra, thực thi request, reply lại phía client và
sau đĩ, object này vẫn được lưu lại chứ khơng bị hủy đi. ðến khi nào process chạy
chương trình server kết thúc thì instance này mới bị trình hốt rác Garbage Collector
hốt đi. Và ngược lại, khi khai báo là SingleCall, Remote Object sẽ được khởi tạo và
hủy đi đối với mỗi lần nhận request từ phía client, cơ chế này tương tự như mơ hình
.NET Web Service truyền thống.
- Nếu bạn muốn sử dụng .NET Remoting trong IIS thì khơng cần tạo một chương trình
server như thế này. Và tất nhiên, IIS chỉ hỗ trợ HttpChannel. Nếu host 1 .NET
Remoting bên trong IIS bạn sẽ mặc nhiên sử dụng được cơ chế Authentication của IIS,
ngược lại nếu làm một chương trình server để host như trên thì bạn phải cài đặt cơ chế
Authentication của riêng mình. ðể host một Remote Object bên trong IIS, trước tiên
phải tạo 1 Virtual Directory cho application, sau đĩ đặt đoạn code đăng kí service bên
trong event Application_Start (file global.asax)
105
- Trong ví dụ này, chúng ta sẽ khơng sử dụng IIS mà sẽ tạo một console application.
Cĩ nhiều lựa chọn khi khơng sử dụng IIS, ta cĩ thể sử dụng console application, Win
form application nhưng trong thực tế, người ta sẽ sử dụng một Windows Service để
làm. Cịn Console application hay Winform Application thường chỉ dùng để minh họa.
Trong ví dụ này, chúng ta sẽ sử dụng port 9999 cho may mắn. Cĩ thể một chương
trình nào đĩ trong máy của bạn đã sử dụng port này, nếu bị như vậy bạn phải chọn port
khác. Và sau cùng, để kiểm tra xem máy bạn đang lắng nghe trên những port nào (port
nào đã bị sử dụng) thì ta dùng lệnh “netstat –a” trong command prompt.
- Cịn bây giờ, hãy xem một console application project với 1 class tên là
SampleSerrver. Trong project này tơi đã thêm reference tới System.Runtime.Remoting
vào trong project để nĩ cĩ thể chạy được.
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class Server
{
public static int Main()
{
TcpChannel chan = new TcpChannel(9999);
ChannelServices.RegisterChannel(chan, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(SampleObject)
, "SampleNetRemoting", WellKnownObjectMode.SingleCall);
Console.WriteLine("Hit to exit...");
Console.ReadLine();
}
}
Hình 4. 3: Sample Server host Remotable Object
Tạo chương trình client để sử dụng Remote Object.
- Chương trình client trong ví dụ này cũng khá đơn giản, nĩ sẽ connect vào server, tạo
một instance của Remote Object và excute method tính tổng, hiệu, tích, thương.
- Các bạn lưu ý rằng trong cả chương trình client và chương trình server đều phải
reference tới class SampleObject. Client sẽ gọi method của instance SampleObject,
nhưng server sẽ thực thi xử lý nĩ chứ khơng phải phía client.
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
public class Client
{
106
public static int Main (string[] argv)
{
TcpChannel chan = new TcpChannel();
ChannelServices.RegisterChannel(chan, false);
SampleObject obj = (SampleObject)Activator.GetObject(
typeof(SampleObject), "tcp://localhost:9999/SampleNetRemoting");
if (obj == null)
System.Console.WriteLine("Could not locate server");
else
{
int a = Convert.ToInt32(argv[0]);
int b = Convert.ToInt32(argv[1]);
int c = obj.Add(a, b);
Console.WriteLine("a + b = {0}", c);
c = obj.Subtract(a, b);
Console.WriteLine("a - b = {0}", c);
c = obj.Multiply(a, b);
Console.WriteLine("a * b = {0}", c);
c = obj.Divide(a, b);
Console.WriteLine("a / b = {0}", c);
}
Console.ReadKey();
}
}
Hình 4: Sample Client Application
Test thử chương trình
- Trước tiên chạy chương trình server, bạn sẽ thấy message “Press the enter key to
exit” trong cửa sổ console. Như vậy server của bạn đang lắng nghe trên port 9999. Bây
giờ bạn hãy chạy chương trình client và sẽ nhìn thấy kết quả trả về trên màn hình. Bạn
cĩ thể chạy nhiều client để cùng request đến 1 server nhưng khơng thể chạy nhiều
server. Bạn cĩ thể copy chương trình server sang một máy của bạn mình và nhờ chạy
thử, cịn bạn sửa lại chương trình client, sửa “localhost” thành IP của máy bạn mình và
chạy thử để thấy kết quả.
Tĩm tắt:
- Ví dụ ở trên đã sử dụng code C# để khai báo các cấu hình cho server và client tuy
nhiên .NET Remoting cho phép ta cấu hình trước trong file config (App.config). Các
bạn cĩ thể tham khảo một số resource phía dưới để biết cách làm.
- .NET Remoting là một trong những kĩ thuật tiện lợi cho những chương trình dạng
Distributed Computing. Cách sử dụng nĩ phức tạp hơn Web Service tuy nhiên nếu bạn
107
muốn tăng performance thì .NET Remoting với Singleton và TCP channel sẽ là lựa
chọn rất tốt.
- Với sự ra đời của .NET Framework 3.x, Microsoft đã giới thiệu nền tảng mới hơn
cho các kĩ thuật RPC, đĩ là WCF mạnh hơn .NET Remoting rất nhiều.
4.2.2. Khai báo, cài đặt và đăng ký giao diện từ xa
ðể cho chương trình cĩ tính khả chuyển cao thay vì người ta xây dựng lớp
Remote Object như ví dụ trên chúng ta khai báo một giao diện là lớp Remote Object
và trong chương trình phía Server ta sẽ cài đặt giao diện này và đăng ký giao diện từ
xa. Như vậy để triển khai một hệ thống Remoting ta cĩ 3 chương trình: Giao diện
Remote Object, chương trình Server triển khai giao diện và đăng ký giao diện từ xa,
chương trình Client triệu gọi phương thức từ xa.
- Khai báo giao diện từ xa
- Cài đặt và đăng ký giao diện từ xa
4.2.3. Triệu gọi phương thức từ xa
- Chương trình phía Client chúng ta triệu gọi phương thức được cung cấp bởi
giao diện tử xa đã được đăng ký và cung cấp bởi Server
4.3. Web Services
4.3.1. Giới thiệu về Web Services
1. Web Service là gì?
Web service là một Modul chương trình cung cấp chức năng của các ứng dụng cho
phép triệu gọi và truy cập từ xa thơng qua Internet. Web service sử dụng các chuẩn của
Internet như XML và HTTP. Việc sử dụng Web service phụ thuộc nhiều vào sự chấp
nhận của XML, một ngơn ngữ mơ tả dữ liệu mới dùng để truyền tải dữ liệu thơng qua
Web.
Bất kỳ một Web service nào cũng cĩ thể được sử dụng, hoặc là trong ứng dụng cục
bộ hoặc truy cập từ xa qua Internet bởi nhiều ứng dụng. Do cĩ khả năng truy cập qua
các giao diện chuẩn mà một Web service cho phép nhiều hệ thống khác nhau cùng làm
việc với nhau như một tiến trình duy nhất trên Web.
2. Vai trị của Web service
Web service ra đời đã mở ra một hướng mới cho việc phát triển các ứng dụng trên
Internet. Web services tạm dịch là các dịch vụ trên web. Cơng nghệ web services ra
đời là một cuộc cách mạng hĩa cách thức hoạt động của các dịch vụ B2B và B2C.
Web services kết hợp sử dụng nhiều cơng nghệ khác nhau cho phép hai ứng dụng cùng
ngơn ngữ, độc lập hệ điều hành trao đổi được với nhau thơng qua mơi trường mạng
Internet. Tuy nhiên những cơng nghệ sử dụng ở đây khơng nhất thiết phải là những
cơng nghệ mới. ðây là điểm khác biệt của web services so với các cơng nghệ khác, đĩ
chính là khả năng kết hợp các cơng nghệ đã cĩ như là XML, SOAP, WSDL, UDDI để
tạo ra các service, đặc điểm này làm nổi bật vai trị của web services.
108
Web Service được thiết kế nhằm cung cấp một cơ chế cho phép các chương trình
giao tiếp với nhau qua Internet (sử dụng các giao thức Internet như HTTP GET, HTP
POST và SOAP).
3. ðặc điểm Web service
- Web service cho phép client và server tương tác được với nhau mặc dù trong những
mơi trường khác nhau.
- Web Service thì cĩ dạng mở và dựa vào các tiêu chuẩn XML và HTTP là nền tảng kỹ
thuật cho web service. Phần lớn kỹ thuật của web service được xây dựng là những dự
án nguồn mở. Bởi vậy chúng độc lập và vận hành được với nhau.
- Web Service thì rất linh động: Vì với UDDI và WSDL, thì việc mơ tả và phát triển
web service cĩ thể được tự động hố.
- Web service được xây dựng trên nền tảng những cơng nghệ đã được chấp nhận.
- Web service cĩ dạng modul.
- Web service cĩ thể được cơng bố (publish) và gọi thực hiện qua mạng.
Ngày nay web service được sử dụng rất nhiều trong những lĩnh vực khác nhau
của cuộc sống như:
- Dịch vụ chọn lọc và phân loại tin tức: là những hệ thống thư viện kết nối đến các
web portal để tìm kiếm các thơng tin từ các nhà xuất bản cĩ chứa những khố muốn
tìm.
- Dịch vụ hiển thị danh sách đĩa nhạc dành cho các cơng ty thu thanh.
- Ứng dụng đại lý du lịch cĩ nhiều giá vé đi du lịch khác nhau do cĩ chọn lựa phục
vụ của nhiều hãng hàng khơng.
- Bảng tính tốn chính sách bảo hiểm dùng cơng nghệ Excel/COM với giao diện web.
- Thơng tin thương mại bao gồm nhiều nội dung, nhiều mục tin như: dự báo thời tiết,
thơng tin sức khoẻ, lịch bay, tỷ giá cổ phiếu,
- Những giao dịch trục tuyến cho cả B2B và B2C như: đặt vé máy bay, làm giao kèo
thuê xe.
- Hệ thống thơng tin dùng java để tính tốn tỷ giá chuyển đổi giữa các loại tiền tệ. Hệ
thống này sẽ được các ứng dụng khác dùng như một web service.
4. Kiến trúc Web service
Kiến trúc của Web service bao gồm các tầng như sau:
109
Hình 1: Kiến trúc Web service
Trong đĩ bao gồm các tầng như sau:
- Tầng vận chuyển: cĩ nhiệm vụ truyền thơng điệp giữa các ứng dụng mạng, bao
gồm những giao thức như HTTP, SMTP, FTP, JSM và gần đây nhất là giao
thức thay đổi khổi mở rộng (Blocks Extensible Exchange Protocol- BEEP).
- Tầng giao thức tương tác dịch vụ ( Service Communication Protocol) với cơng
nghệ chuẩn là SOAP. SOAP là giao thức nằm giữa tầng vận chuyển và tầng mơ
tả thơng tin về dịch vụ, SOAP cho phép người dùng triệu gọi một service từ xa
thơng qua một message XML.
- Tầng mơ tả dịch vụ (Service Description) với cơng nghệ chuẩn là WSDL và
XML. WSDL là một ngơn ngữ mơ tả giao tiếp và thực thi dựa trên XML. Web
service sử dụng ngơn ngữ WSDL để truyền các tham số và các loại dữ liệu cho
các thao tác, các chức năng mà web service cung cấp.
- Tầng dịch vụ ( Service): cung cấp các chức năng của service.
- Tầng đăng ký dịch vụ (Service Registry) với cơng nghệ chuẩn là UDDI. UDDI
dùng cho cả người dùng và SOAP server, nĩ cho phép đăng ký dịch vụ để
người dùng cĩ thể gọi thực hiện service từ xa qua mạng, hay nĩi cách khác một
service cần phải được đăng ký để cho phép các client cĩ thể gọi thực hiện
- Bên cạnh đĩ để cho các service cĩ tính an tồn, tồn vẹn và bảo mật thơng tin
trong kiến trúc web service chúng ta cĩ thêm các tầng Policy, Security,
Transaction, Management giúp tăng cường tính bảo mật, an tồn và tồn vẹn
thơng tin khi sử dụng service.
4.3.2. Giao thức SOAP
110
SOAP là chữ viết tắt của cụm từ “Simple Object Access Protocol – Giao thức truy cập đối
tượng đơn giản”, nhưng với sự xem xét mới nhất thì, SOAP sẽ khơng cịn là một từ viết tắt
nữa. Chuẩn SOAP ghi nhận XML được thể hiện thế nào bên trong tài liệu SOAP, làm thế nào
nội dung của thơng điệp được truyền tải, và làm thế nào thơng điệp được xử lý ở cả hai phía
gởi và nhận. SOAP cũng cung cấp một tập các từ vựng chuẩn.
Các thuật ngữ:
Như bẩt kỳ cơng nghệ nào, SOAP cũng cĩ tập các thuật ngữ của riêng nĩ. Cĩ nhiều thuật ngữ
được sử dụng thường xuyên để mơ tả các khía cạnh khác nhau của chuẩn SOAP. Nhiều lập
trình viên dùng các thuật ngữ này mà khơng thật sự hiểu ý nghĩa của nĩ. ðể hiểu thật sự các
khái niệm địi hỏi phải tốn một thời gian để hiểu ý nghĩa của từng thuật ngữ và làm thế nào để
áp dụng cho cả chuẩn SOAP và một Web Services thực thụ
Chú ý: Chuẩn SOAP khơng chỉ là chuẩn XML mà chuẩn này cịn bao gồm các thơng điệp
SOAP cĩ hành vi như thế nào, các phương tiện vận chuyển khác nhau, cách mà các lỗi được
xử lý..
Sự truyền tải dữ liệu
SOAP Binding
Thuật ngữ mơ tả làm thế nào một thơng điệp SOAP tương tác được với một giao thức vận
chuyển như HTTP, SMTP hay FTP để di chuyển trên Internet. ðiều quan trọng là SOAP di
chuyển bằng một giao thức chuẩn để liên lạc với các sản phẩm Web Services khác.
Trước SOAP, nhiều người phát triển đã tạo ra các phương pháp của riêng họ để chuyển tải
một tài liệu XML trên mạng. Các cách này vẫn hoạt động tốt trong phạm vi một nhĩm cụ thể.
Tuy nhiên khi bạn cần làm việc với một nhĩm khác ở trong hay bên ngồi cơng ty thì điều
này trở nên khĩ khăn vì phải huấn luyện và cĩ thể thay đổi để làm việc với việc truyền tải tài
liệu XML mà họ đang sử dụng. Bằng cách sử dụng một tài liệu XML chuẩn trên các giao thức
chuẩn, cơng việc cần làm khi cộng tác với nhau sẽ được giảm thiểu tối đa
SOAP Message Exchang Pattern (MEP)
Thuật ngữ mơ tả làm thế nào mà một tài liệu SOAP trao đổi giữa phía máy khách và chủ.
Thơng điệp SOAP sở hữu một liên kết, như là HTTP, để nĩ cĩ thể truyền trên Internet. Việc
nĩi chuyện giữa máy khách và chủ, ở đây là các nút, xác định các hành động mà cả hai phía
thực hiện.
Nhắc lại SOAP là một XML đĩng gĩi RPC. Vì thế, MEP hồn tồn là yêu cầu và phản hồi
giữa máy khách và chủ (hay các nút khác). Như vậy nếu cĩ nhu cầu liên lạc giữa các nút thì
việc này được thực hiện bằng nhiều yêu cầu và phản hồi để hồn tất việc truyền thơng điệp.
Cách này khác hẳn với các cơng nghệ đối tượng từ xa khác như CORBA, cơng nghệ đĩ được
thực hiện chỉ trong một kết nối.
SOAP Application
Một ứng dụng SOAP đơn giản là một ứng dụng dùng SOAP theo một vài cách khác nhau. Vài
ứng dụng hồn tồn dựa trên chuẩn SOAP, như là Web Services cổ phiếu, hoặc dùng chuẩn
SOAP để nhận mã và các cập nhật của phần mềm. Chú ý là một ứng dụng cĩ thể tạo, sử dụng
hoặc là nút trung gian của Web Services.
SOAP Node
Trách nhiệm của một nút cĩ thể bao gồm gởi, nhận, xử lý hoặc truyền tải lại một thơng điệp
SOAP. Một nút chỉ là một phần nhỏ của phần mềm, xử lý một tài liệu SOAP phụ thuộc vào
111
vai trị của nĩ. Bên cạnh việc truyền dữ liệu, một nút cĩ trách nhiệm đảm bảo thơng tin XML
trong tài liệu SOAP phải đúng ngữ pháp theo chuẩn SOAP.
SOAP Role
Một vai trị của SOAP định nghĩa một nút cụ thể hoạt động như thế nào. Nĩ cĩ thể là nút gởi,
nhận hoặc nút trung gian.
SOAP Sender
Nút gởi là nút gởi yêu cầu SOAP. Nếu bạn nghĩ đến ví dụ của ứng dụng khách chủ thì khi
ứng dụng khách thực hiện yêu cầu, nĩ gởi thơng điệp tới ứng dụng chủ để yêu cầu vài thơng
tin.
SOAP Receiver
Ngược lại với SOAP sender là nút nhận.
SOAP Intermediary
Một nút trung gian cĩ thể xem một thơng điệp SOAP và tương tác trên vài phần thơng tin của
thơng điệp, và chuyển đến vị trí kế tiếp của thơng điệp. Một nút trung gian thường hoạt động
như một router. Một router sẽ xem xét thơng tin của gĩi tin chuyển trên mạng, tìm điểm kế
tiếp của gĩi tin và chuyển gĩi tin đển đĩ.
Message Path
Một thơng điệp SOAP di chuyển từ phía bên gởi đến phía bên nhận thơng điệp thơng qua
nhiều nút trung gian. Tuyến đường đi của thơng điệp được gọi là một Message Path.
Initial SOAP Sender
Nút gởi yêu cầu SOAP đầu tiên là nút gởi SOAP ban đầu.
SOAP Feature
Một đặc điểm SOAP là một phần chức năng của phần mềm hỗ trợ chức năng SOAP.
Các thuật ngữ liên quan đến XML
Chuẩn SOAP cũng định nghĩa một tập nhỏ các phần tử XML để đĩng gĩi dữ liệu được truyền
giữa các nút. Thật sự chỉ cĩ vài phần tử vì phần thân của thơng điệp cĩ thể khác nhau phụ
thuộc vào cài đặt. Sự uyển chuyển này được cho phép bởi chuẩn SOAP.
SOAP Message
ðây là tài liệu XML được truyền bởi một nút SOAP gởi hoặc nhận. Một nút gởi hoặc nút
khách tạo ra một tài liệu XML chứa thơng tin mà phía bên khách cần từ phía chủ. Một khi tài
liệu được truyền, phía bên chủ phân giải thơng tin trong tài liệu để truy xuất các giá trị khác
nhau và tạo một thơng điệp SOAP mới để phản hồi.
SOAP Envelope
ðây là phần tử gốc của tài liệu SOAP XML. Tài liệu SOAP chứa nhiều định nghĩa khơng gian
tên (namespace) nhưng các phần tử liên quan tới thơng điệp SOAP sẽ cĩ ENV: là tiếp đầu
ngữ.
SOAP Header
112
Phần đầu của một thơng điệp SOAP chứa một khối thơng tin đầu trong tài liệu XML để định
tuyến và xử lý thơng điệp SOAP. Dữ liệu này tách rời khỏi phần thân của tài liệu cĩ chứa
thơng tin liên quan đến đối tượng được gọi.
SOAP Header Block
Phần đầu của SOAP chứa nhiều phần giới hạn hay là nhiều khối thơng tin cĩ một khối thơng
tin của phần đầu. Những khối thơng tin của phần đầu này chứa thơng tin về các nút trung gian
vì một nút cần biết nút kế tiếp để thơng điệp được gởi đến.
SOAP Body
Phần thân của SOAP thật sự chứa thơng tin của đối tượng để xử lý thơng tin. Phần thân sau
khi được phân tách sẽ trở thành đối tượng. ðối tượng xử lý thơng tin và kết quả được đặt
trong phần thân của tài liệu trả về.
SOAP Fault
ðây là một phần thơng tin của SOAP chứa thơng tin đến bất kỳ lỗi gì xảy ra tại một nút
SOAP.
4.3.3. Xây dựng Web Services
- Tạo một Web Services project
- Tạo Web Method
113
- Chạy thử Web Services danh sách các hàm sẽ được liệt kê
- Chọn hàm Add
114
- Sau khi nhập các tham số vào, nhấn Invoke. Kết quả sẽ xuất hiện
4.3.4. Triệu gọi Web Services từ ứng dụng .NET, Java và các ngơn ngữ khác
- Sau khi xây dựng Web Server song ta cĩ thể triệu gọi nĩ từ một ứng dụng
khác
- Tạo một Window Form
115
- Add Web Reference
- Tạo màn hình:
116
- Viết hàm xử lý nút nhấn:
- Chạy thử ứng dụng ta cĩ kết quả:
4.4 Thảo luận về các ứng dụng phân tán
4.5. Bài tập áp dụng
1. Viết chương trình Chat sử dụng cơng nghệ Web Services
2. Viết chương trình Calculator bằng cơng nghệ Web Services
3. Viết chường trình quản lý FileManager bằng cơng nghệ Web Services.
117
TÀI LIỆU THAM KHẢO
1. Richard Blum, C# Network Programming, 2003
2. Fiach Reid, Network programming in NET with C# and VB.NET, Digital
Press, 2003
3. Bài giảng “Nhập mơn Cơng nghệ phần mềm”, ðại học KHTN
4. Bài giảng “Xây dựng phần mềm hướng đối tượng”, ðại học KHTN
5. Bài giảng “Lập trình truyền thơng”, ðại học Cần Thơ
6. Bài giảng “Cơng nghệ .NET”, Khoa CNTT – ðại học SPKT Hưng Yên
7. Bài giảng “Java Nâng cao”, Khoa CNTT- ðại học SPKT Hưng Yên
8. Các ví dụ tại Website: www.java2s.com
File đính kèm:
giao_trinh_lap_trinh_mang_phan_2.pdf



