ASP.NETWebServicehay.NETRemoting
Qua thời gian, việc xây dựng ứng dụng như là một tập hợp thành phần phân phối
vào mạng chung và làm việc với nhau như là một phần trong chương trình tổng
thể ngày càng trở nên phổ biến. Hình thức này thường được gọi là kỹ thuật "đối
tượng-thành phần", như Distributed Component Object Model (DCOM) của
Microsoft, Common Object Request Broker Architecture (CORBA) của Object
Management Group, Remote Method Invocation (RMI) của Sun. Chúng cung cấp
cấu trúc mềm dẻo, tin cậy để nắm bắt kịp thời sự phát triển cần thiết của các ứng
dụng.
Mặc dù công nghệ dựa trên kiểu thành phần này hoạt động tốt trong môi trường
Intranet, nhưng với Internet lại xuất hiện hai vấn đề đáng kể. Đầu tiên là chúng
không thực hiện theo phương thức từng phần. Tất cả hoạt động xử lý dựa trên các
đối tượng (object) nhưng lại không đưa ra từng chi tiết cụ thể như quản lý chu kỳ
hoạt động, hỗ trợ xây dựng và hỗ trợ mức kế thừa. Thứ hai, quan trọng hơn là quá
tập trung vào hình thức truyền thông kiểu RPC điển hình dẫn đến việc xây dựng
các hệ thống kết hợp chặt chẽ quanh các viện dẫn mở của phương thức đối tượng.
Trái lại, các ứng dụng Web dựa trên cơ sở trình duyệt lại được kết hợp lỏng và
thực hiện theo từng thành phần rõ rệt. Chúng liên lạc bằng cách dùng giao thức
HTTP để chuyển đổi dữ liệu kiểu MIME sang nhiều kiểu định dạng khác nhau.
Các Webservice thích ứng với mô hình lập trình Web truyền thống để dùng được
cho tất cả các loại ứng dụng, không chỉ kiểu cơ sở trình duyệt. Chúng trao đổi
thông điệp SOAP bằng cách dùng HTTP và nhiều giao thức Internet khác. Do các
Web service được xây dựng dựa trên tiêu chuẩn công nghệ như HTTP, XML,
SOAP và WSDL nên khi muốn đưa tính năng ứng dụng lên Internet, chúng còn
phải phụ thuộc vào ngôn ngữ, platform và thiết bị lập trình.
Cấu trúc cơ sở WebserviceASP.NET cung cấp một API đơn giản cho các dịch vụ
Web dựa trên cách thức ánh xạ thông tin SOAP vào các viện dẫn phương thức.
Quá trình hoàn thiện bằng cách cung cấp mô hình lập trình rất đơn giản dựa trên
hình thức ánh xạ các trao đổi thông tin SOAP vào từng viện dẫn phương thức
riêng. Các client của ASP.NETWeb services không cần phải biết đến platform,
mô hình đối tượng hay ngôn ngữ lập trình dùng để xây dựng chúng. Chính các
service cũng không cần biết gì về client đang gửi thông tin đến cho mình. Chỉ có
một đòi hỏi duy nhất là cả hai bên phải thống nhất kiểu định dạng thông tin SOAP
được tạo ra và sử dụng, như định nghĩa biểu thức rút gọn của Webservice kiểu
WSDL và XML Schema (XSD).
.NET Framework hỗ trợ hai mô hình lập trình phân phối riêng biệt: Webservice
và các đối tượng phân phối, là nguyên nhân thường gây ra nhầm lẫn cho các nhà
phát triển. Khi nào nên để hệ thống sử dụng ASP.NETWebservice và khi nào nên
dùng .NET Remoting? Muốn có câu trả lời cho câu hỏi này, trước hết bạn cần phải
hiểu cơ chế hoạt động của cả hai công nghệ này như thế nào.
Nối tiếp và Metadata
Tất cả hoạt động phân phối truyền thông suy cho cùng cũng chỉ thực hiện hai
nhiệm vụ: sắp xếp các phiên của kiểu dữ liệu lập trình vào phần thông tin có thể sẽ
được gửi qua mạng và cung cấp bản bản mô tả thông tin đó. Trước đây, quá trình
này được thực hiện bằng cách dùng một số dạng thức nối tiếp hoặc sắp xếp theo
thứ tự, sau này sử dụng các dạng metadata. Điểm khác nhau cơ bản giữa
ASP.NET Web services và .NETRemoting là cách thức chúng sắp xếp thứ tự dữ
liệu vào phần thông tin như thế nào và kiểu định dạng chúng chọn cho metadata ra
sao.
ASP.NET Web Services, XmlSerializer và XSD
ASP.NET Web Services dựa trên
lớp System.Xml.Serialization.XmlSerializer để sắp xếp dữ liệu vào phần thông
tin SOAP hoặc lấy dữ liệu từ đó ra trong thời gian chạy. Với metadata, chúng tạo
các định nghĩa WSDL và XSD mô tả phần thông tin chứa những gì. Dựa trên các
WSDL và XSD thuần nhất giúp metadata của ASP.NETWeb Services có khả
năng di động. Chúng mô tả cấu trúc dữ liệu theo cách khiến các toolkit Web
service trên nhiều platform khác và nhiều mô hình lập trình khác vẫn có thể hiểu
được. Trong một số trường hợp còn liên quan ràng buộc tới nhiều kiểu lấy ra từ
một Web service. XmlSerializer chỉ sắp xếp thứ tự những thứ được mô tả trong
XSD. XmlSerializer không sắp xếp phần đồ hoạ đối tượng và hỗ trợ hạn chế cho
các kiểu lưu trữ.
Mặc dù các giới hạn này dường như không đáng kể trước đối tượng phân phối
theo lớp, nhưng chúng giúp đảm bảo thống nhất thao tác giữa các phần với
framework Webservice khác - mục đích cơ bản của mô hình Webservice kết hợp
lỏng. Phần hỗ trợ cho thao tác giữa các phần được tăng cường với tập hợp phong
phú các thuộc tính tuỳ chọn, cho phép bạn chú thích kiểu dữ liệu để điều khiển
cách thức XmlSerializer sắp xếp thứ tự. Kết quả, bạn có quyền điều khiển rất hữu
ích qua hình thức của XML tạo ra khi một đối tượng được sắp xếp thứ tự. Thêm
vào đó, một Webservice trên nền ASP.NET có thể được biến đổi để mô tả các
thông tin của nó theo thuật ngữ XSD literal (nguyên bản) hoặc các nguyên tắc mã
hoá SOAP. XSD literal được đặt mặc định và sau này sẽ được tiêu chuẩn hoá.
Chức năng hỗ trợ mã hoá SOAP được sắp xếp cho tất cả các phần với toolkit đang
sẵn có. Điều này rất có lợi, nhất là khi bạn cần phải liên lạc với một Webservice
hoặc client tồn tại, sử dụng kiểu tin tức xác định trước.
.NET Remoting, IFormatter và Common Language Runtime (Bộ thực thi
ngôn ngữ chung)
.NET Remoting dựa trên các hình thức thực thi kiểu kín của giao
diện IFormatter dùng theo cơ chế System.Runtime.Serialization để sắp xếp thứ
tự dữ liệu đến và đi từ các phần thông tin trao đổi. Có hai bộ định dạng tiêu
chuẩn: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter và
System.Runtime.Serialization.Formatters.Soap.SoapFormatter. BinaryForm
atter và SoapFormatter, giống như tên gọi, sắp xếp thứ tự các kiểu lần lượt theo
định dạng mã nhị phân và SOAP.
Với metadata, .NETRemoting dựa trên các bộ phận của Bộ thực thi ngôn ngữ
chung (Common Language Runtime), bao gồm tất cả thông tin liên quan đến kiểu
dữ liệu thực thi và cách xuất nó ra qua hình thức ánh xạ lại. Dựa trên các bộ phận
ghép của metadata, việc duy trì độ tin cậy của toàn bộ thời gian chạy kiểu hệ thống
trở nên dễ dàng hơn. Kết quả là khi .NETRemoting sắp xếp thứ tự dữ liệu xong,
nó sẽ có toàn bộ thành viên, kể cả public (thành viên chung) và private (thành viên
riêng) của một lớp; điều khiển các phần đồ hoạ đối tượng một cách chính xác và
hỗ trợ tất cả các kiểu lưu trữ (như System.Collections.Hashtable). Tuy nhiên, dựa
trên metadata thời gian chạy cũng giới hạn khả năng của hệ thống .NET Remoting.
Một client phải hiểu cấu trúc .NET để liên lạc với điểm cuối .NET Remoting.
Thêm vào đó, với các bộ định dạng kín, tầng .NETRemoting hỗ trợ các kênh kín
sẽ trìu trượng hoá chi tiết mô tả phần thông tin được gửi như thế nào. Có hai kênh
tiêu chuẩn, một cho TCP thô và một cho HTTP. Thông tin có thể được gửi qua
một trong hai kênh, phụ thuộc vào kiểu định dạng.
. định dạng chúng chọn cho metadata ra
sao.
ASP. NET Web Services, XmlSerializer và XSD
ASP. NET Web Services dựa trên
lớp System.Xml.Serialization.XmlSerializer. ASP. NET Web Service hay .NET Remoting
Qua thời gian, việc xây dựng ứng dụng như là một tập