Chương 1: Tổng quan về kiến trúc và lập trình hướng dịch vụ Chương 2: Tìm hiểu công nghệ WCF Chương 3: Xây dựng ứng dụng quản lý công ty DKT Mặc dù có nhiều cố gắng, song do kiến thức còn nhiều hạn chế nên luận văn chắc chắn không thể tránh khỏi những thiếu sót. Kính mong nhận được sự chia sẻ và những ý kiến đóng góp chân thành của các thầy cô và bạn bè đồng nghiệp để luận văn được hoàn thiện hơn. Tôi xin chân thành cảm ơn. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 9 PHẦN I: TỔNG QUAN VỀ KIẾN TRÚC HƢỚNG DỊCH VỤ (SOA) 1.1 Giới thiệu bài toán Ngày nay, việc ứng dụng WCF trong giảng dạy, lập trình ở nước ta chưa nhiều.
Trong khi đó, công nghệ WCF là công nghệ nền tảng thống nhất nhiều mô hình lập trình giao tiếp được hỗ trợ trong .0 thành một mô hình duy nhất nhằm đáp ứng mô hình lập trình hướng dịch vụ. Với những tính năng vượt trội so với các công nghệ phân tán truyền thống, việc ứng dụng WCF sẽ mang lại các lợi ích rất lớn trong việc giảm chi phí phát triển phần mềm, thời gian, nguồn nhân lực và hiệu suất thực thi. Công ty DKT, là một công ty cổ phần chuyên ứng dụng phát triển các ứng dụng website thương mại điện tử, tin tức, thanh toán trực tuyến với các sản phẩm điển hình như: www.vn (trang Email Marketing, quảng bá sản phẩm qua email)… Hiện tại công ty bao gồm các phòng ban như: phòng hành chính- kế toán, nhân sự, kỹ thuật, kinh doanh, biên tập. Mỗi phòng ban đều có chức năng nhiệm vụ riêng.
Việc quản lý nhân viên và các công việc của từng nhân viên, quy trình các dự án đối với một công ty phần mềm là rất khó khăn, vấn đề này càng phải đặt ra nếu không có một quy trình chung và sự quản lý đầu mối. Để giúp mọi người có một cái nhìn tổng quát về công nghệ WCF, giúp công ty DKT có thể quản lý được các vấn đề phát sinh trong khi quản lý nhân viên và các công việc nội bộ, tôi đã chọn đề tài “Tìm hiểu công nghệ WCF (Windows Communication Foundation) và ứng dụng quản lý công ty công nghệ DKT”. Các vấn đề chính cần giải quyết: Tìm hiểu mô hình, kiến trúc hướng dịch vụ Các công nghệ phân tán ra đời trước khi xuất hiện WCF Chi tiết công nghệ WCF, bao gồm các vấn đề chính như: các khái niệm cơ bản của WCF, quy trình hoạt động giao tiếp giữa Client và Server, các vấn đề an ninh, bảo mật, quản lý lỗi… Xây dựng chương trình dựa trên công nghệ WCF. Tìm hiểu các quy trình hoạt động của các phòng ban trong công ty DKT, chức năng nhiệm vụ từng nhân viên, các công việc chủ yếu trong một công ty công nghệ , từ đó xây dựng giải pháp, phát triển ứng dụng quản lý nội bộ.
Trong chương trình này tôi sẽ áp dụng các công nghệ mới của Microsoft như: công nghệ ASP.0, XMScripting , WCF, Gadget trên nền tảng VisualStudio 2008 và SQL Server 2005. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.2 Lịch sử hình thành và tƣơng lai phát triển của kiến trúc hƣớng dịch vụ Tên gọi đầu tiên của lập trình hướng dịch vụ là “dịch vụ dựa trên hệ thống phân phối”. Về cơ bản, SOA là kỹ thuật phân hủy chức năng thành một tập hợp các dịch vụ tương thích có thể được truy cập thông qua các API mạng. Người ta thường nghĩ đây là một "ý tưởng mới", hình thành trong cuối những năm 90.
Nhưng nó đã được nhiều người tìm hiểu bắt đầu từ đầu những năm 80[14]. Hình 1: Kiến trúc hướng dịch vụ SOA Dịch vụ là quá trình tiến hóa tiếp theo từ các component, SOA là cách tốt nhất để xây dựng các ứng dụng phân tán, nâng cao năng suất, khả năng bảo trì, mở rộng và tái sử dụng[5]. Dịch vụ có đặc trưng về ngôn ngữ, công nghệ (. NET FX, J2EE), các nền tảng (Windows), phiên bản (Major.
Giữa các dịch vụ có các phụ thuộc về tiêu chuẩn, giao thức (HTTP, MSMQ, IPC…), chính sách (giao dịch, độ tin cậy), hợp đồng (WSDL), tin nhắn (SOAP). SOA có các nguyên lý như: các ranh giới là rõ ràng, các dịch vụ được tự trị, dịch vụ chia sẻ lược đồ và hợp đồng, khả năng tương thích dựa trên chính sách[4].3 Khái niệm, đặc trƣng, tính chất của lập trình hƣớng dịch vụ Phần mềm đang ngày càng trở nên phức tạp quá mức và dường như vượt quá khả năng kiểm soát của các mô hình phát triển hiện có. SOA là kiến trúc phần mềm mới được kỳ vọng là chìa khóa giải quyết vấn đề phức tạp này[4]. SOA là viết tắt của Service Oriented Architechture - Kiến trúc hướng dịch vụ.
SOA là một mẫu kiến trúc để xây dựng các hệ thống phân tán. Phân phát các chức năng dưới dạng dịch vụ và được người dùng cuối sử dụng vào ứng dụng của mình, hoặc được sử dụng để xây dựng một dịch vụ khác. SOA cho phép tạo ra các giải pháp dễ dàng, nhanh chóng thông qua việc tích hợp các dịch vụ đã được xây dựng sẵn. Dịch vụ là yếu tố then chốt trong SOA.
Đó là các hàm chức năng (mô-đun phần mềm) thực hiện các quy trình nghiệp vụ. SOA là tập hợp các dịch vụ kết nối mềm dẻo với nhau, các ứng dụng có thể giao tiếp với nhau mà không cần biết các chi tiết kỹ thuật bên trong. SOA là cấp độ cao hơn của phát triển ứng dụng, chú trọng đến LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 11 quy trình nghiệp vụ và dùng giao tiếp chuẩn để che đi sự phức tạp kỹ thuật bên dưới[16]. SOA tách riêng phần thực hiện dịch vụ với giao tiếp gọi dịch vụ.
Điều này tạo nên một giao tiếp nhất quán cho ứng dụng Client, sử dụng dịch vụ bất chấp công nghệ thực hiện dịch vụ. Thay vì xây dựng các ứng dụng đơn lẻ và đồ sộ, nhà phát triển sẽ xây dựng các dịch vụ tinh gọn có thể triển khai và tái sử dụng trong toàn bộ quy trình nghiệp vụ. Điều này cho phép tái sử dụng phần mềm tốt hơn, cũng như tăng sự linh hoạt vì nhà phát triển có thể cải tiến dịch vụ mà không làm ảnh hưởng đến ứng dụng Client sử dụng dịch vụ[16].4 Ƣu, nhƣợc điểm của lập trình hƣớng dịch vụ Ưu điểm quan trọng nhất của SOA là khả năng kết nối linh hoạt nhờ sự chuẩn hóa giao tiếp và tái sử dụng. Các dịch vụ có thể được sử dụng với trình khách chạy trên bất kỳ nền tảng nào và được viết với ngôn ngữ bất kỳ.
SOA dựa trên 2 nguyên tắc thiết kế quan trọng: Mô-đun: Tách vấn đề lớn thành nhiều vấn đề nhỏ. Đóng gói: Che đi dữ liệu và lô-gic trong từng modul đối với truy cập từ ngoài. Rất nhiều hệ thống phần mềm được thực hiện quá phức tạp, chi phí phát triển và bảo trì cao, đặc biệt với các hệ thống phần mềm cao cấp. Các kiến trúc phần mềm đã cố gắng giải quyết nhưng độ phức tạp vẫn tiếp tục tăng và dường như vấn đề này đã vượt quá khả năng xử lý của các kiến trúc truyền thống.
Điều này một phần do ngày càng xuất hiện nhiều công nghệ mới tạo nên môi trường không đồng nhất, một phần do yêu cầu trao đổi tương tác giữa các hệ thống phần mềm với nhau. Những yêu cầu truyền thống đặt ra đối với tổ chức CNTT vẫn còn, trong khi cùng lúc phải đáp ứng nhanh chóng các yêu cầu mới, đòi hỏi phải liên tục giảm chi phí, có khả năng sử dụng và tích hợp các thành phần mới. Tất cả đã tạo nên một áp lực nặng nề đối với các nhà phát triển phần mềm. Chúng ta đã có các kiến trúc như hướng đối tượng OOP, COM/DCOM, CORBA …và nhiều phương thức tích hợp ứng dụng nhanh và tốt hơn.
Thế nhưng vẫn chưa có giải pháp nào hoàn chỉnh. Giờ đây, SOA đang được xem có thể đảm nhận trọng trách này và được kỳ vọng tạo nên cuộc cách mạng trong kiến trúc phần mềm. Ưu điểm: Hệ thống uyển chuyển và lâu dài. Dễ dàng và nhanh chóng tạo ra các xử l nghiệp vụ từ các dịch vụ đã có.
Khả năng tương tác của các dịch vụ cao. Nhược điểm: Hệ thống phức tạp và khó miêu tả dữ liệu không cấu trúc trong header của tin nhắn. Lợi ích khi sử dụng SOA[1,2,4] Độc lập hệ thống : dịch vụ không phụ thuộc vào hệ thống và mạng cụ thể Khả năng tái sử dụng. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12 Khả năng hồi đáp thích nghi tốt và nhanh hơn để đáp ứng với sự thay đổi về yêu cầu giao dịch.
Cho phép dễ dàng triển khai chương trình, môi trường chạy và quản lý dịch vụ dễ dàng hơn. Kiến trúc kết nối lỏng lẻo, cho phép dễ dàng tích hợp thành phần, chương trình, tiến trình hay những dịch vụ phức tạp từ những dịch vụ đơn giản Cho phép Client tìm kiếm và kết nối với những dịch vụ động khác. Những sự xác nhận và chứng minh của Client về tính năng bảo mật dựa trên giao tiếp dịch vụ tốt hơn cơ chế kết nối chặt chẽ. So sánh SOA và OOP[16] SOA hỗ trợ việc kết nối lỏng lẻo các dịch vụ.
OOP dựa nhiều trên các lớp được định nghĩa sẵn, kết quả là các đối tượng kết nối chặt chẽ với nhau Hướng dịch vụ sử dụng các tin nhắn miêu tả thông tin về dịch vụ để thực hiện chức năng của mình, trong khi đó OOP lại sử dụng các hàm APIs để miêu tả các đối tượng của mình. Phạm vi hoạt động của các dịch vụ trong SOA rộng lớn hơn là các đối tượng của OOP SOA khuyến khích các dịch vụ được thiết kế phi trạng thái càng nhiều càng tốt còn OOP thì lại liên kết dữ liệu một cách logic từ đó tạo ra các đối tượng có trạng thái. Hỗ trợ việc kết nối lỏng lẻo các dịch vụ với nhau, còn OOP thì khuyến khích việc kế thừa các đối tượng, từ đó các đối tượng liên kết với nhau môt cách chặt chẽ.5 RPC (Remoting Procedure Call) Thủ tục gọi hàm từ xa là một kỹ thuật tiến bộ cho quá trình kết nối từ Client đến Server để sử dụng các ứng dụng và dịch vụ. RPC cho phép Client có thể kết nối tới 1 dịch vụ sử dụng cổng động nằm ở một máy tính khác.
Trong hệ thống mạng máy tính hiện nay có rất nhiều dịch vụ và ứng dụng sử dụng cơ chế kết nối RPC, ví dụ quá trình đồng bộ của các Domain Controller trong hệ thống Active Directory, hoặc MS Outlook kết nối tới MS Exchange Server[2].