2 thg 10, 2007

Kiến trúc .NET trong mô hình ứng dụng thương mại điện tử

Unknown
Trong bài viết trước, chúng ta đã tìm hiểu kiến trúc J2EE và mô hình áp dụng của nó trong ứng dụng thương mại điện tử. Bài viết này sẽ trình bày một kiến trúc khác được xem là đối thủ cạnh tranh của J2EE - kiến trúc .NET. Bài viết cũng sẽ tổng kết những điểm tương đồng và khác biệt giữa kiến trúc .NET và kiến trúc J2EE.

Trong bài viết trước, chúng ta đã tìm hiểu kiến trúc J2EE và mô hình áp dụng của nó trong ứng dụng thương mại điện tử. Bài viết này sẽ trình bày một kiến trúc khác được xem là đối thủ cạnh tranh của J2EE - kiến trúc .NET. Bài viết cũng sẽ tổng kết những điểm tương đồng và khác biệt giữa kiến trúc .NET và kiến trúc J2EE.

1. Tổng quan về kiến trúc .NET

Như đã đề cập, J2EE không phải là một sản phẩm cụ thể mà chỉ là các đặc tả đưa ra bởi hãng Sun. Ngược lại, .NET là tập hợp các đặc tả, công nghệ, sản phẩm do Microsoft phát triển phục vụ cho việc phát triển các ứng dụng trên môi trường Internet, thương mại điện tử. Kiến trúc .NET bao gồm các thành phần chính sau:

Hạ tầng và các công cụ phát triển của .NET

Nền tảng và các công cụ phát triển ứng dụng của .NET bao gồm

- Visual Studio .NET: bộ công cụ phát triển ứng dụng. Bạn có thể sử dụng các công cụ phát triển quen thuộc như Visual Basic, Visual C++ hoặc các công cụ lập trình mới như Visual C#. Các ngôn ngữ lập trình khác cũng được hỗ trợ dựa trên sự hợp tác với các hang thứ ba: COBOL từ Fujitsu, Eiffel từ Interactive Software Engineering, ? Điểm mạnh của kiến trúc .NET là hỗ trợ phát triển đa ngôn ngữ (multi language). Các chương trình viết bởi các ngôn ngữ khác nhau sẽ được chuyển đổi sang một ngôn ngữ trung gian thống nhất (Intermediary Language - IL). Các file IL này được đóng gói (packaging) thành các đơn thể phân phối, sau đó được biên dịch bởi bộ biên dịch tức thời (Just in time IL compiler) và thực thi trong môi trường có tên gọi môi trường thực thi chung (Common Language Runtime - CLR).

- ASP.NET: là một thiết kế mới cho việc lập tình ở lớp hiển thị (presentation tier). ASP .NET được thiết kế nhằm đơn giản hoá việc lập trình trước thực trạng gia tǎng của các hệ thống máy khách (client) và các thiết bị đầu cuốI (device). Người lập trình không phải quan tâm nhiều đến việc phát triển giao diện cho nhiều loại máy khách thay vào đó họ chỉ phát triển một giao diện duy nhất ở mức hiển thị (trên cơ sở các đối tượng điều khiên GUI của ASP .NET), phần còn lại sẽ được điều phối và thực hiện bởi ASP .NET và môi trường thực thi chung CLR trên mỗi thiết bị, máy khách.

- ADO.NET: trong mô hình kiến trúc .NET, lớp cơ sở dữ liệu (database tier) được mặc định là SQL Server. Tuy nhiên, để đảm bảo tính mở, ADO.NET được đưa ra như là giao diện giữa lớp xử lý nghiệp vụ (business tier) và lớp cơ sở dữ liệu. ADO.NET giữ vai trò tương tự như JDBC trong mô hình kiến trúc J2EE. Với giao diện này, các ưng dụng .NET có thể truy nhập đến các cơ sở dữ liệu khác như Oracle, DB2, ?

- .NET Enterprise Server: tập hợp các sản phẩm dành cho máy chủ như: SQL Server, Application Server Center, Internet Security Acceleration Server (ISA Server), BizTalk Server, và Commerce Server.

- .NET Framework: đây là phần cốt lõi của kiến trúc .NET hoạt động gắn chặt với hệ điều hành. Nó cung cấp môi trường để thực thi các ứng dụng .NET. Bạn có thể hình dung .NET Framework tương tự như mô hình máy ảo Java (Java Virtual Machine - JVM và Java Runtime Environment - JRE) trong kiến trúc J2EE. Các thành phần cơ bản của .NET Framework bao gồm:

* Môi trường thực thi chung cho các mã chương trình .NET: CLR.
* Bộ biên dịch tức thời: Just in time IL compiler.
* Các thư viện chuẩn của hệ điều hành: Base Classes.
* Các giao diện đối tượng thành phần COM+.

Các dịch vụ cộng thêm của .NET

Bao gồm các dịch vụ chia sẻ thông tin dùng chung cho các ứng dụng trong môi trường Internet:

- .NET Passsport: có thể sử dụng cho việc xác thực người dùng (user authentication).
- Các dịch vụ lưu trữ, quản lý file.
- Dịch vụ quản lý thông tin người dùng.
- Dịch vụ quản lý lịch làm việc (Calendar service).

Các dịch vụ này có thể được cung cấp bởi Microsoft hoặc các đối tác của Microsoft.

Ư'ng dụng của kiến trúc .NET trong mô hình thương mại điện tử

2. So sánh hai kiến trúc .NET và J2EE

2.1. Những điểm tương đồng giữa hai kiến trúc .NET và J2EE

(ko có hình)

2.2. Sự khác biệt giữa hai kiến trúc

Khả nǎng hỗ trợ framework

Điều quan tâm đầu tiên khi xây dựng một ứng dụng thương mại điện tử đó là lựa chọn mô hình phát triển (framework). Nó quyết định tới sự thành công của ứng dụng đặc biệt là đối với các ứng dụng có quy mô lớn. Một mô hình phát triển tốt có thể giảm thời gian, chi phí xây dựng ứng dụng ít nhất là 10 lần so với việc sử dụng chắp vá các công cụ khác nhau.

Trong kiến trúc .NET mô hình phát triển này dựa trên thành phần có tên gọi Commerce Server. Với kiến trúc J2EE, bạn phải lựa chọn, kết nối các thành phần khác nhau để hình thành nên mô hình phát triển ứng dụng. Bản thân Sun không đưa ra mô hình phát triển ở dạng đóng gói nhưng có khá nhiểu sản phẩm từ các hãng thứ ba như: IBM WebSphere, và BEA WebLogic, ?

Ngôn ngữ

J2EE chỉ hỗ trợ ngôn ngữ lập trình Java và trong tương lai có lẽ cũng không có ngôn ngữ lập trình nào được hỗ trợ thêm bởi kiến trúc này. Trong khi đó .NET của Microsoft lại tiếp cận theo hướng hỗ trợ đa ngôn ngữ. Một nhóm phát triển ứng dụng .NET có thể sử dụng nhiều ngôn ngữ lập trình khác nhau tuỳ thuộc thế mạnh của từng cá nhân. Tuy nhiên, J2EE có đưa ra 2 cách tiếp cận để cho phép phát triển ứng dụng bởi nhiều ngôn ngữ lập trình khác nhau. Một là thông qua Java Native Interface, hai là tiếp cận sử dụng công nghệ CORBA.

Sự lựa chọn ngôn ngữ lập trình không phải là yếu tố quyết định sự lựa chọn của bạn giữa kiến trúc J2EE hay .NET. Tất nhiên, nếu bạn muốn sử dụng một hoặc nhiều ngôn ngữ lập trình trong một dự án thì J2EE rõ ràng không phải là sự lựa chọn của bạn. Kiến trúc .NET có hỗ trợ một ngôn ngữ lập trình C# (đọc là C sharp). Đây là ngôn ngữ có cú pháp và phong cách lập trình gần giống với Java. Người lập trình Java có thể chuyển sang lập trình với C# chỉ trong vài giờ.

Nếu bạn lựa chọn Java không phải bởi vấn đề ngôn ngữ mà bởi đặc tính khả chuyển thì J2EE là lựa chọn tốt hơn so với .NET. Chúng ta sẽ bàn thêm về tính khả chuyển trong phần dưới.

Tính khả chuyển

Tính khả chuyển là một đặc tính nổi bật của J2EE và ngôn ngữ lập trình Java. Một chương trình viết bởi Java được thực thi trên máy ảo Java (Java Virtual Machine) thay vì trực tiếp trên hệ điều hành cụ thể. Do đó mã chương trình có thể chuyển từ một hệ điều hành này sang một hệ điều hành khác (có hỗ trợ JVM) để thực thi một cách dễ dàng. Tính khả chuyển về hệ điều hành này của J2EE có được là do phần lớn các sản phẩm J2EE đều hỗ trợ cho nhiều hệ điều hành. Trong khi đó .NET chỉ bó buộc trong hệ điều hành Windows. Do vậy ứng dụng .NET gặp khó khǎn khi phân phối trên mạng.

Kết luận

Chúng ta đã có dịp cùng nhau tìm hiểu mô hình ứng dụng thương mại điện tử thể hiện qua hai kiến trúc điển hình được áp dụng phổ biến hiện nay là J2EE và .NET. Cần phải nhắc lại lần nữa J2EE chỉ là các đặc tả được đưa ra bởi hãng Sun, việc phát triển thành các sản phẩm đóng gói là do các hàng thứ ba đảm nhiệm (ví dụ: BEA WebLogic, IBM WebSphere). Ưu điểm của J2EE là tính khả chuyển: khả chuyển trong khía cạnh hãng phát triển sản phẩm lẫn khả chuyển đối với các hệ điều hành. Nhưng nhược điểm của J2EE là chỉ hỗ trợ một ngôn ngữ lập trình duy nhất đó là Java. Trên thực tế đôi khi sự lựa chọn hay chuyển đổi sang ngôn ngữ Java là không phù hợp đối với một số dạng nghiệp vụ.

Kiến trúc .NET được đưa ra bởi Microsoft. Việc phát triển thành sản phẩm thương mại cũng do Microsoft tiến hành. Nhược điểm của kiến trúc này là chỉ hỗ trợ cho hệ điều hành Windows (điều mà có lẽ Microsoft cho là tiêu chí phát triển của mình từ trước đến nay). Hiện tại cũng chưa có thông tin nào cho thấy sự hỗ trợ của .NET đối với các hệ điều hành khác. Tuy nhiên ưu điểm của .NET là hỗ trợ phát triển ứng dụng đa ngôn ngữ - điều mà J2EE không hỗ trợ. Bên cạnh đó việc áp dụng kiến trúc .NET còn có một số thuận lợi sau: chi phí phát triển thấp, chi phí đầu tư hệ thống ban đầu thấp (so sánh với chi phí cho các hệ thống Unix).

Việc lựa chọn kiến trúc nào cho việc phát triển ứng dụng phụ thuộc vào nhiểu yếu tố: phạm vi bài toán, môi trường triển khai, chi phí phát triển, bảo trì. Ngoài ra cũng cần xem xét đến khả nǎng nắm bắt sử dụng công nghệ của đội ngũ phát triển.

Chu Lâm Thái - Quan Tri Mang

About the Author

Unknown / Author & Editor

Has laoreet percipitur ad. Vide interesset in mei, no his legimus verterem. Et nostrum imperdiet appellantur usu, mnesarchum referrentur id vim.