MỤC LỤC
Danh mục các hình vẽ 5
Danh mục các bảng 7
Các thuật ngữ và từ viết tắt 8
Nội dung đề tài 14
Chương 1 Tổng quan 16
1.1 Giới thiệu chung 16
1.2 Nhu cầu phát triển ứng dụng trên nền .NET 16
1.3 .NET và Java 18
1.3.1 Java 18
1.3.1.1 Java với tư cách là một ngôn ngữ lập trình 18
1.3.1.2 Java với tư cách là một công nghệ nền (platform) 19
1.3.1.3 Ứng dụng nhiều lớp trên Java 20
1.3.1.4 Đánh giá 22
1.3.2 .NET 23
1.3.2.1 Các ngôn ngữ lập trình của .NET 24
1.3.2.2 .NET với tư cách là một công nghệ nền (platform) 25
1.3.2.3 Ứng dụng nhiều lớp trên .NET 26
1.3.2.4 Đánh giá 27
1.3.3 So sánh tốc độ giữa .NET plattform và Java plattform 28
1.3.3.1 Ứng dụng Nile 28
1.3.3.2 Phần cứng sử dụng để kiểm tra 29
1.3.3.3 Kết quả so sánh 29
1.3.3.4 Kết luận 31
Chương 2 Nghiên cứu công nghệ nền .NET Framework 32
2.1 Giới thiệu 32
2.2 Môi trường chạy thực của .NET Framework 34
2.2.1 Giới thiệu 34
2.2.2 Mã có kiểm soát 36
2.2.2.1 Trình biên dịch 36
2.2.2.2 Ngôn ngữ trung gian MSIL 37
2.2.2.3 Dịch MSIL thành ngôn ngữ máy 38
2.2.2.4 Chạy chương trình 38
2.2.3 Quản lý bộ nhớ tự động 38
2.2.3.1 Khởi tạo vùng nhớ 39
2.2.3.2 Hoàn trả vùng nhớ 39
2.2.3.3 Hoàn trả vùng nhớ cho các tài nguyên không kiểm soát 39
2.3 Cấu tử 40
2.3.1 Cấu tạo của cấu tử 40
2.3.2 Bộ đệm cấu tử 42
2.3.3 Các cấu tử tồn tại song song 42
2.4 Miền ứng dụng 43
2.4.1 Quan hệ giữa miền ứng dụng và cấu tử 44
2.4.2 Quan hệ giữa miền ứng dụng và tuyến đoạn 45
2.5 Hệ thống kiểu chung 45
2.5.1 Phân loại kiểu 45
2.5.2 Giá trị và đối tượng 46
2.5.3 Kiểu và không gian tên 46
2.6 Tích hợp đa ngôn ngữ 47
2.7 Thư viện .NET Framework 47
Chương 3 Phát triển và tích hợp ứng dụng trên môi trường .NET 48
3.1 Kiến trúc ứng dụng 48
3.1.1 Các kiến trúc ứng dụng truyền thống và ưu nhược điểm 48
3.1.1.1 Kiến trúc 1 lớp (1-tier) 48
3.1.1.2 Kiến trúc 2 lớp (2-tier) 49
3.1.2 Những điểm hạn chế trong mô hình 2 lớp 51
3.1.2.1 Hạn chế trong công tác triển khai và bảo hành bảo trì hệ thống 51
3.1.2.2 Hạn chế về năng lực xử lý của hệ thống 51
3.1.2.3 Hạn chế về khả năng tích hợp (integration) 52
3.1.2.4 Hạn chế về khả năng cung cấp dịch vụ cho khách hàng 52
3.1.2.5 Hạn chế về tính mềm dẻo của hệ thống 53
3.1.2.6 Hạn chế về chi phí cấu hình hệ thống 53
3.1.3 Kiến trúc ứng dụng phân tán (kiến trúc nhiều lớp) 53
3.1.3.1 Vấn đề triển khai và bảo hành bảo trì hệ thống 55
3.1.3.2 Vấn đề năng lực xử lý của hệ thống 55
3.1.3.3 Vấn đề tích hợp 55
3.1.3.4 Vấn đề cung cấp dịch vụ cho khách hàng 56
3.1.3.5 Vấn đề tính mềm dẻo và khả chuyển của hệ thống 56
3.1.3.6 Vấn đề chi phí cấu hình hệ thống 56
3.1.4 Khuyến nghị 56
3.2 Cấu trúc ứng dụng phân tán trên .NET 56
3.3 Giao tiếp giữa các thành phần của ứng dụng 60
3.3.1 Các phương pháp truyền thống trên các môi trường phi .NET 60
3.3.2 Các phương pháp giao tiếp trên môi trường .NET 61
3.3.2.1 ASP.NET Webservice 61
3.3.2.2 .NET Remoting 61
3.3.2.3 So sánh ASP.NET Webservice và .NET Remoting 62
3.3.2.4 Khuyến nghị sử dụng 65
3.4 .NET Remoting 65
3.5 Web service 68
3.5.1 Các ứng dụng của Webservice 69
3.5.1.1 Cung cấp dịch vụ 69
3.5.1.2 Tích hợp ứng dụng 69
3.5.1.3 Giải pháp cho thương mại điện tử 69
3.5.2 Cơ sở hạ tầng của Webservice 69
3.5.3 Hoạt động của Webservice 71
3.6 An toàn hệ thống 73
3.6.1 Các nguy cơ gây mất an toàn cho hệ thống 73
3.6.2 Nhận thực 75
3.6.3 Kiểm tra quyền 76
3.6.3.1 Các đặc điểm của việc kiểm tra quyền trên môi trường ứng dụng phân tán 76
3.6.3.2 Giải pháp cho vấn đề kiểm tra quyền trong môi trường phân tán 76
3.6.4 Mã hóa dữ liệu trên kênh truyền 77
3.6.5 Các biện pháp bảo đảm an toàn với .NET Remoting 77
3.6.6 Các biện pháp bảo đảm an toàn với Webservice 79
3.6.6.1 An toàn mức giao vận (điểm - điểm) 79
3.6.6.2 An toàn mức ứng dụng 80
3.6.6.3 An toàn ở mức bản tin 80
Chương 4 Áp dụng kết quả 82
4.1 Hệ thống quản lý yêu cầu khách hàng tại Bưu điện Hà Nội 82
4.1.1 Giới thiệu 82
4.1.2 Kiến trúc hệ thống 83
4.1.3 Đánh giá 85
4.2 Hệ thống báo cáo từ xa 85
4.2.1 Mô hình truyền thống 85
4.2.2 Mô hình báo cáo từ xa sử dụng Webservice 86
4.2.3 Đánh giá 87
Chương 5 Kết luận 88
Tài liệu tham khảo 89
Phụ lục 1 : Xây dựng kênh truyền an toàn cho giao tiếp .NET Remoting 90
Đồng bộ ngữ cảnh an ninh của tiến trình chủ với tiến trình khách 91
Mã hóa dữ liệu trên kênh truyền 93
Phụ lục 2 : Các giao diện của chương trình Quản lý yêu cầu 100
115 trang |
Chia sẻ: netpro | Lượt xem: 2517 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Nghiên cứu công nghệ phân tán trên nền .NET Framework áp dụng cho việc phát triển và tích hợp các hệ thống phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
iảm đi, nhưng lượng bộ nhớ đòi hỏi được giảm đi.
Quan hệ giữa miền ứng dụng và tuyến đoạn
Miền ứng dụng tạo nên vùng phân tách cho mã có kiểm soát. Trong khi đó, tuyến đoạn (thread) là kiến trúc của hệ điều hành sử dụng bởi môi trường chạy thực để chạy mã. Tại thời điểm chạy, mã có kiểm soát được nạp vào trong miền ứng dụng và chạy bởi một tuyến đoạn của hệ điều hành.
Không có sự tương ứng 1-1 giữa miền ứng dụng và tuyến đoạn. Nhiều tuyền đoạn có thể cùng chạy trong một miền ứng dụng tạo một thời điểm và một tuyến đoạn cũng không bị hạn chế trong một miền ứng dụng.
Tại một thời điểm, một tuyến đoạn chỉ chạy trong một miền ứng dụng. Có thể xác định miền ứng dụng hiện đang chứa tuyến đoạn sử dụng hàm Thread.GetDomain.
Hệ thống kiểu chung
Hệ thống kiểu chung định nghĩa cách thức định nghĩa và sử dụng các kiểu trong môi trường chạy thực. Hệ thống này cho phép khả năng tích hợp giữa các thành phần ứng dụng khác ngôn ngữ. Các chức năng chính bao gồm:
Cung cấp một nền tảng cho phép tích hợp đa ngôn ngữ, thực hiện an toàn kiểu và chạy ứng dụng với tốc độ cao.
Định nghĩa các quy tắc mà các ngôn ngữ phải tuân thủ để đảm bảo các đối tượng viết bằng các ngôn ngữ khác nhau có thể giao tiếp được với nhau.
Phân loại kiểu
Hệ thống kiểu chung hỗ trợ 2 loại kiểu. Mỗi loại kiểu lại được chia thành các loại nhỏ hơn
Kiểu giá trị
Kiểu giá trị lưu trực tiếp dữ liệu. Các kiểu giá trị chia làm 3 loại : sẵn có (cung cấp sẵn bởi môi trường chạy thực), người dùng định nghĩa hay các kiểu liệt kê.
Kiểu
Các kiểu tham chiếu chứa tham chiếu tới một địa chỉ bộ nhớ. Kiểu tham chiếu có thể là các kiểu tự mô tả, kiểu con trỏ hoặc kiểu giao diện. Kiểu tự mô tả tiếp tục được chia thành mảng và các lớp. Chi tiết về phân loại kiểu có thể được tham khảo trong Hình 24.
Hình 24 : Phân loại kiểu
Giá trị và đối tượng
Giá trị là các biểu diễn dữ liệu dưới dạng nhị phân, và kiểu cung cấp cách thức đọc ra ý nghĩa của dữ liệu đó. Giá trị của một kiểu giá trị được lưu trực tiếp dưới dạng nhị phân, còn giá trị của kiểu tham chiếu lại là địa chỉ của một vùng nhớ, vùng nhớ này mới là nơi lưu dữ liệu của kiểu.
Giá trị của các kiểu tự mô tả được gọi là đối tượng. Giá trị của một kiểu thực hiện một giao diện cũng được coi là giá trị của kiểu giao diện đó. Tương tự, giá trị của một kiểu dựa trên một kiểu gốc cũng được coi là một giá trị của kiểu gốc.
Kiểu và không gian tên
Đối với môi trường chạy thực, một không gian tên (namespace) chỉ là một tập hợp các tên kiểu. Môi trường chạy thực chỉ nhận biết các kiểu thông qua tên đầy đủ.
Tích hợp đa ngôn ngữ
Môi trường chạy thực hỗ trợ tích hợp đa ngôn ngữ. Tuy nhiên, để đảm bảo rằng mã viết ra có thể được sử dụng bởi bất kỳ ngôn ngữ này, người lập trình phải tuân theo một số nguyên tắc, được định nghĩa trong các nguyên tắc ngôn ngữ chung (Common Language Specification -CLS).
Thư viện .NET Framework
Thư viện .NET Framework là một hệ thống các kiểu đối tượng được tích hợp chặt chẽ với môi trường chạy thực. Dựa trên mô hình lập trình hướng đối tượng, thư viện cung cấp các đối tượng có thể sử dụng làm lớp cơ sở cho các ứng dụng của người lập trình có thể kế thừa. Ví dụ, các lớp kiểu tập hợp của .NET Framework đều sử dụng một tập các giao diện mà người lập trình có thể dựa trên đó để phát triển một kiểu tập hợp cho riêng mình. Kiểu tập hợp mới này, nhờ tuân theo các giao diện định trước, có thể làm việc với các kiểu khác trong thư viện .NET Framework.
Thư viện .NET Framework hỗ trợ các thao tác lập trình cơ bản như xử lý chuỗi, truy xuất cơ sở dữ liệu, truy xuất file… Bên cạnh đó, thư viện cũng cung cấp các kiểu dành riêng cho các kiểu ứng dụng khác nhau. Có thể sử dụng thư viện .NET Framework để phát triển các loại chương trình và dịch vụ sau:
Các ứng dụng console (ứng dụng giao tiếp dòng lệnh)
Các ứng dụng có giao diện cửa sổ.
Các ứng dụng ASP.NET
Các Web service.
Các Windows service.
Phát triển và tích hợp ứng dụng trên môi trường .NET
Kiến trúc ứng dụng
Các kiến trúc ứng dụng truyền thống và ưu nhược điểm
Kiến trúc 1 lớp (1-tier)
Kiến trúc này gắn với giai đoạn đầu khi máy tính ra đời. Trong giai đoạn này, mỗi máy tính chỉ là một thiết bị có khả năng tính toán độc lập, không được nối với nhau. Vì vậy, các ứng dụng sử dụng kiến trúc 1 lớp là các ứng dụng có quy mô nhỏ, chạy trên các máy tính độc lập. Một ví dụ cho loại ứng dụng này là các chương trình xử lý văn bản, các chương trình có sử dụng cơ sở dữ liệu quy mô nhỏ sử dụng foxpro, access.
Trình diễn
Xử lý
Lưu trữ
Hình 31 : Mô hình 1 lớp – toàn bộ chương trình chạy trên 1 máy tính
Khi các máy tính bắt đầu được kết nối với nhau, để tận dụng được các ưu thế của môi trường mạng, một giải pháp tình thế cho các ứng dụng với kiến trúc 1 lớp là chia sẻ tài nguyên cơ sở dữ liệu. Tuy nhiên, việc chia sẻ tài nguyên này thuần túy là sự chia sẻ ở mức hệ điều hành – cụ thể là chia sẻ file.
Trong mô hình File server này, máy chủ chỉ đóng vai trò là nơi lưu trữ chương trình, lưu trữ dữ liệu. Thực chất việc xử lý dữ liệu đều do các máy trạm đảm nhận. Các vấn đề như xử lý tương tranh, bảo mật… chỉ được thực hiện ở máy trạm. Do vậy kiến trúc này có rất nhiều hạn chế về năng lực xử lý, an toàn dữ liệu, giá thành nâng cấp phần cứng, khả năng mở rộng hệ thống… Các nhược điểm của kiến trúc này khiến cho việc phát triển những hệ thống lớn, phức tạp là không thể thực hiện được.
Trong kiến trúc này, toàn bộ logic của chương trình chỉ được chạy ở máy trạm, bao gồm việc truy cập dữ liệu, xử lý yêu cầu, hiển thị kết quả. Máy chủ chỉ là nơi lưu dữ liệu thuần túy. Kiến trúc này được gọi là kiến trúc 1 lớp (1-tier).
Kiến trúc 2 lớp (2-tier)
Tiếp sau mô hình File server, người ta thường phát triển các ứng dụng mạng theo mô hình Client/Server. Trong mô hình này, khi có yêu cầu thực hiện công việc, client sẽ gửi yêu cầu tới server. Chương trình server sẽ thực hiện yêu cầu. Khi có kết quả, server sẽ gửi lại cho client.
Trong một số ứng dụng, một chương trình ứng dụng khi thì đóng vai trò client, khi thì đóng vai trò server tuỳ theo ngữ cảnh cụ thể thường được coi là các client/server kiểu Peer-to-Peer.
Trong mô hình Client/Server, giao diện client trong các hệ thống này thường là giao diện GUI Application, và một số giao diện đã được cung cấp dưới dạng Web browser với điểm mạnh là tích hợp ngôn ngữ script. Mô hình client/server thực chất đồng thời xử lý tác nghiệp (business process) và hiển thị thông tin (data presentation).
Các ứng dụng sử dụng các hệ cơ sở dữ liệu tập trung cũng được xếp vào loại này. Khác biệt giữa trường hợp chia sẻ file của kiến trúc 1 lớp và cấu trúc này nằm ở tính chất chủ động của máy chủ. Một cơ sở dữ liệu tiên tiến không chỉ là một tập các file chứa dữ liệu, mà còn bao gồm các tiến trình xử lý phức tạp chạy trên máy chủ để thực hiện các vấn đề xử lý tương tranh, kiểm tra ràng buộc dữ liệu, xử lý dữ liệu… Ví dụ của các hệ thống ứng dụng kiểu này là một chương trình chạy trên máy trạm kết nối tới cơ sở dữ liệu Oracle.
Mô hình này đã giải quyết được nhiều điểm hạn chế của mô hình File server. Một phần khối lượng xử lý đã được chuyển cho máy chủ thực hiện. Tuy vậy, khối lượng công việc xử lý này thường chỉ ở mức tương đối nhỏ và chủ yếu thực hiện các công việc xử lý có tính kỹ thuật chứ không phải là nghiệp vụ, chẳng hạn xử lý tương tranh trong các hệ cơ sở dữ liệu. Điều này khiến cho mô hình 2 lớp, mặc dù đã giải quyết được nhiều vấn đề của mô hình 1 lớp, vẫn chưa phải là giải pháp thích hợp cho các hệ thống lớn, đòi hỏi khả năng tích hợp, mở rộng cao.
Xử lý giao diện + Xử lý nghiệp vụ
Xử lý kỹ thuật chung
Máy chủ
Máy trạm 1
Máy trạm 2
Hình 32 : Mô hình 2 lớp
Trên Hình 32 biểu diễn cấu trúc của mô hình 2 lớp. Cải tiến của mô hình này so với mô hình 1 lớp là các xử lý kỹ thuật đã được chuyển lên chung trên máy chủ. Tuy nhiên có thể thấy rằng phần xử lý nghiệp vụ vẫn được thực hiện tại máy trạm. Vì vậy, mô hình này vẫn còn tồn tại nhiều hạn chế.
Những điểm hạn chế trong mô hình 2 lớp
Hạn chế trong công tác triển khai và bảo hành bảo trì hệ thống
Đối với các ứng dụng được viết theo mô hình client/server thông thường, cần phải cài chương trình cho từng máy trạm làm việc của người sử dụng. Sẽ không có vấn đề gì lớn nếu như số lượng máy trạm làm việc là không đáng kể và nằm tại cùng trong 1 khu vực, tuy nhiên đối với các ứng dụng phục vụ công tác quản lý và điều hành sản xuất kinh doanh của 1 bưu điện tỉnh, số lượng người sử dụng là rất lớn, địa bàn lại trải rộng thì việc cài đặt ứng dụng, cập nhật, quản lý các phiên bản và khắc phục sự cố rất mất nhiều thời gian, nhân lực và chi phí.
Ví dụ: hệ thống Quản lý yêu cầu khách hàng triển khai cho 1 BĐ tỉnh cỡ trung bình sẽ có khoảng 100 người dùng, và cần phải cài đặt tại tại rất nhiều vị trí, trong nội thành có khoảng 2 đến 10 điểm giao dịch, 20 phòng ban và khoảng từ 5 đến 10 huyện (mỗi huyện có ít nhất 1 điểm giao dịch khách hàng)
Hạn chế về năng lực xử lý của hệ thống
Trong các ứng dụng theo mô hình client/server hiện tại, trên server chỉ xử lý một số tác nghiệp đơn giản và trả lại dữ liệu cho máy trạm tiếp tục xử lý, dẫn đến lưu lượng thông tin truyền trên mạng là rất lớn, server gần như chỉ giải quyết bài toán lưu trữ cơ sở dữ liệu và xử lý một số chức năng như: truy nhập đồng thời, tính toàn vẹn và xử lý bảo mật. Điều này dẫn đến khi số lượng người dùng, khối lượng dữ liệu cần xử lý tăng lên, tốc độ đường truyền thấp thì năng lực xử lý của toàn hệ thống sẽ bị ảnh hưởng nghiêm trọng.
Đối với các bài toán có nhiều máy trạm Client (VD như các đầu chương trình tiếp nhận yêu cầu, thu phí của hệ thống Quản lý yêu cầu khách hàng), nếu dùng các ứng dụng Client/Server thông thường, số lượng các kết nối dữ liệu (connection) từ các ứng dụng đến cơ sở dữ liệu thường khá lớn (có thể lên tới vài trăm client). Đặc biệt, khi hệ thống được mở rộng để khách hàng có thể tự chăm sóc qua mạng internet (selfcare), số lượng các kết nối dữ liệu này có thể tới hàng nghìn. Tuy vậy, thực tế các hệ quản trị cơ sở dữ liệu lại giới hạn số kết nối. Đối với hệ quản trị cơ sở dữ liệu Oracle, khi số lượng kết nối nhiều, năng lực xử lý của máy chủ dữ liệu sẽ giảm đáng kể.
Trong trường hợp khối lượng công việc tại server quá lớn chỉ có cách giải quyết duy nhất là nâng cấp server, tuy nhiên việc nâng cấp là có giới hạn.
Hạn chế về khả năng tích hợp (integration)
Trong môi trường có rất nhiều nhà cung cấp dịch vụ nhự hiện nay, khách hàng không còn là của riêng 1 doanh nghiệp nào, họ có thể sử dung rất nhiều các dịch vụ khác nhau từ các nhà cung cấp khác nhau. Vì vậy hệ thống các ứng dụng của một doanh nghiệp không những phải tương tác, tích hợp được với nhau (trong nội bộ doanh nghiệp) mà còn phải có khả năng tích hợp với ứng dụng của các doanh nghiệp khác, hay nói cách khác các ứng dụng của các doanh nghiệp khác nhau phải liên kết được với nhau để tạo thành một môi trường cộng tác (Collaboration) để cung cấp sự tiện lợi tối đa cho khách hàng khi sử dụng dịch vụ.
Trong khi đó nếu sử dụng mô hình client/server khả năng tích hợp là rất yếu. Lý do của các khó khăn trong tích hợp là một tỷ lệ khối lượng xử lý nghiệp vụ của các chương trình vẫn chạy độc lập trên các máy trạm. Việc tích hợp giữa các chương trình chỉ có thể thực hiện ở mức cơ sở dữ liệu, chứ chưa thể thực hiện ở mức nghiệp vụ chương trình. Các ứng dụng 2 lớp vẫn là những chương trình đóng kín rời rạc và nếu chạy trên cùng một máy, chúng không thể truy cập tới các hàm của nhau – và do đó không thể tích hợp được ở mức ứng dụng.
Hạn chế về khả năng cung cấp dịch vụ cho khách hàng
Do hạn chế về khả năng tích hợp, các ứng dụng chỉ giải quyết được phần nghiệp vụ trong nội bộ doanh nghiệp của minh mà không kết hợp được với các dịch vụ do các doanh nghiệp khác cung cấp.
Ví dụ: đối với bài toán lắp đặt thuê bao mới, ta có thể cung cấp giao diện web cho khách hàng đăng ký một cách tự động nhưng do không liên kết được với các ứng dụng của ngân hàng để kiểm tra số dư tài khoản của khách hàng, dẫn đến khách hàng vẫn phải đến các điểm giao dịch để nộp tiền hoặc phải có 1 nhân viên đến thu tại nhà khách hàng.
Hạn chế về tính mềm dẻo của hệ thống
Do tính cạnh tranh rất gay gắt hiện nay, các quy trình nghiệp vụ thường xuyên có sự thay đổi để tạo điều kiện thuận lợi tối đa cho khách hàng,dẫn đến các ứng dụng phần mềm cũng phải được cập nhật và sửa đổi theo, do chưa phân tách được lớp biểu diễn số liệu, lớp xử lý tác nghiệp và lớp cơ sở dữ liệu nên chi phí chỉnh sửa là rất lớn, thời gian dài và rất dễ gây lỗi.
Hạn chế về chi phí cấu hình hệ thống
Trong mô hình client/server, phần lớn logic nghiệp vụ được xử lý ở máy trạm. Vì vậy, khi triển khai hệ thống, cấu hình của các máy trạm đều phải ở mức cao. Số máy trạm trong hệ thống thường từ vài chục tới vài trăm trong một hệ thống nhỏ, nhưng với các hệ thống lớn, số máy trạm có thể lên tới vài nghìn. Chi phí cho phần cứng của hệ thống trở nên rất lớn.
Kiến trúc ứng dụng phân tán (kiến trúc nhiều lớp)
Mô hình Client/Server truyền thống ở trên thường được gọi là mô hình 2 lớp. Ưu điểm của mô hình này so với mô hình 1 lớp xuất phát ở chỗ, trong mô hình này, máy chủ không chỉ còn là nơi lưu trữ dữ liệu, mà đã trở thành nơi chạy một phần logic của chương trình. Tuy nhiên, phần logic này chủ yếu để xử lý các vấn đề kỹ thuật chứ không phải nghiệp vụ của chương trình. Điều này là nguyên nhân tạo nên các nhược điểm kể trên của mô hình này. Với các điểm hạn chế như vậy, việc xây dựng một hệ thống theo chuẩn mới là điều cần thiết.
Kiến trúc phân tán (distributed applications) hay kiến trúc đa lớp (multi-tiers) giải quyết được các vấn đề kể trên. Khái niêm “phân tán” hay “nhiều lớp” được sử dụng để chỉ ra sự phân bổ logic của chương trình trên các máy. Kiến trúc này là một bước kế tiếp của mô hình 2 lớp ở chỗ: nó phát triển tiếp ý tưởng chuyển logic chương trình lên xử lý tập trung ở máy chủ. Điểm khác biệt là ở chỗ, nếu như trong kiến trúc 2 lớp, phần xử lý nghiệp vụ chủ yếu nằm ở máy chủ thì trong kiến trúc phân tán, phần xử lý nghiệp vụ được chuyển lên xử lý ở các máy chủ. Máy trạm lúc này chỉ đóng vai trò thiết bị đầu cuối để nhập dữ liệu.
Lớp hiển thị (Máy trạm)
Lớp nghiệp vụ (Máy chủ ứng dụng)
Lớp cơ sở dữ liệu (Máy chủ cơ sở dữ liệu)
Hình 33 : Kiến trúc nhiều lớp
Hình 33 biểu diễn kiến trúc đơn giản của mô hình nhiều lớp. Trong mô hình này, người ta thường sử dụng một hay nhiều lớp trung gian giữa máy trạm (có thể là các trình duyệt web hoặc ứng dụng) và các máy chủ khác (thường là hệ thống máy chủ cơ sở dữ liệu Enterprise Information System EIS ). Các lớp ở giữa này đóng vai trò máy chủ ứng dụng, trên đó các ứng dụng sẽ được triển khai. Các mã nguồn cần để trao đổi thông tin hoặc để có thể tái sử dụng sẽ được lưu giữ trên máy chủ ứng dụng này. Mô hình máy trạm/ máy chủ ứng dụng/ máy chủ cơ sở dữ liệu sẽ giải quyết tất cả các yếu tố hạn chế trông mô hình client/server thuần tuý.
Vấn đề triển khai và bảo hành bảo trì hệ thống
Trong phần lớn các hệ thống, phần logic xử lý nghiệp vụ chiếm thành phần rất lớn. Với mô hình nhiều lớp, phần xử lý nghiệp vụ được triển khai tập trung tại một số ít máy chủ có cấu hình mạnh. Còn lại phần xử lý giao diện chiếm tỷ trọng nhỏ có thể được chạy theo 2 dạng: trình duyệt web đối với các ứng dụng thin client và Chương trình giao diện đối với các ứng dụng thick client. Đối với dạng thứ nhất, hoàn toàn không cần triển khai gì trên máy trạm. Với dạng thứ hai, Chương trình xử lý giao diện thường ít phải thay đổi và nâng cấp, trong trường hợp phải thay đổi thì khối lượng cũng không nhiều. Vì vậy việc triển khai, bảo trì hệ thống sẽ tập trung ở phần xử lý nghiệp vụ tại các máy chủ, khiến cho công việc cài đặt, sửa chữa, nâng cấp có thể tiến hành dễ dàng.
Vấn đề năng lực xử lý của hệ thống
Trong mô hình nhiều lớp, phần xử lý nghiệp vụ được chạy trên máy chủ ứng dụng. Vì vậy máy chủ ứng dụng mới là phần giao tiếp trực tiếp với máy chủ cơ sở dữ liệu, chứ không phải là các máy trạm như trong mô hình 2 lớp. Kết nối giữa máy chủ cơ sở dữ liệu và máy chủ ứng dụng không nhiều và phân bố rộng như giữa máy trạm và máy chủ ứng dụng trong mô hình 2 lớp. Vì vậy các kết nối này thường được sử dụng với chế độ dành riêng và có tốc độ cao.
Trên các kết nối giữa máy trạm và máy chủ ứng dụng, thông tin truyền đi thường là các thông tin đã được xử lý để hiển thị hay là các thông tin nhập liệu đầu vào, vì vậy lưu lượng trên các kết nối này rất thấp so với mô hình 2 lớp.
Vấn đề tích hợp
Trong mô hình nhiều lớp, phần xử lý nghiệp vụ được tập trung ở máy chủ ứng dụng. Điều này khiến cho việc tích hợp có thể được thực hiện ở mức ứng dụng, thay vì dừng lại ở mức cơ sở dữ liệu như trong mô hình 2 lớp. Việc gọi hàm giữa các tiến trình trên máy chủ ứng dụng có thể được thực hiện bởi rất nhiều kỹ thuật như Web service, .NET Remoting… tùy thuộc vào hệ điều hành. Ranh giới giữa các ứng dụng nhờ vậy trở nên trong suốt đối với người dùng.
Vấn đề cung cấp dịch vụ cho khách hàng
Giải quyết được vấn đề tích hợp, việc các nhà sản xuất ứng dụng phối hợp với nhau để xây dựng nên những hệ thống lớn trở nên khả thi. Vì vậy, các ứng dụng cung cấp cho khách hàng cũng trở nên đơn giản, thuận tiện và chính xác hơn.
Vấn đề tính mềm dẻo và khả chuyển của hệ thống
Các quy trình nghiệp vụ được xử lý tập trung tại các máy chủ. Vì vậy, khi cần thay đổi quy trình nghiệp vụ, nói chung chỉ cần xử lý tập trung tại máy chủ mà người sử dụng ở máy trạm vẫn có thể sử dụng giao diện cũ quen thuộc.
Vấn đề chi phí cấu hình hệ thống
Trong mô hình nhiều lớp, các thiết bị đầu cuối chỉ cần sử dụng để thực hiện công việc xử lý giao diện, vì vậy không cần đòi hỏi cấu hình mạnh. Khi triển khai các hệ thống, khối lượng các thiết bị đầu cuối là lớn hơn rất nhiều so với số lượng máy chủ, có thể tới vài trăm hoặc vài ngàn. Vì vậy, mặc dù chi phí cho các máy chủ tăng lên, chi phí cho toàn bộ hệ thống vẫn được giảm đi đáng kể.
Khuyến nghị
Qua các phân tích ở trên, có thể thấy rõ đặc điểm của mỗi kiến trúc ứng dụng. Kiến trúc 1 lớp (file server) chỉ phù hợp với các ứng dụng nhỏ, chạy trên 1 máy tính. Kiến trúc 2 lớp phù hợp với các ứng dụng cỡ vừa, chạy trên mạng LAN, trong phạm vi một vài phòng ban của doanh nghiệp Kiến trúc phân tán (mô hình nhiều lớp) phù hợp với các ứng dụng có quy mô lớn, đòi hỏi tích hợp giữa nhiều ứng dụng trên các plattform khác nhau, trong phạm vi doanh nghiệp thông qua mạng LAN hoặc trên toàn cầu thông qua Internet.
Cấu trúc ứng dụng phân tán trên .NET
Giao diện người dùng
Người dùng
CSDL
Xử lý tiến trình giao diện
Giao diện cung cấp dịch vụ
Tiến trình nghiệp vụ
Tác nghiệp
Thực thể dữ liệu
Truy xuất cơ sở dữ liệu
Giao diện sử dụng dịch vụ
Dịch vụ từ các hệ thống khác
1
2
3
4
5
8
6
7
Giao tiếp giữa các thành phần
An toàn hệ thống
Hình 34 : Cấu trúc ứng dụng phân tán trên môi trường .NET
Trên Hình 34 là cấu trúc điển hình của một ứng dụng phân tán sử dụng .NET platform.
Giao diện nguời dùng
Hầu hết các ứng dụng phần mềm đều cần có một giao diện để người sử dụng có thể giao tiếp được với ứng dụng. Giao diện người dùng có thể thực hiện được bằng Windows Forms, các trang web ASP, các điều khiển hay bất kỳ kỹ thuật nào có thể sử dụng để hiển thị, định dạng dữ liệu cho người dùng hoặc thu thập và kiểm tra dữ liệu do người dùng nhập vào.
Các thành phần xử lý tiến trình giao diện
Trong nhiều trường hợp, các thao tác của người dùng với hệ thống được tiến hành theo một tiến trình định trước. Ví dụ, tiến trình thực hiện đặt hàng có thể bao gồm: cửa sổ hiển thị thông tin về hàng hóa, cửa sổ cho phép người dùng lựa chọn các sản phẩm, cửa sổ cho phép người dùng nhập các thông tin thanh toán và địa chỉ để gửi hàng hóa. Để thực hiện đồng bộ và tối ưu hóa các quá trình như vậy, có thể sử dụng các thành phần xử lý tiến trình giao diện. Theo cách này, logic điều khiển luồng thực hiện tiến trình (workflow) có thể được tách rời khỏi các thành phần giao diện người dùng. Đồng thời, logic điều khiển này có thể được sử dụng lại cho các loại giao diện khác nhau (web, windows form,..).
Các thành phần xử lý tiến trình nghiệp vụ
Sau khi các dữ liệu yêu cầu đã được thu thập bởi thành phần xử lý tiến trình giao diện, dữ liệu đó có thể được sử dụng để thực hiện một tiến trình nghiệp vụ. Ví dụ, sau khi các thông tin về sản phẩm, hình thức thanh toán và phương thức giao hàng đã được cung cấp cho chương trình, tiến trình thanh toán và sắp xếp việc giao hàng có thể được tiến hành. Các tiến trình này là các tiến trình nghiệp vụ, và thường bao gồm nhiều bước, được thực hiện theo các thứ tự nhất định. Chẳng hạn, thứ tự của quá trình thanh toán có thể bao gồm các bước: tính toán tổng số trị giá của hàng đặt, kiểm tra các thông tin của tài khoản khách hàng, sau đó trừ tiền trong tài khoản của khách hàng và thực hiện lên lịch cho quá trình giao hàng. Các thành phần xử lý tiến trình nghiệp vụ được sử dụng để quản lý chuỗi công việc được sắp xếp như vậy.
Các thành phần tác nghiệp (thực hiện nghiệp vụ)
Đây chính là các bước trong tiến trình nghiệp vụ. Chẳng hạn trong ứng dụng bán hàng trực tuyến, có thể sẽ có một hàm thực hiện việc tính tổng giá trị của đơn đặt hàng, cộng thêm chi phí vận chuyển.... Các thành phần thực hiện nghiệp vụ là các bước làm nên quá trình nghiệp vụ của ứng dụng.
Các thành phần giao tiếp sử dụng dịch vụ
Khi một thành phần thực hiện nghiệp vụ cần gọi tới một dịch vụ cung cấp bởi một hệ thống khác, sẽ cần thực hiện các công việc kết nối, kích hoạt, truyền tham số, lấy dữ liệu trả về... từ dịch vụ đích đó. Những công việc đó được thực hiện bởi các thành phần giao tiếp sử dụng dịch vụ. Ví dụ, quá trình xử lý đơn đặt hàng có thể tại một thời điểm có nhu cầu gọi dịch vụ kiểm tra tính hợp lệ của tài khoản – một quá trình được thực hiện bởi một hệ thống khác. Quá trình gọi này sẽ được thực hiện bởi một thành phần giao tiếp sử dụng dịch vụ. Các thành phần này sẽ tách biệt phần xử lý nghiệp vụ của một ứng dụng với phần logíc phức tạp để kết nối dịch vụ từ ứng dụng khác. Ngoài ra, các thành phần này có thể cung cấp các chức năng như chuyển đổi giữa khuôn dạng dữ liệu mà dịch vụ cung cấp với khuôn dạng dữ liệu mà ứng dụng cần.
Các giao diện cung cấp dịch vụ
Một hệ thống cung cấp dịch vụ cho các hệ thống khác thông qua các giao diện cung cấp dịch vụ. Giao diện này quy định các cách thức yêu cầu và sử dụng dịch vụ.
Các thành phần truy xuất dữ liệu
Hầu hết các ứng dụng đều cần truy xuất dữ liệu tại các điểm nào đó trong một tiến trình xử lý nghiệp vụ. Chẳng hạn, chương trình bán hàng trên mạng sẽ cần lấy dữ liệu về các mặt hàng trong cơ sở dữ liệu để cung cấp cho khách hàng, và cần nhập dữ liệu về đơn đặt hàng vào cơ sở dữ liệu khi khách hàng quyết định mua hàng. Phần công việc truy xuất dữ liệu đó được thực hiện trong các thành phần truy xuất dữ liệu, tách riêng khỏi các phần khác của ứng dụng, nhằm mục đích tránh cho các phần còn lại bị phụ thuộc vào loại hình cơ sở dữ liệu cụ thể.
Các thực thể dữ liệu
Hầu hết trong các ứng dụng, dữ liệu cần được truyền giữa các thành phần của ứng dụng, qua các lớp ứng dụng. Ví dụ, danh sách các sản phẩm cần được truyền từ các thành phần truy xuất dữ liệu tới lớp giao diện của chương trình. Các thông tin này được lưu vào trong các thực thể dữ liệu, có thể là các đối tượng DataSet, DataReader, hoặc các luồng XML, hoặc đơn giản là một nhóm các biến thông thường được sắp xếp thành các cấu trúc (structure).
Giao tiếp giữa các thành phần của ứng dụng
Các phương pháp truyền thống trên các môi trường phi .NET
Ngày nay, việc xây dựng các ứng dụng phân tán đã trả nên phổ biến. Các ứng dụng như vậy bao gồm các thành phần phân bố trong một mạng các máy tính, kết hợp với nhau để hợp thành ứng dụng. Trước đây, các ứng dụng phân tán thường sử dụng một trong các công nghệ quen thuộc, bao gồm Mô hình đối tượng có thành phần phân tán của Microsoft (Microsoft® Distributed Component Object Model -DCOM), Cấu trúc trung gian yêu cầu đối tượng chung (Common Object Request Broker Architecture - CORBA) của OMG hay Kỹ thuật gọi hàm từ xa (Remote Method Invocation - RMI) của Sun. Các kỹ thuật này cung cấp các kiến trúc ổn định và có tính mở cho ứng dụng.
Các kỹ thuật kể trên hoạt động tương đối tốt trong môi trường mạng nội bộ. Tuy nhiên trong môi trường Internet, chúng có 2 nhược điểm cơ bản. Thứ nhất, các kỹ thuật trên không thể kết hợp được với nhau. Mặc dù về tổng thể, chúng đều làm việc với đối tượng, nhưng khi đi vào chi tiết lại khác nhau. Ví dụ, chúng khác nhau về sự kiểm soát chu trình sống của đối tượng, về hỗ trợ hàm tạo, cấp độ thừa kế.... Thứ hai và quan trọng hơn, các kỹ thuật trên đều tập trung vào các phương thức giao tiếp theo kiểu RPC (gọi thủ tục từ xa - Remote Procedure Call). Các giao tiếp theo kiểu này thường dẫn tới việc phụ thuộc chặt chẽ vào nhau giữa các thành phần tham gia vào quá trình giao tiếp.
Trái với các công nghệ trên, các ứng dụng Web dựa trên trình duyệt lại có thể kết hợp với nhau khá tốt mà không dẫn tới sự phụ thuộc lẫn nhau. Các ứng dụng này giao tiếp với nhau sử dụng HTTP để trao đổi các dữ liệu với các khuôn dạng khác nhau. Web service là một sự mở rộng của các phương thức kết nối ứng dụng web. Nó có thể được sử dụng cho tất cả các loại ứng dụng, chứ khôn
Các file đính kèm theo tài liệu này:
- Luận văn tốt nghiệp Công nghệ NET Remoting - Ứng dụng quản lý khách hàng.doc