Đề tài Xây Nghiên cứu công nghệ quản trị nội dung SiteFinity Và xây dựng hệ thống thông tin sàn chứng khoán

Tài liệu Đề tài Xây Nghiên cứu công nghệ quản trị nội dung SiteFinity Và xây dựng hệ thống thông tin sàn chứng khoán: PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Nội dung đồ án : Nghiên cứu công nghệ Sitefinity và xây dựng hệ thống thông tin chứng khoán Các nhiệm vụ cụ thể : a, Nghiên cứu công nghệ Sitefinity. b, Xây dựng hệ thống thông tin chứng khoán trên nền CMS_Sitefinity nhằm mục đích cung cấp thông tin cho người truy cập.1` Lời cam đoan của sinh viên : Tôi – Đoàn Minh Tuấn - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của Thạc sỹ Lê Tấn Hùng Các kết quả nêu ra trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác. Hà Nội, ngày tháng năm Tác giả ĐATN Đoàn Minh Tuấn Giáo viên hướng dẫn xác nhận về mức độ thành công của ĐATN và cho phép bảo vệ Hà Nội, ngày tháng năm Giáo viên hướng dẫn Thạc sỹ Lê Tấn Hùng BẢN TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP Tên đề tài : Xây Nghiên cứu công nghệ quản trị nội dung SiteFinity Và xây dựng hệ thống thông tin sàn chứng khoán Nội dung đồ án Phần 1 : Giới thiệu tổng quan hệ thống quản trị nội du...

doc92 trang | Chia sẻ: hunglv | Lượt xem: 1378 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Xây Nghiên cứu công nghệ quản trị nội dung SiteFinity Và xây dựng hệ thống thông tin sàn chứng khoán, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Nội dung đồ án : Nghiên cứu công nghệ Sitefinity và xây dựng hệ thống thông tin chứng khoán Các nhiệm vụ cụ thể : a, Nghiên cứu công nghệ Sitefinity. b, Xây dựng hệ thống thông tin chứng khoán trên nền CMS_Sitefinity nhằm mục đích cung cấp thông tin cho người truy cập.1` Lời cam đoan của sinh viên : Tôi – Đoàn Minh Tuấn - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của Thạc sỹ Lê Tấn Hùng Các kết quả nêu ra trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác. Hà Nội, ngày tháng năm Tác giả ĐATN Đoàn Minh Tuấn Giáo viên hướng dẫn xác nhận về mức độ thành công của ĐATN và cho phép bảo vệ Hà Nội, ngày tháng năm Giáo viên hướng dẫn Thạc sỹ Lê Tấn Hùng BẢN TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP Tên đề tài : Xây Nghiên cứu công nghệ quản trị nội dung SiteFinity Và xây dựng hệ thống thông tin sàn chứng khoán Nội dung đồ án Phần 1 : Giới thiệu tổng quan hệ thống quản trị nội dung. Lựa chọn công nghệ sử dụng Phần 2 : Tìm hiểu công nghệ Sitefinity: Kiến trúc, thành phần và mô hình, phương pháp lập trình ứng dụng web với SiteFinity. Phần 3 : Phân tích hệ thống : yêu cầu, chức năng của hệ thống thông tin chứng khoán Thiết kế hệ thống thông tin chứng khoán Phần 4 : Tổng kết đánh giá và hướng phát triển Danh sách từ viết tắt Từ viết tắt Tên đầy đủ TTCK Thị trường chứng khoán CNTT Công Nghệ Thông Ttin CSDL Cơ sở dữ liệu CMA ứng dụng quản lý nội dung MMA ứng dụng quản lý nội dung thông tin (matecontent) CDA và ứng dụng phân phối nội dung. CMS Content Management System AJAX Asynchronous Javascript And XML DSL Domain Specific Langluage ORML Object-relational mapping layer Danh mục các bảng Bảng 2. 1 – Các sự kiện trong Nolics 37 Bảng 3. 1 – Bảng CI_CompanyInfo Thông tin công ty 63 Bảng 3. 2 - Bảng CI_ConpanyLang Thông tin công ty với các ngôn ngữ 64 Bảng 3. 3 - Bảng CI_Leader Ban lãnh đạo 64 Bảng 3. 4 - Bảng SYS_Langluage Thông tin ngôn ngữ 65 Bảng 3. 5 - Bảng CI_AuthorityShareholder Thông tin quyền cổ đông 66 Bảng 3. 6 - Bảng SYS_ListCommon_Lang Thông tin danh mục dung chung 66 Bảng 3. 7 - Bảng CI_OwnershipStrure Thông tin cơ cấu cổ đông 67 Bảng 3. 8 - Bảng CI_MajorHolder Thông tin các cổ đông lớn 67 Bảng 3. 9 - Bảng CI_MajorHolder_Lang Thông tin cổ đông lớn_ngôn ngữ 68 Bảng 3. 10 - Bảng CI_InsiderTransaction Thông tin giao dịch nội bộ 69 Bảng 3. 11 - Bảng CI_InsiderTransaction_Lang Thông tin giao dịch nội bộ_ngôn ngữ 69 Bảng 3. 12 - Bảng CI_PublishFinancial Thông tin danh sách báo cáo tài chính 70 Bảng 3. 13 - Bảng CI_BalanceSheet Thông tin các mục của bản cân đối kế toán 71 Bảng 3. 14 - CI_BalanceSheet_Lang Thông tin bảng cân đối phần có ngôn ngữ 71 Bảng 3. 15 - CI_BalanceSheet_Conpany Thông tin bảng cân đối của công ty 72 Bảng 3. 16 - Bảng CI_IncomeStatement Thông tin các mục của kết quả kinh doanh 72 Bảng 3. 17 - Bảng CI_IncomeStatement_Lang Thông tin bảng mục kinh doanh phần có ngôn ngữ 73 Bảng 3. 18 - Bảng CI_IncomeStatement_Company Thông tin về bảng kinh doanh của công ty 74 Bảng 3. 19 - Lược đồ dữ liệu Công ty phát hành cổ phiếu 74 Bảng 3. 20 - Lược đồ dữ liệu Báo cáo tài chính 75 Bảng 3. 21 - Lược đồ dữ liệu Hệ thống 75 Bảng 3. 22 - Lược đồ dữ liệu Giao dịch nội bộ 76 Bảng 3. 23 - Lược đồ dữ liệu thông Tin các cổ đông lớn 76 Bảng 3. 24 - Lược đồ dữ liệu Lãnh đạo, cơ cấu cổ đông, cáo bạch 77 Bảng 3. 25 – Bảng STS_Market_Info 78 Bảng 3. 26 – Bảng STS_StocksInfo 84 Bảng 3. 27 – Bảng STS_Order 87 Bảng 3. 28 – Bảng STS_Trading 88 Danh sách các hình vẽ Hình 1. 1 - Quá trình xử lý đối với trang web tĩnh 11 Hình 1. 2 - Quá trình xử lý đối với trang web động - Xử lý tại máy chủ và máy khách 12 Hình 1. 3 Tỷ lệ các server sử dụng Apache so với các phần mềm khác 14 Hình 1. 4 - Mô hình Request/Response của Client/Server 14 Hình 1. 5 - So sánh web truyền thống và ajax web 16 Hình 2. 1 – Cấu trúc trang trong Sitefinity 30 Hình 2. 2 – Tempalate mẫu trong Sitefinity 31 Hình 2. 3 – Cấu trúc thư mục trong Visual Studio 33 Hình 2. 4 – Định nghĩa cấu trúc dữ liệu sử dụng Nolics.Net 35 Hình 2. 5 – Nâng cấp CSDL 40 Hình 2. 6 - Định nghĩa thuộc tính điều khiển PadpanelBar 42 Hình 2. 7 - Sửa đổi điều khiển PadpanelBar 42 Hình 2. 8 - Điều khiển nội dung (Generic Content) 45 Hình 2. 9 - Điều khiển Modul 46 Hình 2. 10 - Blog Module 46 Hình 2. 11 - List Module 46 Hình 2. 12 - Điều khiển Poll box 47 Hình 2. 13 - Thành phần pluggable module 48 Hình 2. 14 - Mối quan hệ giữa các module 49 Hình 3. 1 - Biểu đồ giá 56 Hình 3. 2 - Sơ đồ use case đối với người sử dụng 59 Hình 3. 3 - Biểu đồ tuần tự của hoạt động lấy báo giá chứng khóan 89 Mục lục PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 1 BẢN TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 2 Danh sách từ viết tắt 3 Danh mục các bảng 4 Danh sách các hình vẽ 5 Mục lục 6 Lời giới thiệu 9 ABSTRACT OF THESIS 10 Chương I : TỔNG QUAN VỀ HỆ QUẢN TRỊ NỘI DUNG CMS 11 1 TỔNG QUAN VỀ CÔNG NGHỆ XÂY DỰNG WEBSITE 11 1.1.Kiến trúc website 11 1.2. Công nghệ xây dựng website: 14 2.Giới thiệu về hệ quản trị nội dung CMS 17 2.1. Một số khái niệm cơ bản 17 2.1.1 Hệ quản trị nội dung 17 2.1.2. Nội dung 17 2.1.3. Thành phần của nội dung 18 2.2. CMS.NET nhìn nhận và tiếp cận theo khía cạnh công nghệ học phần mềm. 19 2.2.1. Xác định yêu cầu của hệ thống CMS 19 2.2.1.1. Các chức năng cơ bản của một hệ thống CMS 19 2.2.1.2. Bổ sung các yêu cầu hiện nay đối với hệ thống CMS chuyên nghiệp 19 1.2.3 Các thành phần của CMS 20 2.3.1 Ứng dụng quản lý nội dung CMA 21 2.3.2 ứng dụng quản lý nội dung thông tin MMA 23 2.4 Đặc trưng nổi bật của Hệ quản trị nội dung 25 2.4.1 Kiểm soát phiên bản (Version Control) 25 2.4.1.2 version control phức tạp 26 2.4.1.3 Tiến trình kiểm soát phiên bản lưu trữ dữ liệu 26 2.4.1.4 Theo dõi phiên bản (Version tracking) 27 2.4.1.5 Cơ chế hồi phục (Rollback) 27 CHƯƠNG II. CÔNG NGHỆ CMS - SITEFINITY 29 2.1. Tổng quan về Telerik SiteFinity 29 2.2. Các thành phần cơ bản của Telerik SiteFinity 30 2.3. Mô hình lập trình 32 2.3.1. Lập trình với Visual Studio 32 2.3.2. Truy xuất cơ sở dữ liệu 34 2.3.3. Lập trình với Trang chủ và các mẫu (templates). 41 2.3.4. Lập trình với bộ duyệt site 41 2.3.5. Làm việc với các điều khiển 43 2.3.6. Làm việc với các mô-đun 44 2.3.6.1. Sử dụng module sẵn có : 44 2.3.6.1. Xây dựng module tích hợp vào Sitefinity: 47 2.3.7. Vấn đề bảo mật trong SiteFinity 51 2.4. Kết luận 53 CHƯƠNG III: KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN 54 1 Giới thiệu về bài toán cần xây dựng 54 2. Xác định vấn đề 54 3. Phân tích yêu cầu bài toán 54 3.1.Tin chứng khoán : 54 3.2.Tin công ty : 55 3.3.Tin công ty niêm yết: 55 3.3.1. Công ty : 55 3.3.1.1. Tổng quan công ty : 55 3.3.1.2. Hồ sơ doanh nghiệp : 56 3.3.1.3. Thống kê cơ bản : 56 3.3.1.4. Cáo bạch báo cáo tài chính : 58 3.3.2. Quyền sở hữu : 58 3.3.2.1. Cổ đông chính : 58 3.3.2.2. Giao dịch nội bộ : 58 3.3.3. Công bố thông tin : 58 3.3.4. Biểu đồ kỹ thuật : 58 3.3.5. Báo cáo tài chính : 59 3.3.6. Truy vấn giá : 59 4. Đặc tả của một số use case chính đối với người sử dụng : 59 4.1. Usecase xem thông tin báo giá chứng khoán 59 4.2. Usecase xem kết quả khớp lệnh 59 4.3. Usecase xem tìm kiếm thông tin các công ty niêm yết 60 5. Thiết kế cơ sở dữ liệu : 60 5.1. Các bảng CSDL về thông tin công ty: 60 5.2. Quan hệ các bảng CSDL : 74 5.2.1.Công ty phát hành cổ phiếu : 74 5.2.2. Báo cáo tài chính : 74 5.2.3. Hệ thống : 75 5.2.4. Giao dịch nội bộ : 75 5.2.5. Thông tin các cổ đông lớn : 76 5.2.6. Lãnh đạo, cơ cấu cổ đông, cáo bạch : 76 5.3. Các bảng CSDL về thông tin giao dịch 77 5.3.1. STS_Market_info : 77 5.3.2. STS_StocksInfo : 78 5.3.3. STS_Order : 84 5.3.4. STS_Trading : 87 3.6. Các biểu đồ tuần tự 88 3.7. Kết luận : 89 CHƯƠNG IV. TRIỂN KHAI ỨNG DỤNG VÀ TỔNG KẾT ĐÁNH GIÁ 90 1. Triển khai ứng dụng 90 2. Tổng kết đánh giá 91 Tài liệu tham khảo 92 Lời giới thiệu Những năm gần đây, lượng khổng lồ website (trang thông tin điện tử) của các tổ chức, công ty và cá nhân ra đời dẫn đến hiệu quả là quá tải thông tin. Người sử dụng phải xử lý khối lượng rất lớn thông tin không cần thiết, với hàng loạt các thao tác trùng lặp trước khi tìm thấy thông tin hữu ích. Theo thống kê, khối lượng thông tin trên Internet đang tăng gấp đôi mỗi năm, và người dùng Internet sử dụng trung bình 60% thời gian để tìm kiếm thông tin, 20% thời gian tìm hiểu thông tin có cần thiết không chỉ 10% thời gian xử lý thông tin. Bên cạnh đó, mỗi website cung cấp những dịch vụ và ứng dụng khác nhau gây phiền toái và mệt mỏi cho người dùng khi họ phải nhớ quá nhiều tên và mật khẩu để có thể truy xuất thông tin hoặc sử dụng dịch vụ của các hệ thống khác nhau. Không đáp ứng được nhu cầu tích hợp ứng dụng và tích hợp hệ thống là hạn chế lớn nhất của các website. Những bất cập trên cùng hàng loạt yêu cầu cấp thiết khác nảy sinh từ thực tế phát triển của mạng Internet cũng như từ cộng đồng người sử dụng đã khai sinh một khái niệm mới, đồng thời cũng là một xu hướng công nghệ mới: CMS (thường được gọi là Hệ quản trị nội dung) Công nghệ CMS phát triển sau thời kỳ web khoảng 7-8 năm như một tất yếu xuất phát từ nhu cầu thực tế. CMS đang là chủ đề nóng nhất trong các ứng dụng CNTT của thế giới và Việt Nam hiện nay. Nói riêng Việt Nam, một số ứng dụng CMS được áp dụng rất nhiều và mang lại nhiều giá trị kinh tế cho các doanh nghiệp. Đồ án này đề cập đến các ưu điểm của công nghệ CMS so với website truyền thống, tình hình phát triển chung của công nghệ CMS trên thế giới và ở Việt Nam nói riêng, kiến trúc CMS và CMS Framework đặc biệt đi sâu về một loại CMS – SiteFinity và xây dựng thử nghiệm ứng dụng “Hệ thống thông tin sàn chứng khoán” dựa trên công nghệ SiteFinity. Em xin chân thành cảm ơn ThS. Lê Tấn Hùng đã dìu dắt em hoàn thành đề tài này! Em cũng xin cảm ơn công ty Psoft đã tạo điều kiện và giúp đỡ em thực hiện đồ án tốt nghiệp! Trong đồ án tốt nghiệp này, em xin trình bày các phần và chi tiết : Bố cục đồ án bao gồm : Chương 1 : Giới thiệu WebSite và hệ quản trị nội dung CMS Chương 2 : Đặc điểm và hoạt động của CMS SiteFinity Chương 3: Phân tích hệ thống WeSite thông tin chứng khoán-Thiết kế và xây dựng website trên nền CMS Sitefinity Chương 4: Tổng kết đánh giá và hướng phát triển ABSTRACT OF THESIS Recently, Information technology and the Internet develop very quickly. Companies and Organizations need to provide and advertise them over the Internet. So we need a method and tool which is easier to use and develop even for general users. CMS is such tool. Software companies can use CMS to quickly develop Web application. User can use it easily. Nowadays, there are many CMS on the market. But SiteFinity have many advantage feature which reduce time to develop and improve performance. The thesis represents and structures as flowing: Chapter 1: Overview about CMS. Chapter 2: SiteFinity Technology and related technology. Chapter 3: Research and analyze stock information problem. Chapter 4: Result and future work. Chương I : TỔNG QUAN VỀ HỆ QUẢN TRỊ NỘI DUNG CMS 1 TỔNG QUAN VỀ CÔNG NGHỆ XÂY DỰNG WEBSITE 1.1.Kiến trúc website Cùng với sự phát triển mạnh mẽ của mạng Internet, đã có những cuộc cách mạng về công nghệ lập trình. Trước đây, chúng ta xây dựng trang web sử dụng ngôn ngữ định dạng “Formatting language” gọi là ngôn ngữ HTML. Ngày nay, bên cạnh ngôn ngữ HTML còn có hàng loạt các công nghệ mới như ngôn ngữ kịch bản “Scripting language”, công nghệ ASP, PHP, JSP, XML và những công nghệ khác để thỏa mãn các nhu cầu mới của người dùng Internet. Để xem một trang web, ta mở một trình duyệt, đánh địa chỉ của trang và trang web yêu cầu sẽ hiện ra. Nhưng trước khi người sử dụng có thể yêu cầu trang web đó, người thiết kế phải tạo nên trang web này và đưa nó lên mạng. Việc xây dựng các trang web dựa trên 2 công nghệ chính, đó là công nghệ web tĩnh và công nghệ web động. Website tĩnh Hình 1. 1 - Quá trình xử lý đối với trang web tĩnh Máy chủ: là máy chạy một phần mềm máy chủ web (web server). Đây là phần mềm thực hiện nhiệm vụ quản lý các trang web và chuyển nó đến trình duyệt (qua Internet hoặc qua mạng nội bộ). Máy khách: là máy mà người sử dụng đang chạy một trình duyệt. Trang tĩnh HTML có rất nhiều hạn chế. Có nhiều việc mà người ta không thể thực hiện được đối với một trang web tĩnh, chẳng hạn: Người ta không thể tạo được một trang web hiển thị tên của người đang xem nó. Người ta không thể tạo được một trang web phản ánh một tình trạng mới nhất như thời gian hiện thời hoặc thời tiết được cập nhật. Người ta không thể tạo được một trang web thể hiện nội dung mà người sử dụng yêu cầu ở trang trước đó. Website động Một trang web có nội dung động là một trang web chứa cả HTML và các lệnh để tạo lập HTML. Khi người sử dụng yêu cầu một trang web động, phản hồi mà người sử dụng nhận được vẫn là một HTML. Tuy nhiên trước đó, một phần HTML (hoặc tất cả nội dung của HTML) đã được tạo ra bởi hệ thống máy chủ theo các lệnh tạo lập HTML. Hình 1. 2 - Quá trình xử lý đối với trang web động - Xử lý tại máy chủ và máy khách Xử lý phía máy chủ: Máy chủ sẽ phân tích thông tin mà trình duyệt gửi đến và sẽ truy cập cơ sở dữ liệu để tìm ra thông tin. Máy chủ sẽ sử dụng thông tin này để tạo nên một HTML thể hiện một trang web. HTML được máy chủ tạo nên sẽ được gửi về trình duyệt. Sau đó trình duyệt dịch HTML và hiển thị trang web theo như cách xử lý đối với trang web tĩnh. Xử lý phía máy khách: Đoạn mã dành cho máy khách không được thực hiện bới máy chủ mà nó được gửi đến trình duyệt (cùng với HTML như một phần của đáp ứng), đoạn mã này được xử lý bởi trình duyệt hiển thị kết quả trang HTML trên màn hình của người sử dụng. Bằng cách sử dụng mã phía máy khách, có thể làm cho trang web sống động hơn, có thể đáp ứng lại các động tác bấm phím và di chuột của người sử dụng. Điều này có nghĩa là trang web được hiển thị một các hấp dẫn hơn so với trang web được gửi đi từ máy chủ. Web tĩnh Web động - Ít khi phát sinh lỗi trong quá trình chạy - Tốc độ cao hơn - Giá thành xây dựng thấp - Phụ thuộc rất ít vào công nghệ xây dựng. - Nội dung phải được thay đổi trực tiếp ở mã nguồn bởi lập trình viên. - Khó hơn. - Khả năng xảy ra lỗi cao hơn - Tốc độ thấp do phải dịch các đoạn mã kịch bản. - Giá thành xây dựng cao - Phụ thuộc khá nhiều vào công nghệ xây dựng web. - Tiện lợi và nhanh chóng cập nhật, thay đổi nội dung trang web. - Dễ dàng mở rộng khả năng phục vụ của hệ thông khi có nhiều người sử dụng động thời Bảng 1. 1 - So sánh giữa công nghệ web tĩnh và web động Apache HTTP server Apache server là một HTTP server phổ biến nhất trên thế giới hiện nay, được viết bởi The Apache Foundation, một nhóm kỹ sư từ khắp nơi trên thế giới. Mục tiêu của Apache là tạo ra một server theo chuẩn HTTP thực sự mạnh nhưng hoàn toàn miễn phí. Ngay từ khi mới ra đời, Apache đã chứng minh được là một phần mềm hoàn hảo với tốc độ nhanh nhất, thân thiện với người dùng, độ bảo mật cao và hỗ trợ hầu hết các hệ điều hành hiện nay. Apache có thể làm việc trên Window NT/9x/xp, Netware 5.x trở lên, OS/2 và hầu hết các phiên bản Unix/Linux. Hình 1. 3 Tỷ lệ các server sử dụng Apache so với các phần mềm khác ( Theo số liệu của Netcraft.com) Nhiệm vụ của Apache server là khi có bất cứ một browser trên máy khách (client) yêu cầu một trang web nằm trên server thông qua kết nối TCP/IP, Apache server sẽ đáp ứng nhu cầu đó bằng cách trả về nội dung của trang web đó. Nội dung này sẽ được browser tại máy khách hiển thị và đưa ra màn hình. Hình 1. 4 - Mô hình Request/Response của Client/Server 1.2. Công nghệ xây dựng website: Các công nghệ xây dựng Web 1.0 a. Ngôn ngữ đánh dấu siêu văn bản HTML Là "Ngôn ngữ Siêu văn bản" được thiết kế ra để tạo nên các trang web, nghĩa là các mẩu thông tin được trình bày trên World Wide Web. HTML giờ đây đã trở thành một chuẩn Internet do tổ chức World Wide Web Consortium (W3C) duy trì. HTML nói chung tồn tại như là các tập tin văn bản chứa trên các máy tính nối vào mạng Internet. Các file này có chứa thẻ đánh dấu, nghĩa là, các chỉ thị cho chương trình về cách hiển thị hay xử lý văn bản ở dạng văn bản thuần túy. Các file này thường được truyền đi trên mạng internet thông qua giao thức mạng HTTP, và sau đó thì phần HTML của chúng sẽ được hiển thị thông qua một trình duyệt web, một loại phần mềm trực quan đảm nhiệm công việc đọc văn bản của trang cho người sử dụng), phần mềm đọc email , hay một thiết bị không dây như một chiếc điện thoại di động. b. Ngôn ngữ kịch bản PHP Là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới. W eb 2.0 Ajax: AJAX (Asynchronous JavaScript and XML): JavaScript và XML không đồng bộ, là bộ công cụ cho phép tăng tốc độ ứng dụng web bằng cách cắt nhỏ dữ liệu và chỉ hiển thị những gì cần thiết, thay vì tải đi tải lại toàn bộ trang web. Ajax là một kỹ thuật phát triển web có tính tương tác cao bằng cách kết hợp các ngôn ngữ: HTML (hoặc XHTML) với CSS trong việc hiển thị thông tin Mô hình DOM (Document Object Model), được thực hiện thông qua JavaScript, nhằm hiển thị thông tin động và tương tác với những thông tin được hiển thị Đối tượng XMLHttpRequest để trao đổi dữ liệu một cách không đồng bộ với máy chủ web. (Mặc dù, việc trao đổi này có thể được thực hiện với nhiều định dạng như HTML, văn bản thường, JSON và thậm chí EBML, nhưng XML là ngôn ngữ thường được sử dụng). XML thường là định dạng cho dữ liệu truyền, bao gồm HTML định dạng trước, văn bản thuần (plain text), JSON và ngay cả EBML. So sánh với các ứng dụng web truyền thống Điểm khác biệt cơ bản nhất của công nghệ này là việc xử lý thông tin được thực hiện trên máy Client thay vì Server như cách truyền thống. Trên máy client, JavaScript sẽ xử lý các đáp ứng của máy chủ. Kết quả là trang web được hiển thị nhanh hơn vì lượng dữ liệu trao đổi giữa máy chủ và trình duyệt web giảm đi rất nhiều. Thời gian xử lý của máy chủ web được giảm theo vì phần lớn thời gian xử lý được thực hiện trên máy khách Những nhược điểm của AJAX Giao diện người dùng. Chẳng hạn, phím "Back" (trở lại trang trước) được đánh giá cao trong giao diện website chuẩn. Đáng tiếc, chức năng này không hoạt động ăn khớp với Javascript và mọi người không thể tìm lại nội dung trước đó khi bấm phím Back. Bởi vậy, chỉ một sơ xuất nhỏ là dữ liệu trên trang đã bị thay đổi và khó có thể khôi phục lại được. Bên cạnh đó, mọi người không thể lưu lại địa chỉ web vào thư mục Favorite (Bookmark) để xem lại về sau. Do áp dụng lớp trung gian để giao dịch, các ứng dụng AJAX không có một địa chỉ cố định cho từng nội dung. Khiếm khuyết này làm cho AJAX dễ "mất điểm" trong mắt người dùng. Các ứng dụng AJAX phổ biến Google Suggest Google Maps Gmail, Google Groups Flickr (hiện thuộc Yahoo) Hình 1. 5 - So sánh web truyền thống và ajax web JavaScript JavaScript, theo phiên bản hiện hành, là một ngôn ngữ lập trình kịch bản dựa trên đối tượng được phát triển từ các ý niệm nguyên mẫu. Ngôn ngữ này được dùng rộng rãi cho các trang web, nhưng cũng được dùng để tạo khả năng viết script sử dụng các đối tượng nằm sẵn trong các ứng dụng. 2.Giới thiệu về hệ quản trị nội dung CMS 2.1. Một số khái niệm cơ bản Sự bùng nổ của kỉ nguyên Internet đã dẫn tới một nhu cầu rất lớn, đó là nhu cầu tìm kiếm , khai thác và trao đổi thông tin trên mạng internet. Các website suất hiện ngày càng nhiều, do đó cũng gia tăng một nhu cầu mới: nhu cầu quản lý, khai thác và trao đổi thông tin trên mạng Internet. Những giải pháp quản trị nôi dung Internet được phát triển và ngày càng được chuẩn hóa, giúp cho các tổ chức, doanh nghiệp… thuận tiện hơn trong việc xuất bản cũng như khai thác thông tin. Trong môi trường liên kết và tương tác cao như môi trường internet, việc nhận thức và phát triển một ứng dụng theo tiêu chẩn chung của quốc tế, có khả năng tương tác cao với các hệ thống khác là một yếu tố hết sức quan trọng và cần thiết. 2.1.1 Hệ quản trị nội dung Một CMS là một hệ thống quản lý các thành phần nội dung của một website. Như vậy, khi nhắc đến CMS, người ta phải nhắc đến các yếu tố cấu thành nội dung nằm trong phạm vi mà hệ CMS đề cập tới cũng như các đặc điểm trong các chu trình quản lý nội dung đó Định nghĩa trên đây có vẻ đủ đơn giản, nhưng nếu ta đặt câu hỏi: “ CMS là gì?” đối với hai hay nhiều hơn các chuyên gia Web thì ta cũng có thể nhận được hai hay nhiều câu hỏi khác nhau. Chính xác hơn ta sẽ nhận được nhiều hơn một dạng diễn tả định nghĩa trên của ta. Vấn để là ở sự không rõ nghĩa( hoặc sự hiểu và mô tả khác nhau) của từ nội dung, hay chính xác hơn là các thành phần nào của nội dung được CMS quản lý?? Một vấn đề nữa là trong định nghĩa này, không có chỗ nào định nghĩa chức năng nền tảng làm nên một CMS. Hầu hết các CMS được gọi tên theo các đặc tính thêm vào chúng. Trong khi đó, cách chính xác để nói một CMS có tối ưu hay không là kiểm tra xem các nhân chức năng đó hoạt động tốt như thế nào. Như vậy, nếu thiếu sự định nghĩa về các chức năng nền tảng của một CMS thì sẽ không có cơ sở để đánh giá giữa các CMS với nhau. 2.1.2. Nội dung Hầu hết các chuyên gia đều đồng ý rằng nội dung là “quặng” tìm thấy trong các web site. Chúng ta nên dùng từ quặng ở đây, và nó chia thành hai phạm trù: Thông tin(information)- ví dụ như các ảnh(image) và các đoạn văn bản(text) – mà ta thấy trên các website khi ta truy cập chúng. Các ứng dụng(application) hay phần mền chạy trên các web server để hiển thị thông tin trên các Website Bây giờ lại xuất hiện một số vấn đề không rõ ràng mới. Một số chuyên gia nói rằng miền CMS chỉ chứa thông tin, trong khi một số khác thì nói nó chứa cả thông tin lẫn ứng dụng. vậy quan điểm nào là chính xác? Thoạt nhìn ta có thể nói cách giải thích chức cả hai phạm trù trên là cách giải thích đúng hơn về từ nội dung. Tuy nhiên một câu hỏi được đặt ra là liệu chúng ta có cần hoặc có thể quản lý ứng dụng theo cùng một cách như đối với thông tin hay không? Nhiều người sẽ nói rằng là không, vì họ cho rằng các nhà phát triển phần mền nên phát triển hai hệ thống phần mền khác nhau. Một để quản lý thông tin( nghĩa là CMS), và một để quản lý các ứng dụng. Bởi vì thông tin là cái được hiển thị( what) còn ứng dụng quyết định thông tin được hiển thị như thế nào(how)? Hơn nữa những người tham gia vào việc tạo ra và bảo trì hai dạng nôi dung khác nhau này cũng thường khác nhau như công việc của họ vậy. Những người làm về thông tin thường có khuynh hướng sáng tạo hơn những người phát triển ứng dụng thì có kĩ năng, kĩ thuật hơn. Nhưng không đối lập với khái niệm người phát triển ứng dụng sáng tạo. Khác biệt quan trọng nhất có vẻ như là các workflow của thông tin và ứng dụng thay đổi một cách đáng chú ý. ( từ workflow sẽ được giải thích kỹ hơn ở phần sau, còn ở đây ta cứ tạm sử dụng nó). Các phương pháp tiếp cận khác nhau, mục đích, người sử dụng và cả các workflow cũng khác nhau, đáng để ta xây dựng hai hệ thống khác nhau. Áp đặt thông tin và các ứng dụng vào cùng một thể chung sẽ sinh ra phức tạp không cần thiết cho cả nhà phát triển hệ thống và người sử dụng hệ thống đó. Việc phát triển một CMS hoạt động bất kể loại nội dung gì( thông tin hay ứng dụng) yêu cầu khả năng bảo trì và theo dõi luồng của hai workflow khác nhau tại cùng một thời điểm. Sự thực là các workflow của thông tin và ứng dụng có nhiều điểm tương đồng: cùng được tạo ra, thay đổi, phê chuẩn, kiểm thử và triển khai. Nhưng đó là tất cả những gì tương đồng. Luôn cần có các tập kỹ năng rất khác nhau trong vai trò của việc tạo ra thông tin so với việc tạo ra các ứng dụng, và các khác biệt chỉ được mở rộng khi ta tiếp tục đến giai đoạn triển khai. Các workflow của thông tin và ứng dụng cũng không như nhau. Cần phải có thêm các giai đoạn và các công dụng trong workflow của một ứng dụng. ví dụ giai đoạn phân tích, thiết kế phải chi tiết hơn, và có quá trình biên dịch, kiển thử hệ thống và kiểm thử khi phát hành. 2.1.3. Thành phần của nội dung Như chúng ta thấy, ngay cả một website đơn lẻ cũng có thể được tạo ra từ nhiều dạng nội dung khác nhau như Text, Image, Audio, Video, …và làm việc với từng loại nội dung đơn lẻ dễ dàng hơn rất nhiều so với làm việc với tất cả chúng một lúc. Lý do chủ yếu là nó cho phép sự riêng biệt hóa, nghĩa là ta có thể dùng các công cụ thiết kế từng loại nội dung một cách riêng biệt, cũng có nghĩa là một người có thể thiết kế nội dung theo cách tốt nhất mà anh ta có thể làm. Ví dụ một chuyên gia vẽ các ảnh minh họa thì không phải lo lắng về việc viết phần câu chuyện.. Các CMS phải phụ thuộc rất nhiều vào khái niệm tổng thể các phần nhỏ của nội dung. Thuật ngữ mà CMS dùng để biểu diễn các phần nhỏ này là “thành phần nội dung”. Ta có thể hiểu thành phần nội dung là một dạng thể hiện của một trong các mảnh nhỏ hình thành nên một câu chuyện hoặc một bài báo trong website. Mức độ của thành phần nội dung được xác định bởi CMS đang được sử dụng, và có thể nhỏ như một headline, byline, dateline…hoặc có thể đủ lớn để thành một câu chuyện. Các thành phần nội dung thường được chứa trong một kho lưu trữ dưới cùng một định dạng. Ví dụ một thành phần nội dung có kiểu Image có thể được lưu dưới dạng file GIF với bề rộng width và chiều cao hight định trước. Các thành phần nội dung cũng có thể đứng một mình theo nghĩa tự chúng cũng có ý nghĩa riêng. Mức độ của thành phần nội dung được xác định bởi CMS đang được sử dụng và có thể nhỏ như một headline,byline và dateline…hoặc có thể đủ lớn để thành một câu chuyện. Các thành phần nội dung thường được chứa trong một kho lưu trữ dưới cùng một định dạng. Ví dụ một thành phần nội dung của kiểu image có thể được lưu dưới dạng file GIF với bề rộng width và chiều cao hight định trước. Các thành phần nội dung cũng có thể đứng một mình theo nghĩa tự chúng cũng có ý nghĩa riêng. Còn một loại liên quan đến các thành phần nội dung nữa là tài liệu (document). Tài liệu thường được coi là một file, nên ta sẽ coi tài liệu là một nhóm các thành phần nội dung. Các hệ thống quản lý tài liệu cung cấp cùng một chức năng giống như CMS ngoại trừ ở cấp độ tài liệu ( hay trong thế giới web nó là cấp độ website).Chúng thiếu khả năng làm việc với các chi tiết chứa trong một trang và thay vào đó chúng xử lý cả trang. Vì thế chúng thiếu sức mạnh và sự linh hoạt của các CMS. Các hệ thống quản lý tài liệu đôi khi vẫn bị nhầm lẫn là các CMS, được phát triển và đem bán như các CMS. Ta có thể đồng ý với nhau rằng một hệ quản trị tài liệu là một CMS với các thành phần nội dung được thiết lập ở mức độ lớn nhất. Như vậy nói một cách chính xác,CMS là hệ thống quản lý việc khởi tạo nội dung,quá trình xử lý nội dung đó cho đến khi nó được xuất bản,phân phối tới người dùng cuối. CMS = Khởi tạo nội dung à Quản lý quá trình xử lý nội dung đó à Phân phối nội dung tới người dùng đầu cuối 2.2. CMS.NET nhìn nhận và tiếp cận theo khía cạnh công nghệ học phần mềm. 2.2.1. Xác định yêu cầu của hệ thống CMS 2.2.1.1. Các chức năng cơ bản của một hệ thống CMS Cung cấp công cụ phục vụ quá trình soạn thảo,biên tập, chỉnh lý nội dung. Có hệ thống quản lý lưu trữ nội dung. Kểm soát phiên bản tài liệu,giám sát sự thay đổi,cho phép tìm lại nội dung tài liệu trứơc và sau khi thay đổi ,biên tập. Cung cấp hệ thống quản lý quy trình xử lý nội dung thông tin. Có khả năng kết xuất thông tin đề ra tự động từ hệ thống quản lý lưu trữ nội dung dùng chung. Cung cấp khả năng cá nhân hoá thông tin cho người dung Cung cấp cho người dùng những công cụ tìm kiếm tra cứu theo thuộc tính, tìm kiếm toàn văn giúp nhanh chóng tìm kiếm và định vị được nội dung thông tin. 2.2.1.2. Bổ sung các yêu cầu hiện nay đối với hệ thống CMS chuyên nghiệp Trong môi trường điện toán phức tạp như hiện nay,thông tin không còn là thực thể đơn lẻ nữa ,nó là một phần trong một hệ thống thông tin lớn hơn, luôn cần có sự kết hợp, trao đổi, liên thông dữ liệu với nhau. Yêu cầu trong quá trình khởi tạo nội dung: Độc lập nội dung và các lớp giao diện thể hiện Cho phép nhiều người sử dụng, lầm việc trên một tài liệu Mỗi nội dung chỉ có một nguồn duy nhất Cung cấp khả năng quản lý các thuộc tính khác liên quan đến nội dung thông tin ( như tác giả, tiêu đề, từ khoá…) Người sử dụng không cần có kỹ năng đặc biệt về lập trình và công nghệ có thể sử dụng các công cụ biên tập và xử lý nội dung Yêu cầu trong quá trình xử lý nội dung: Kiểm soát phiên bản tài liệu, quản lý lưu trữ Quản lý quy trình biên tập và phê duyệt nội dung thông tin Đảm bảo tính bảo mật Có khả năng tích hợp với các hệ thống thông tin khác bên ngoài Cung cấp các dữ liệu báo cáo tình hình hoạt động đa dạng Xuất bản thông tin Đồng nhất về khả năng trình bày với những loại dữ liệu giống nhau Cung cấp các mẫu, khuôn dạng (template) giúp xuất bản nội dung một cách nhanh chóng và thuận lợi. Có khả năng xuất bản ra nhiều định dạng khác nhau như web, in ấn, thiết bị cầm tay… Có khả năng cá nhân hoá thông tin Về mặt công nghệ Hệ thống phải tiện dụng và thân thiện với người dùng Công nghệ giúp hệ thống có khả năng tương thích và dễ dàng tích hợp, mở rộng Hệ thống phải tuân theo các chuẩn dữ liệu xuất bản thông tin trực tuyến 1.2.3 Các thành phần của CMS Để thực hiện được những yêu cầu trên, một CMS phải có những thành phần nền tảng chung và các module bổ sung. Một CMS điển hình bao gồm ít nhất ba thành phần : ứng dụng quản lý nội dung CMA, ứng dụng quản lý nội dung thông tin (matecontent) MMA, và ứng dụng phân phối nội dung CDA. Một số CMS có nhiều hơn ba thành phần này, nhưng tất cả đều chứa ba thành phần này ở dạng nào đó. CMA quản lý các thành phần nội dung của một CMS, MMA quản lý các thông tin và các thành phần nội dung và cuối cùng CDA sẽ cung cấp cách hiển thị các thành phần nội dung tới người sử dụng. 2.3.1 Ứng dụng quản lý nội dung CMA Nói một cách đơn giản, ứng dụng quản lý nội dung CMA quản lý vòng đời đầy đủ của các thành phần nội dung, từ khi bắt đầu đến khi xóa bỏ chúng. CMA sẽ tạo các thành phần nội dung trong kho lưu trữ, bảo trì chúng trong thời gian chúng tồn tại, và loại bỏ các thành phần nội dung này khỏi kho lưu trữ khi chúng không cần thiết nữa. Kho lưu trữ ở đây có thể là một CSDL, một tập các file hoặc kết hợp cả 2 loại đó. Tiến trình quản lý là tuần tự và được thực hiện bởi một workflow. CMA được coi là phần quản trị của một CMS. CMA cho phép người viết nội dung xây dựng và phát triển các thành phần nội dung mà không cần phải biết HTML (HyperText Markup Language) hoặc phải hiểu về kiến trúc web nền tảng. Nó cho phép duy trì nội dung ngày qua ngày mà không cần phải lúc nào cũng nhờ đến Webmaster. Tất cả các CMA đều được thiết kế đa người dùng, và mỗi người dùng có một hoặc một vài vai trò sử dụng (role) đối với vòng đời của thành phần nội dung. Nhiều CMA có cơ chế an ninh dựa vào việc thiết lập các vai trò này (role-based security), nghĩa là người sử dụng chỉ được phép thực hiện các thao tác được cho phép khi anh ta được add vào hệ thống. Một website nhỏ với một vài người làm việc trên đó có thể chỉ có một vài các role, mỗi role có rất nhiều các tác vụ và chức năng khác nhau mà nó có thể thực hiện. Với một website lớn hơn mới nhiều bạn bè, thành viên và những người truy cập thì sẽ có một vài role khác nhau với các chức năng rất bị hạn chế. Các role của người sử dụng thường được thiết lập khi CMS được cài đặt. Thường thì nó sẽ đưa ra một danh sách các tác vụ và các chức năng để trên đó ta sẽ chọn những tác vụ và chức năng riêng biệt mà role đó có quyền thực hiện. Một vài hệ thống tiên tiến cho phép ta thêm mới hoặc thay đổi các role sau khi hệ thống đã được kích hoạt một thời gian. Điều này cho phép ta có một hệ thống động hơn, nền tảng là các role và mở ra những thay đổi tổ chức của một website. Mục đích của CMA là xử lý các thành phần nội dung trong suốt vòng đời của chúng nhanh nhất và hiệu quả nhất có thể. Ở cuối mỗi giai đoạn của vòng đời, các thành phần nội dung sẽ ở trạng thái hoàn thiện hơn và ổn định hơn. Phê chuẩn(Approval) Trước khi bất kỳ một giai đoạn nào trong “đời” của một thành phần nội dung được hoàn tất và giai đoạn tiếp theo bắt đầu thì một ai đó có thẩm quyền phải phê chuẩn hay chấp nhận những thay đổi đối với thành phần nội dung đó. Tiến trình phê chuẩn khác nhau rất nhiều giữa các Website, ngay cả khi các Website này cùng dùng một phiên bản CMS như nhau. Đối với hệ thống lớn thì cần nhiều tổ chức, cá nhân, và role khác nhau để thực hiện phê chuẩn nội dung trước khi nó sẵn sàng chuyển sang giai đoạn tiếp theo. Còn đối với hệ thống nhỏ,có khi chỉ cần một người thực hiện công việc này trong suốt vòng đời của các thành phần nội dung. Thiết kê (Design) Đây là giai đoạn các thành phần nội dung sẽ được đưa lên Website, được xác định và mô tả. Trong một số hệ thống CMS, các thành phần nội dung trong giai đoạn này chỉ được nhập tựa đề, chú thích và mô tả, rồi sau này tác giả mới hoàn tất nốt việc biên tập nội dung. Giai đoạn này thường không phải là phần được xây dựng sẵn trong CMS mà được hỗ trợ bới các công cụ của third party. Trong nhiều trường hợp ta thường không cần phải mua các công cụ đắt tiền, mà chỉ cần một chương trình vẽ và soạn thảo đơn giản là đủ. Soạn thảo( Authoring) Soạn thảo là quá trình thu được các thành phần nội dung cho một Website. Nó không chỉ bao hàm việc viết một thành phần nội dung chọn lựa từ một mớ hỗn tạp, mà còn thu được nội dung từ các nguồn khác và nạp chúng vào hệ thống. Một CMS có thể thu nhận một vài thành phần nội dung của nó qua các nguồn nội dung, sau đó trực tiếp làm cho chúng có trên Website mà không cần sự can thiệp của con người . Một số site thì muốn nội dung này được lưu trữ trong các kho chứa trong một khoảng thời gian nhất định. Những site khác lại chúng ra khỏi hệ thống khi các thành phần nội dung mới được thu nhận. Tuy nhiên một website mà tất cả các nội dung đều được thu nhận theo cách này chắc chắn sẽ làm hại đến website của ta vì hầu hết người sử dụng đều truy cập vào một website do tính độc nhất có một không hai của nó. Việc có nội dung giống hệt như của người khác thật nhàm chán, và người sử dụng sẽ truy cập đến nguồn của nội dung đó và rời bỏ website của ta. Trong hầu hết các trường hợp, tốt hơn hết là load các nội dung có liên quan về website và đưa chúng vào kho chứa của ta, sau đó để cho các tác giả của ta cải tiến nó trước khi đưa ra công chúng. Đa số các tác giả có thể làm tăng giá trị của nội dung ban đầu bằng cách thêm vào ý kiến của độc giả và những phân tích đánh giá sâu hơn… Đa số các hệ thống soạn thảo của CMS đều là hệ thống tựa văn bản (text based). Các dạng đa phương tiện khác như ảnh,video, audio thường được tạo ra bởi các công cụ chuyên biệt cho chúng ở bên ngoài CMS. Những dạng này thường được import vào CMS như các thành phần nội dung hoàn chỉnh mà không thể được thay đổi bởi bản thân CMS. chỉnh sửa(Editing) Sau khi một thành phần nôij dung được tạo ra,nó thường phải đi qua nhiều vòng chỉnh sửa và viêt lại cho đến khi tất cả những người có thẩm quyền cho rằng đó là chính xác. Hoàn chỉnh và sẵn sàng sang giai đoạn tiếp theo. sắp xếp(layout) Sau khi các thành phần nội dung được hoàn tất,chúng sẽ được sắp xếp lên website để quan sát, một CDA tốt không có vai trò thực sự trong việc sắp xếp các thành phần nội dung, nó chỉ đưa ra các đề nghị cho thứ tự sắp xếp và vị trí các thành phần nội dung. kiểm thử(testing) Bây giờ các thành phần nội dung của ta đã sẵn sàng cho việc quan sát,nên ta cần test chúng,việc kiểm thử này rõ ràng là cần thiết để đảm bảo không có sự cố nào.Khi xem qua trình duyệt.việc kiểm thử bao gồm:kiểm tra image có khớp với tên không,các hyperlink có chính xác đến nội dung liên quan không…ngoài ra còn phải đảm bảo hiển thị tốt ở các trình duyệt khác nhau,đặc biệt là scrpt phía client. Dàn dựng(staging) Sau khi kiểm thử nội dung sẽ được dàn dựng trên server để chờ cho việc hiển thị.Mục đích là để truyền dữ liệu càng nhanh càng tốt tránh khỏi bị phá nhiễu bởi các use kích hoạt nội dung của hệ thống Triển khai(deployment) Đây là giai đoạn đưa nội dung ra công chúng ,thủ tục triển khai khá phức tạp phụ thuộc vào server ta có cho phép tự truy cập 24/7 hay không. Bảo trì(maintenace) Đây là giai đoạn bổ xung thông tin hoặc thông tin mới xuất hiện,hoăc cũng có thể là gai đoạn sửa lỗi phát sinh trong vòng đời của các thành phần nội dung. Lưu trữ(archival) Một khi nội dung quá thời hạn hoặc đã đến đỉnh điểm của sự hữu ích thì nó cần được lưu trữ. Lưu trữ không có nghĩa là use không thể truy nhậpcác thành phần nội dung này mà là nội dung này có thể truy xuất thông qua phép tìm kiếm kho lưư trữ, công việc rất cần thiết vì một số người muốn truy xuất nội dung archive lớn một cách đáng ngạc nhiên và một lưu trữ sẽ đem lại lợi ích to lớn trong tương lai. Xoá bỏ(removal) Nếu một thành phần nội dung lỗi thời quá, quá hạn và không thể update thườn xuyên thì thành phần nội dung có thể được xóa mặc dù mục này là tình cờ, nhưng tốt nhất ta nên lưu trữ nó và có phép truy xuất lại qua phép tìm kiếm dữ liệu.có hai cách xoá là xoá và huỷ . Huỷ ở đây có nghĩa là xóa hết các nội dung trước đó và không thể khôi phục được lại. Nếu Nếu xóa đơn thuần thì có thể khôi phục được lại. 2.3.2 ứng dụng quản lý nội dung thông tin MMA Trong hệ thống CMS lý tưởng ,nội dung và thành phần nội dung được phân phối tách biệt, do đó tạo thành hai cơ chế quản lý tách biệt là CMA và MMA. Mỗi cơ chế đặc trưng cho hai thành phần khác nhau: nội dung và phân phối nội dung. Lý do chủ yếu của sự phân tách nội dung và nội dung là hai công việc khác nhau và những con người tham gia chúng cũng khác nhau. Chúng ta đã bàn tới việc liệu có xử lý chung thông tin và ứng dụng trong CMS. Như vật việc tách biệt sẽ giúp hệ thống đỡ phức tạp. Nhân viên toà soạn là những người sử dụng CMA,và workflow của CMA như đã nói ở trên sẽ trực tiếp liên quan đến những vòng đời các thành phần nội dung,không có một sự liên hệ nào dù là nhỏ nhất Trong khi đó MMA được những con người sáng tạo-những nhân viên thiết kế sử dụng có một vòng đời liên hệ chuyên biệt với thiết lập thông tin liên quan đến website sẽ như thế nào và cảm nhận như thế nào. Thực tế tiến trình MMA chẳng quan tâm chút nào đến việc nội dung thực sự được phân phối mà quan điểm WSYIWYG được đặc biệt chú trọng. Metaciontent life cycle MMA là ứng dụng quản lý vòng đời đầy đủ của nội dung thông tin,ta có thể định nghĩa nội dung thông tin là các thông tin về nội dung. Nghe qua có vẻ MMA rất giống CMA nhưng MMA có mục tiêu khác hoàn toàn: đó là việc sinh ra các nội dung thông tin thay vì các thành phần nội dung. Cũng giống CMA, ở cuối mỗi giai đoạn vòng đời các nội dung thông tin ở trạng thái ổn định hơn. Phê chuẩn Trước khi một giai đoạn hoàn tất và giai đoạn tiếp theo bắt đầu một ai đó có thẩm quyền phê chuẩn nội dung, việc phê chuẩn có thay đổi quan trọng ở MMA thường do một uỷ ban thực hiện chứ không phải một cá nhân.Vì nó quyết định wesite sẽ như thế nào và được hoạt động như thế nào còn những thay đổi ở bảng hay cột bảng có thể do cá nhân đảm nhận. Phân tích(analysis) Trước khi tạo ra sự thay đổi ,một vài nghiệp vụ phân tích cần được tiến hành. Công việc phân tích thường tiến hành ngoài CMS vì có nhiều công cụ tốt của công ty thứ ba thường xuyên thực hiện sự phân tích website. Thiết kế Quá trình mô tả các nội dung thông tin trên wedsite thường là ở mức độ chi tiết cao vì thiết kế này phải do một uỷ ban phê chuẩn. Đây là giai đoạn cũng được thực hiện ngoài CMS tạo cơ hội phát triển cho các công cụ của công ty thứ ba trên thi trường Khởi tạo Việc tạo ra các nội dung thông tin luôn dựa vào việc phân tích và thiết kế trước đó. Xây dựng(buil) Một khi các miếng nội dung thông tin đã được tạo thành và hoàn tất chúng cần được giáp nối với nhau,trong trường hợp .Net,hầu hết nội dung thông tin đều ở dạng file ASP.NET hoặcC# và cần được biên dịch. Đây là giai đoạn khác nhau chủ yếu giữa CMA và MMA vì giai đoạn này thường cần công cụ của các công ty thứ 3 (nằm ngoài CMS) Kiểm thử(test) Sau khi các nội dung thông tin được tạo ra và xây dựng, chúng cần được qua quá trình kiểm thử. Không như với các thành phần nội dung, việc kiểm thử ở đây đặc biệt nghiêm ngặt và không thể lơ là với bất cứ giá nào. Stage, Deployment, Maintenance, Removal Các giai đoạn này tương tự như đối với CMA quản lý các thành phần nội dung Các dạng nội dung thông tin Khuôn mẫu (Template): Thường ở dạng HTML, cho phép ta trong một website dưới dạng các module. Các thành phần nội dung khác nhau thì tương ứng các template chuyên biệt giúp cho việc hiển thị trang web. Kịch bản (Script): Hiện nay có rất nhiều ngôn ngữ kịch bản, và một CMS luôn hỗ trợ ít nhất một ngôn ngữ nếu không muốn nói là nhiều. Kịch bản chia làm hay kiểu: phía client và phía server: phía client đựơc chạy trên trình duyệt còn phía server được chạy trên server. Chương trình (Program): Chương trình khác kịch bản ở chỗ nó được biên dịch trước khi chạy trên server, khiến cho nó chạy nhanh hơn. Nó cũng nhiều chức năng hơn kịch bản vì nó có thể được xây dựng tất cả các chức năng được hỗ trợ bởi hệ điều hành mà nó chạy trên đó. Tuy nhiên nhược điểm của chương trình là nó chỉ chạy phía server nên nếu không cẩn thận nó sẽ gây ra thời gian đáp ứng chậm vì lỗi kết nối. Như vậy một CMS được tạo dựng bởi ít nhất ba thành phần: Quản trị nội dung, quản trị nội dung thông tin và phân phối nội dung. Mục đích của ba thành phần này là quản lý vòng đời đầy đủ của các thành phần nội dung và nội dung thông tin theo các workflow trong kho chứa và với đích là hiển thị nội dung động,thân thiện với người dùng lên website. 2.4 Đặc trưng nổi bật của Hệ quản trị nội dung 2.4.1 Kiểm soát phiên bản (Version Control) Theo dõi được các phiên bản nội dung của ta là một đặc tính quan trọng, thâm chí là khả năng cần thiết trong bất kỳ một hệ CMS thực sự tốt nào. Chức năng giúp người sử dụng lưu trữ và khôi phục các phiên bản của các trang thông tin. Kiểm soát phiên bản bao gồm theo dõi phiên bản (version tracking) và cơ chế hồi phục (rollback), và nó là framework để trên đó ứng dụng quản lý nội dung CMA và ứng dụng quản lý nội dung thông tin MMA hoạt động. Không có chức năng kiểm soát phiên bản, CMS sẽ rất khó khăn để đảm bảo tính nhất quán, toàn vẹn của nó. Có nhiều cách để CMS cài đặt chức năng kiểm soát phiên bản. Có thể CMS sẽ tích hợp các package kiểm soát phiên bản cung cấp bởi công ty thứ ba, tuy nhiên hầu hết các CMS đều có chức năng kiểm soát phiên bản được xây dựng trực tiếp.Quản lý phiên thường phải được tích hợp chặt chẽ với hệ thống workflow của CMS, và đôi khi ta không thực sự nhận ra sự có mặt của version control. Có nhiều phương pháp tiếp cận version control: phương án tiếp cận đơn giản và phương án tiếp cận phức tạp. Phương án tiếp cận đơn giản có trong hầu hết các CMS kể cả các CMS theo cách tiếp cận phức tạp. 2.4.1.1 Version control đơn giản Version control đơn giản hoạt động với giả thiết là chỉ có một người có thể truy cập được vào một thành phần nội dung tại một thời điểm bất kỳ. Dạng này dựa vào việc duy trì các cơ chế khoá đối với nội dung. Một cách đơn giản quá trình kiểm soát phiên bản chỉ là một người check out nội dung từ kho chứa, tạo ra những thay đổi, rồi lại trả chúng về kho chứa. Người khác nếu muốn truy xuất nội dung đó thì là lượt riêng của anh ta. Kiểm soát phiên bản theo cách này đơn giản dễ hiểu và ta sẽ thấy chỉ như vậy là đủ cho việc cài đặt một hệ thống workflow. 2.4.1.2 version control phức tạp Giả thiết cho dạng này là bất kỳ ai cũng có thể truy cập nội dung ở một thời điểm bất kỳ miễn là tồn tại chỉ một bản sao chính của một thành phần nội dung. Hoạt động check out nội dung chỉ là trên một bản sao, và khi nội dung được check in trở lại, mọi thay đổi đã gộp vào bản copy chính. Như vậy nhiều người có thể truy cập được vào nội dung tại cùng một thờì điểm, thay đổi những nội dung cần thiết, sau đó lại check in trở lại. 2.4.1.3 Tiến trình kiểm soát phiên bản lưu trữ dữ liệu Mọi nội dung văn bản khi được đưa vào kho chứa sẽ được lưu trữ ở dạng những phần nhỏ delta. Mọi thay đổi được tạo ra giữa thời điểm nội dung được lôi ra khỏi kho chứa với các động tác kiểm tra và thời điểm nội dung được đưa trở lại kho chứa (cũng có kiểm tra). Cách lưu trữ như vậy rất hiệu quả khi xét đến vấn đề không gian lưu trữ vì không cần phải lưu trữ nhiều bản sao của cùng một nội dung ngay cả khi có nhiều phiên bản của nội dung đó. Do không phải lưu trữ một bản sao nội dung đầy đủ nên phần mềm kiểm soát phiên bản phải có khả năng xây dựng nên nội dung từ những phần thông tin nhỏ. Như vậy một cách logic, ta có thể lấy ra phiên bản bất kỳ nào ta muốn. Tất cả những gì mà phần mềm kiểm soát phiên bản cần làm là sắp xếp các thông tin theo đúng trình tự để có được phiên bản yêu cầu. Nội dung nhị phân khi được đưa vào kho chứa của các hệ CMS cũng đôi khi sử dụng cơ chế delta, nhưng do sự phức tạp của file nhị phân, nội dung nhị phân thường được lưu trữ dưới dạng file hoàn chỉnh. Như vậy tiến trình check out chỉ đơn giản là tìm được file nhị phân (hoàn chỉnh) tương ứng với version cần thiết mà không cần một phép xử lý delta nào. 2.4.1.4 Theo dõi phiên bản (Version tracking) Version tracking là bước xa hơn của version control. Có thể coi nó là quá trình công chứng các phiên bản của nội dung được đưa vào hoặc lấy ra khỏi kho chứa. Mục đích chính của version tracking là theo dõi mọi thông tin liên quan đến những thay đổi của nội dung trong suốt vòng đời của nó. Tiến trình này bao gồm việc “ghi chép” lại khi nào có sự thay đổi, ai thay đổi, thay đổi gì và có thể cả lý do tại sao lại có những thay đổi đó nữa. Version tracking cung cấp một cơ chế bảo vệ nghiêm ngặt, mà ta có thể tưởng tượng như sau: khi một user đăng nhập vào hệ thống thì ID của anh ta sẽ tự động được ghi lại. Như vậy với bất kỳ thay đổi nào với nội dung, hay sự tổn hại nào đến các thành phần nội dung được phát hiện nguồn gốc, như vậy hệ thống của ta có thể thay đổi password của người đó hoặc xoá account của người đó đi. 2.4.1.5 Cơ chế hồi phục (Rollback) Cơ chế rollback cho phép ta thay đổi version hiện tại trở về với version trước đó. Cơ chế này thường được thực hiện trên các thành phần nội dung hoặc những nội dung thông tin, còn đối với mức độ website, cơ chế này sẽ đưa website trở lại nội dung trước khi nó được update. Tiến trình rollback này thường rất an toàn vì nó lấy toàn bộ nội dung hiện tại thay thế bởi phiên bản ổn định trước đó. Khi rollback một website thường trang website sẽ tạm thời bị shutdown nên không có cơ hội cho nguời dùng gây tổn hại bất thường khi rollback nội dung. Version control có rất nhiều vai trò đối với một hệ CMS như cho phép hợp theo nhóm, tăng cường công tác quản lý website, làm tăng tốc độ phát triển nội dung… Cho phép sự cộng tác nhóm: Đây là vai trò quan trọng chủ yếu của quản lý phiên bản trong CMS là cung cấp nền tảng tốt hơn cho công tác làm việc theo nhóm. Với vô số các thành phần nội dung và các nội dung thông tin tạo nên một website, có thể thấy rằng không ai đủ khả năng để xây dựng cả một website mà công việc này yêu cầu kỹ năng của nhiều con người. Nâng cao quản lý website: Một điều đã không được đề cập đến trong quá trình nói về quản lý phiên bản và theo dõi phiên bản, đó là sự xếp hạng các báo cáo mà quản lý phiên bản cung cấp. Tăng tốc việc phát triển nội dung: Bạn không thể bắt các tác giả và biên tập viên làm nhanh hơn khả năng mà họ có, nhưng có thể làm giảm bớt thời gian mà nội dung ở trong tình trạng không tích cực, như là chờ đợi biên tập,chỉnh sửa, phê chuẩn, kiểm thử hoặc triển khai. Công việc đó được thực hiện do sinh tự động một sự kiện cho hệ thống, thông báo cho CMS thời khắc mà nội dung được đưa trở lại kho chứa.Sự kiện này có thể khởi phát việc tạo ra một thư điện tử. Nâng cao sự giao tiếp: Theo dõi phiên bản cho phép bạn tự động quá trình giao tiếp giữa tất cả các bộ phận liên đới với một phần nội dung. Sự tự động tạo và định tuyến như thư điện tử khi tổng hợp thành phần nội dung, hoặc nội dung thông tin kết hợp với tham gia tất cả các liên lạc được yêu cầu vào trong hệ thống theo dõi phiên bản khiến chuyển giao trôi chảy giữa các trạng thái trong vòng đời của nội dung. Nâng cao hiệu quả của quy trình làm việc: Mỗi giai đoạn của quy trình làm việc có thời điểm bắt đầu và kết thúc khác nhau vì chức năng khoá được cung cấp bởi hệ thống kiểm soát phiên bản. Vì chỉ có một người đang làm việc với nội dung trong mỗi thời điểm cụ thể, không có sự chồng chéo trong quá trình phát triển và do đó không có sự hồi phục để cho mọi bộ phận của một phần nội dung được đồng bộ hoá. Kho chứa được bảo vệ: Sử dụng quá trình kiểm tra vào/ra do có quản lý phiên bản, bạn có thể chắc chắn rằng nội dung được chia sẻ không bị ghi đè một cách vô tình trong môi trường làm việc nhóm là một yêu cầu của phát triển website. Cấu trúc hoá hệ thống: Môi trường phát triển nội dung được cấu trúc hoá và ổn định đối với tất cả các giai đoạn trong quy trình làm việc quản lý nội dung. Có mẫu kiểm tra nội dung ra khỏi kho chứa cố định, thực hiện thay đổi, kiểm tra nội dung vào rồi đưa nó trở lại kho chứa. Giảm thiểu các khuyết điểm: Đó là kết quả của một môi trường đựơc cấu trúc tốt do có sự hoạt động của hệ thống quản lý phiên bản dùng cho cập nhật nội dung, các lỗi vô ý do ghi đè lên nội dung, ghép nội dung, thiếu liên lạc giữa các bộ phận bảo trì nội dung sẽ được giảm thiểu,nếu như không nói là hoàn toàn bị loại trừ. CHƯƠNG II. CÔNG NGHỆ CMS - SITEFINITY Tổng quan về Telerik SiteFinity Telerik Sitefinity là một hệ quản trị nội dung dựa trên nền ASP.NET cho phép chúng ta xây dựng những Web site động và có thể chỉnh sửa theo ý muốn. Bằng việc sử dụng những mẫu (template) định trước, các điều khiển web Telerik RadControl cho ASP.NET, và các module đã được dựng sẵn để thực hiện những chức năng cơ bản như FAQs, News. Hơn thế nữa, Sitefinity cung cấp đầy đủ cho chúng ta công cụ để có thể xây dựng một Web site hấp dẫn, mạnh mẽ một cách nhanh chóng và dễ dàng. Đối với những người dùng bình thường, Sitefiny kết hợp môi trường “What you see is what you get” (giao diện soạn thạo trực quan) với một tiến trình luồng làm việc có nhiệm vụ theo dõi trang trong toàn bộ tiến trình từ việc tạo ra, sửa đổi đến xét duyệt để đưa lên Web site. Mặc dù rất nhiều web site có thể được xây dựng ngay trong giao diện người dùng của Sitefinity, nhưng Sitefinity còn bao gồm một kiến trúc module mở cung cấp cho người phát triển một tập giao diện lập trình ứng dụng đầy đủ (API). Những API này có thể thực hiện những nhiệm vụ thông thường như quản lý an ninh, thay đổi dòng làm việc, và tương tác trực tiếp với máy CMS (CMS engine). Bằng cách sử dụng API của Sitefinity trong môi trường Visual Studio, chúng ta có thể thiết kế những chức năng mà Sitefinity không cung cấp, tạo module của riêng mình và tích hợp bất cứ thành phần nào của ASP.NET mà chúng ta thích vào trong Web site. Chúng ta có thể làm 3 việc với Sitefinity, đó là chỉnh sửa giao diện của web site, mở rộng phần chức năng của Web site trong trường hợp chức năng cần có chưa được thiết kế mặc định trong Sitefinity, và cuối cùng, chúng ta có thể sử dụng các hàm API của Sitefinity để xây dựng một chức năng mới ở phần đỉnh của Sitefinity. Chỉnh sửa giao diện của Web site Một trang web cần phải xác định cấu trúc và hình thức. Cấu trúc được xác định qua Master Page và Template. Hình thức được xác định qua Theme và Skin. Theme bao gồm file CSS, file skin và các file hình ảnh tương ứng. Ví dụ: Xem hình vẽ dưới đây Hình 2. 1 – Cấu trúc trang trong Sitefinity Mở rộng Sitefinity để đáp ứng yêu cầu của Web site Khi muốn thêm một chức năng nào đó mà Sitefinity chưa cung cấp, ta có 3 cách: Thứ nhất, chúng ta có thể kết hợp một vài control có sẵn thành một control ( ví dụ có thể kết hợp control Label với control RadRotator) Thứ 2, tạo ra một Intra module. Thứ 3, tạo một Pluggable module. Việc tạo một Intra module dễ dàng hơn rất nhiều việc tạo một Pluggable module nhưng nó giới hạn chúng ta chỉ có thể sử dụng nó trong một cài đặt nhất định của Sitefinity. Lập trình với Sitefinity Khi tạo ra một chức năng mới chúng ta có thể sử dụng các hàm API mạnh mẽ và linh hoạt của Sitefinity. Điều đó có nghĩa là chúng ta có thể xây dựng chức năng ở trên đỉnh của Sitefinity mà không cần thiết phải tạo ta một cái gì đó hoàn toàn khác biệt. Các thành phần cơ bản của Telerik SiteFinity Telerik SiteFinity chứa hai thành phần cơ bản là trang (page) và các điều khiển (controls). Có bốn thành phần cấu thành một trang trong SiteFinity là trang chủ (master page), mẫu (template), nền (theme) và hình thể (skin). Đối với điều khiển chúng ta có thể sử dụng các điều khiển có sẵn hoặc xây dựng mới các điều khiển. Chúng ta sẽ tìm hiểu kỹ hơn về điều khiển trong phần mô hình lập trình. Ngoài ra, Sitefinity cung cấp cho bạn một cơ sở hạ tầng mạnh mẽ để xây dựng những hệ thống quản lý an ninh, dòng làm việc…Không chỉ có thế, bạn còn có thể sử dụng cơ sở hạ tầng này vào trong module của mình. Quản lý bảo mật dựa trên cơ chế phân quền và phân vai trò người dùng. Quản trị dựa trên cơ chế phân công trách nhiệm (role-based). Các mô-đun có thể gắn vào SiteFinity một cách động. Hiện tại phiên bản 3.1. cung cấp sẵn các mô-đun sau: Generic content, News, Blogs, Lists, Polls, Forums. Sau đây chúng ta sẽ xem xét một số khái niệm cơ bản trong SiteFinity. Các trang chủ (Master Pages) Là một thành phần của ASP.NET 2.0 cho phép bạn xác định cách trình bày chung cho nội dung chữ và đồ họa của trang web. Ví dụ, bạn có thể dùng master pages để xác định chuẩn cho headers và footers của tất cả các trang trong một web site. Nội dung của master page được lưu trong một file riêng và có thể được kế thừa bởi những trang web khác. Người sử dụng không thể thay đổi master page thông qua Sitefinity. Nếu cần thay đổi master pages, ta phải dùng Visual Studio. Các mẫu (template) Trong Sitefinity xác định cấu trúc và tổ chức của các place-holder trên một trang web. Người sử dụng có thể chọn các control để đặt vào trong các vùng chứa nội dung trong bất cứ trang nào. Vì vậy 2 trang sử dụng cùng một template có thể trông rất khác nhau. Một master page có thể được sử dụng bởi nhiều template. Một template có thể được sử dụng bởi nhiều trang web. Hình 2. 2 – Tempalate mẫu trong Sitefinity Theme và skin là 2 công cụ bổ sung giúp bạn có thể chỉnh sửa hình thức của page và control. Nền (Themes) Là một tập các thuộc tính cài đặt xác định hình thức của page và control trên web site. Bằng cách sử dụng theme ta có thể thay đổi giao diện của page mà không ảnh hưởng đến chức năng của chúng. Theme gồm có: Cascading style sheet files (.css) Skin flies (.skin) Graphics files Hình thể (Skins) Xác định hình ảnh đồ họa của những control riêng lẻ ( ví dụ như nút bấm và nhãn) mà không ảnh hưởng đến chức năng của chúng. History: Telerik Sitefinity theo dõi và lưu trữ toàn bộ quá trình sửa đổi nội dung. Khi một user thay đổi một nội dung nào đó, những thay đổi đó được lưu lại thành một phiên bản mới của nội dung ban đầu. Nội dung ban đầu được lưu lại trong CSDL và có thể phục hồi một cách dễ dàng. Bạn có thể xem bất cứ phiên bản nào của trang và phục hồi trở lại bất cứ phiên bản nào trước đó (tất cả các phiên bản sau phiên bản được phục hồi sẽ bị xóa). Mô hình lập trình Vì SiteFinity là một giải pháp trên nền .Net nên chúng ta có thể sử dụng Visual Studio 2005 để lập trình, thao tác. Với công cụ lập trình mạnh như Visual Studio và một bộ thư viện, bộ khung phong phú SiteFinity cho phép chúng ta tạo ra các ứng dụng web một cách nhanh chóng và tính năng phong phú. Lập trình với Visual Studio Chúng ta có thể mở bất cứ trang web nào của Sitefinity bằng Visual Studio 2005 bằng cách chọn File à Open à Web Site rồi chỉnh đến đường dẫn tới trang web của bạn và bấm open. Vì Sitefinity lưu các page trong CSDL nên khả năng chỉnh sửa các page bằng VS bị hạn chế. Bạn chỉ có thể sửa template, theme hay các page không được quản lý bởi VS. Sau đây sẽ trình bày cách thao tác với Visual Studio. Khi bạn tạo một project với Sitefinity, một .NET web project sẽ được tạo bao gồm Sitefinity engine và web site mà bạn quản lý với Sitefinity. Nó gồm có các thư mục như hình vẽ dưới đây: Hình 2. 3 – Cấu trúc thư mục trong Visual Studio Trong đó: Thư mục App_Browsers chứa các file với các cài đặt về form adapter có đuôi .browser. Thư mục App_Data chứa các file CSDL và file module tìm kiếm Thư mục App_Master chứa các file master page có đuôi .master Thư mục App_Themes chứa các thư mục theme với các file .css, .skin, file hình ảnh,… Thư mục bin chứa các file assembly dạng .dll và .xml Thư mục File chứa các file ngoài được nạp vào project Thư mục Images chứa các file hình ảnh ngoài Thư mục RadContrl chứa các thành phần của RadControl như script, skin Thư mục Sitefinity chứa các cài đặt cms. Thư mục App_Data: Chứa 2 thư mục - một dùng chứa thông tin CSDL và thông tin của module tìm kiếm. CSDL là nơi Sitefinitty lưu các page và control được sử dụng bởi trang web nó quản lý. Mặc định nó là CSDL SQL Server 2005 và được đặt tên là Sitefinity.mdf. CSDL có thể được quản lý bởi Server Explorer. Ngoài ra, có một file text sitefinity.log ghi lại các thông tin lỗi của chương trình. Một thư mục khác trong App_Data là Search. Nó lưu dữ liệu về mỗi danh mục tìm kiếm được đăng ký bởi admin thành một thư mục con. Thư mục App_Master: Chứa master page có thể được sử dụng bởi các page trong web site. Mỗi Master page trong thư mục có thể liên quan đến một hoặc nhiều sự lựa chọn template để tạo một page. Bạn có thể tạo hay chỉnh sửa một master page theo ý muốn bằng Visual Studio. Thư mục App_Themes: Chứa các theme có thể được sử dụng trong các page. Mỗi theme trong thư mục tương ứng với một lựa chọn khi bạn tạo một page mới. Bạn cũng có thể chỉnh sửa hay thêm theme mới bằng Visual Studio 2005. Thư mục bin: Chứa tất cả các file Assembly cần để tham chiếu bởi các file trong web site. Nếu có những file Assembly ở các ngôn ngữ không phải tiếng Anh thì chúng cũng được lưu trong thư mục bin. Thư mục Sitefinity: Thư mục Sitefinity có thể chia thành 2 phần chính: Thư mục Admin và các thư mục còn lại. Thư mục Admin chứa tất cả những thông tin cần thiết để cài đặt phần admin trong Sitefinity. Phần còn lại của thư mục dùng để thiết lập các cài đặt để hiển thị phần public trong web site. Thư mục Admin: Chứa các web page tạo thành giao diện người quản trị. Nó gồm có các thư mục con sau: App_LocalResources chứa những tài nguyên được sử dụng bởi trang web trong giao diện người quản trị. CmsAdmin chứa các page quản lý người dùng, vai trò, và phân quyền. ControlTemplates chứa các templates cho control được sử dụng bởi trang web trong giao diện người quản trị. Scrips được sử dụng trong chế độ debug. Khi không ở trong chế độ đó, file .dll chứa các tài nguyên và không thể chỉnh sửa được. Theme chứa những file hình ảnh và skin sử dụng bởi trang web trong giao diện người quản trị. Khi thao tác với các dự án SiteFinity để phát triển các dịch vụ web chúng ta thao tác với các tệp và các thư mục đã giới thiệu ở trên. Tùy thuộc vào trường hợp cụ thể, ứng dụng cụ thể mà chúng ta phát triển có các phương pháp, cách tiếp cận, thao tác khác nhau. Với bất kỳ ứng dụng nào, CSDL đều đóng vai trò rất quan trọng. Phần sau chúng ta sẽ trình bày cách thao tác với CSDL và vai trò của nó trong ứng dụng SiteFinity. Truy xuất cơ sở dữ liệu Sitefinity sử dụng một phên bản nhúng của Nolics.net2005 engine cho tất cả các kết nối dữ liệu. Nolics.net cung cấp một lớp ánh xạ quan hệ - đối tượng cho phép bạn làm việc trực tiếp với đối tượng ngay trong code, trong khi đó chương trình tự động tạo ra những câu lệnh SQL cần thiết để cập nhật CSDL. Mặc định Sitefinity sử dụng CSDL SQL Server để lưu giữ nhiều loại thông tin, tuy nhiên chúng ta có thể cấu hình để triển khai CSDL trên các hệ quản trị cơ sở dữ liệu khác; cơ sở dữ liệu lưu trữ gồm có: Page trong web site. Page tạm thời. Người dùng, vai trò và phân quyền. Dữ liệu chứa trong pluggable module. Thông tin dòng làm việc. Kết nối dữ liệu trong Sitefinity sử dụng Nolics.net 2005: Nolics.net 2005 sẽ tự động tạo ra mã nguồn và các lớp để thực hiện chức năng tương tác với CSDL, tạo các thể hiện của đối tượng dữ liệu và các phép toán dữ liệu như thêm, cập nhật… Nolics.net 2005 là một ngôn ngữ đặc trưng được tích hợp vào trong Visual Studio 2005 và cung cấp chức năng định nghĩa và duy trì đối tượng trong kho dữ liệu. Hai thành phần chính của Nolics.net là định nghĩa một đối tượng đã tồn tại và các hành động của nó. Tất cả định nghĩa logic cấu trúc dữ liệu và hành động của đối tượng trong một module được chứa trong những lớp định nghĩa dữ liệu. File .dbclass (ví dụ Job.dbclass) chứa định nghĩa đối tượng, file .Designer.cs (ví dụ Job.Designer.cs) chứa phần code được tạo ra bởi Nolics dựa trên file .dbclass, và partial class đi kèm (Job.cs) chứa các hành động. Các đối tượng của CSDL, ví dụ table, stored procedure… , được tạo ra bởi Nolics.net từ file định nghĩa cấu trúc dữ liệu .dbclass nên ta không cần phải tạo hay sửa đổi các đối tượng này một cách trực tiếp. Cách tạo mới một lớp CSDL: Bước đầu tiên là định nghĩa một cấu trúc dữ liệu sử dụng Nolics.net Bấm chuột phải vào thư mục sẽ chứa lớp định nghĩa dữ liệu (.dbclass) Chọn Add New Item Từ trong danh sách hiện ra, chọn Nolics.net Database Class Hình 2. 4 – Định nghĩa cấu trúc dữ liệu sử dụng Nolics.Net Điền tên của lớp mới rồi bấm add. Một file định nghĩa .dbclass sẽ được tạo ra. Chú ý: không thay đổi nội dung của file .Designer.cs. Điều đó sẽ được chương trình làm một cách tự động. Bước tiếp theo là định nghĩa một đối tượng lưu trữ: Định nghĩa sự tồn tại của một đối tượng dữ liệu được xác định trong các lớp sử dụng ngôn ngữ Nolics.net là sự kết hợp giữa định nghĩa các thuộc tính của một đối tượng và định nghĩa các cột trong CSDL. Ví dụ sau đây là định nghĩa của đối tượng Job trong file mẫu Job.dbclass: /// ///Definition of the Job object data. /// dbclass Job [TableName="sf_Jobs_Job"] {    primary key guid ID[AutoGenGUID=True];    string JobName[Length=100];    string Description;    bool Active;    modified date DatePosted; } Cấu trúc dữ liệu tương tự như định nghĩa một cấu trúc bảng mà ở đó mỗi thành phần dữ liệu được gắn với một cái tên và kiểu dữ liệu. Hơn nữa, mối quan hệ giữa các đối tượng có thể được xác định giống quan hệ khóa chính – khóa ngoài giữa các bảng trong CSDL. Ví dụ, trong module mẫu Jobs, đối tượng Job Type quan hệ với đối tượng Job qua một liên kết. Điều này được ứng dụng trong việc tạo bảng trong CSDL và sinh code trong file .Designer.cs Chú ý: không được thay đổi các đối tượng của CSDL. CSDL sẽ được tự động cập nhật khi ta thay đổi các đối tượng dữ liệu. Định nghĩa các truy vấn Để bổ sung cho việc xác định cấu trúc dữ liệu, các truy vấn có thể được định nghĩa cho việc kết nối dữ liệu. Sau đây là một ví dụ về sử dụng truy vấn tĩnh để tìm ra các active jobs: /// /// Get a collection of all active jobs sort by date posted. /// query GetActiveJobs for Job [ProcedureName = "sf_Job_GetActiveJobs",OrderBy="DatePosted DESC"] {  string Title ?like Title; } Đây là một truy vấn tĩnh, truy vấn mà giá trị và kiểu của tham số không bị thay đổi khi thực hiện. Truy vấn động cho phép điều ngược lại. Điều này được ứng dụng để tạo các store procedure trong CSDL và code trong file .Designer.cs Có một chú ý quan trọng là một truy vấn trả lại một tập các đối tượng, trong ví dụ này là một tập các đối tượng Job. Định nghĩa các hành động cho đối tượng Hành động được định nghĩa cho đối tượng bằng cách cài đặt các phương thức dựa trên các giao diện chuẩn xử lý sự kiện liên quan đến sự tồn tại của đối tượng. Bảng sau đây liệt kê các sự kiện chuẩn và các giao diện tương ứng với chúng. Event Interface Description Create IOdbEventCreate Gọi khi thêm vào một đối tượng. Delete IOdbEventDelete Gọi khi xóa một đối tượng. Verify (Validation) IOdbEventVerify Gọi trước khi save một đối tượng. Persist IOdbEventPersist Gọi khi load hoặc save một đối tượng. Bảng 2. 1 – Các sự kiện trong Nolics Để cài đặt một hay nhiều những hành động này, một partial class được tạo ra dựa trên một hay nhiều giao diện tương ứng. Ví dụ sau đây từ file Job.cs chứa một cài đặt của giao diện Create được gọi khi đối tượng được tạo ra. Đây cũng là một cách để đặt giá trị mặc định cho các thuộc tính và các hoạt động khác. partial class Job: IOdbEventCreate {  public void CreateObject(OdbDataProvider provider)  {    //Logic while creating the object  } } Tất cả các giao diện là tùy chọn, vì vậy hãy cài đặt chúng khi bạn cần một chức năng nào đó trong một sự kiện, ví dụ như tạo một đối tượng. Cài đặt Business Logic liên quan Để bổ sung cho việc định nghĩa các hành động, partial class có thể chứa bất kỳ business logic ( phương thức, thuộc tính…) được yêu cầu bởi kiến trúc của ứng dụng. Ví dụ khi bạn cần một vài xác nhận phức tạp khi lưu dữ liệu trong một đối tượng, bạn có thể tạo ra một vài phương thức private trong partial class và sau đó gọi chúng bằng sự kiện xác nhận. Sử dụng đối tượng dữ liệu trong code Khi các đối tượng dữ liệu được định nghĩa, các thể hiện có thể được tạo ra cũng như các đối tượng khác. Ví dụ sau đây chỉ ra cách tạo một thể hiện của lớp Job: Job job = new Job(); Khi một thể hiện được tạo ra, nó có thể được sử dụng trong liên kết với các lớp và phương thức để thực hiện các hàm dữ liệu chuẩn như chọn, thêm, sửa, và xóa. Chú ý: các hàm dữ liệu được quản lý một cách trong suốt bởi Nolics.net. Bạn chỉ có thể tác động lên các đối tượng thông qua các lớp và phương thức. Sử dụng OdbClass để thực hiện các hàm dữ liệu Odbclass là một lớp tĩnh của Nolics.net 2005 được sử dụng để thực hiện các hàm cơ bản như gắn các đối tượng với các giao dịch và nạp dữ liệu. Ví dụ sau đây biểu diễn cách tạo một thể hiện một đối tượng Job sử dụng Odbclass. Tất cả các phương thức của Nolics.net sử dụng một giao dịch. /// /// Creates new job. /// /// A reference to a transaction to be used for the operation. /// Reference of the newly created job object. /// /// Note that the actual creation occurs when the transaction assoicated /// with the job is committed. /// public override Job CreateJob(Transaction transaction) {  //There must be a transaction to complete the operation.  if (transaction == null)  {    throw new ArgumentNullException("Transaction is null for creating a job.");  }  //Create (insert) the new job object.  Job job = new Job();  OdbClass.Create(job, transaction);  return job; } Giao dịch trong Nolics.net 2005 Nolics.net 2005 yêu cầu mỗi đối tượng phải được liên kết với một giao dịch mức đối tượng trước khi nó có thể được thêm, sửa, hay xóa. Vì vậy, sau khi tạo một thể hiện cho một lớp, đối tượng phải được liên kết với một giao dịch sử dụng phương thức tĩnh OdbClass.Create() Transaction transaction = new Transaction(); Job job = new Job(); OdbClass.Create(job, transaction); Trước khi đối tượng được liên kết với một giao dịch thì nó phải có một khóa chính. Khóa chính này có thể được tạo ra một cách tự động khi định nghĩa đối tượng hoặc được người dùng gắn vào thể hiện của đối tượng trước khi liên kết nó với một giao dịch. Một dữ liệu đã có có thể được nạp vào một thể hiện của một đối tượng và tham gia vào một giao dịch. Job job = new Job(); job.ID = id; OdbClass.LoadByPrimaryKey(job); //Add the job to a Nolics.net transaction (required). transaction.Join(job); Nâng cấp CSDL trong quá trình phát triển Các đối tượng CSDL trong một module được tạo ra một cách tự động trong CSDL khi module được nạp bởi Sitefinity. Tuy nhiên, sẽ có thể có ích nếu ta tự gọi một CSDL rồi nâng cấp nó để tạo ra các đối tượng trong quá trình phát triển. Các bước như sau (xem hình vẽ dưới đây): Bấm chuột phải vào module trong Solution Explorer Chọn Upgrade Database(s) Chọn file .config sử dụng để nâng cấp Chọn Check để bỏ qua các bược nâng cấp hoặc chọn Upgrade để thực hiện toàn bộ quá trình nâng cấp. Hình 2. 5 – Nâng cấp CSDL Tạo một file cấu hình để nâng cấp CSDL Để nâng cấp một CSDL cần phải có một file app.config nằm trong data access project. Để tạo một file app.config và cài đặt xâu liên kết Nolics.net, ta làm như sau: Bấm chuột phải lên file Data Access Class Library project trong Solution Explorer và chọn Add New Item. Chọn Application Configuration File và bấm Add Từ Tools menu chọn Edit Connections Chọn file app.config từ danh sách các file cấu hình trong solution Xác định xâu liên kết sử dụng Connection Editor Sau khi hoàn tất CSDL, cấu hình cấu hình được lưu trữ trong thư mục App_Data của dự án SiteFinity. Lập trình với Trang chủ và các mẫu (templates). Trang chủ và mẫu là hai thành phần cơ bản, nó giống như là các trang trong ASP.net 2005. Việc lập trình và phát triển hoàn toàn giống với lập trình và phát triển trang trong ASP.net. Chúng là nơi lưu dữ thể hiện các điều khiển, các thành phần khác của trang web. Trong SiteFinity chúng ta có thể tạo ra chúng bằng cách kích chuột phải vào SiteFinity Project à Create A Master Page / Template. Ngoài ra chúng ta có thể tùy biến các trang chủ đã có bằng cách kế thừa và phát triển thêm các tính năng cho chúng. Lập trình với bộ duyệt site Bộ duyệt site cho phép người dùng, người quản trị nhánh chóng định vị các site một cách dễ dàng và đơn giản. Navigation controls trong sitefinity 3.1 là có: Dynamic Hyper Link Site Menu Site Panelbar Site Tabstrip Site Treeview Breadcrumb Hyper Link Language Selector Navigation controls là một seri của người điều khiển gồm 4 loại : RadPanelBar RadTabStrip RadMenu RadTreeview Nếu bạn muốn thực hành một vài thứ mà không thể thấy, bạn cần truy cập vào code, chỗ: /Sitefinity/UserControls. Code này được viết trên môi trường C# và VB nhưng hộp công cụ chỉ chứa C# controls. Nếu bạn rành về VB, bạn có manually edit the web.config để thay thế C# controls. Ngầm định, RadPanelBar resets trạng thái của nó khi người sử dụng quản lý một trang khác. Việc này thường không thích hợp cho một số trường hợp, như người sử dụng muốn mẩu tin đã được mở ra. RadPanelBar là một thuộc tính đã gọi PersistStateInCookie. Nếu bạn để thuộc tính True thì RadPanelBar sẽ nhớ tình trạng sau khi nó điều khiển. Hình 2. 6 - Định nghĩa thuộc tính điều khiển PadpanelBar Tính chất này không đưa ra SitePanelbar. Nhưng nó chính là thuộc RadPanelbar. Để thay đổi đặc tính này, chỉnh sửa SitePanelBar, ở trong mục Misc, tìm PanelBar, click vào edit để chỉnh sửa properties of original RadPanelBar. Ở đây, bạn có thể tìm thấy đặc tính PersistStateInCookie Hình 2. 7 - Sửa đổi điều khiển PadpanelBar Setting the Group Page Display: sắp đặt, trình bày những trang trong site. Sitefinity có 2 loại trang, trang nhóm và loại thường . Group pages không có nội dung gì, và chỉ đáp ứng cho một mục đích- đó là để một địa chỉ mới trang con đầu tiên của nó. SitePanelbar có thể chạy hai cách khi bạn có nhóm trang trong hệ thống của bạn. Cách này hay cách khác, để địa chỉ mới trang con đầu tiên, hay chỉ phát triển trang con trong nhóm trang. Behavior là được điều khiển bởi thuộc tính HideUrlForGroupPages, nó là false do ngầm định. Khi đặt true, thì bạn nhấp chuột sẽ đưa bạn tới trang con.( cả đoạn trên có nghĩa là: trong site có 2 loại trang, một loại trang chứa tiêu đề hay chính là đường link đến các trang khác, gọi là “trang nhóm-group”. loại thứ 2 là loại trang không chứa đường link nào cả, gọi là trang con. Các thuộc tính trên có được là nhờ vào HideUrIForGroupPages trong behavior. False là do ngầm định, true là khi bạn nhấp chuột, nó sẽ đưa bạn tới trang con). Một hữu ích chủ yếu của navigation control là có thể chỉ ra trang hiện thời đang chọn. Một cách thông thường để sử dụng SiteMapPath control. Tuy nhiên, ở thứ tự cao của tìm kiếm mục trên menu thì cái styte cũng nên đổi. siteTabstrip và sitetmenu điều khiển cung cấp hàm của lớp CSS cho việc chọn lựa mục. Làm việc với các điều khiển SiteFinity là sản phẩm của Telerik. Nó được tích hợp sẵn với bộ thư viện điều khiển RadControls. Với các điều khiển chính sau, chúng ta có thể sử dụng chúng để phát triển SiteFinity: RadAjax: là bộ khung cho phép code ít hơn nó cho phép các ứng dụng của ASP.NET RadCalendar: nói về lịch. Nó gồm 2 loại tương ứng cho client và sever. Nó có nhiều tính năng hiển thị những ngày tháng kề sát, hiển thị nhiều tháng và ngữ cảnh menu. RadChart: là bộ phận biểu đồ hướng đến doanh nghiệp,cái chính là phát triển sản phẩm và dễ dàng sử dụng. Nó có thể tạo ra các kiểu biểu đồ thông thường. Nó cho phép bạn hiển thị dữ liệu trông rất thân thiện. RadComboBox: danh sách các điều khiển các danh sách từ trên bổ xuống. Nó nằm trong AJAX dựa trên tải những cái gì mà máy cần cho sự thực thi cao hơn. Sản phẩm gồm một số tính năng cao cấp như nhiều chỉ mục tự động hoàn thành, nhiều cột lưới và hearder, các chữ quảng cáo. RadDock: một bộ phận linh hoạt dùng cho trang cá nhân. Nó miêu tả vùng chứa nội dung. Cái mà có thể dịch chuyển, cắt ngắn, đưa lại kích thước yêu cầu. Những layout tuỳ chỉnh trang có thể được lưu trong 1 file hoặc cơ sở dữ liệu và nạp lại. RadEditor: đây là trình soạn thảo thấy gì được nấy. Nó có thể thay thế một textbox với một từ trực giác trong trình soạn thảo. Nó cho phép những người sử dụng không biết công nghệ quản lí bề ngoài nội dung HTML. RadGrid: Nó thiết kế làm cho deskop giống như người sử dụng đã có kinh nghiệm với một bước chân nhỏ nhất. Thêm vào đó bên trong AJAX hỗ trợ hầu hết sự thực thi thời gian thực. RadInput: một bộ phận tuỳ chỉnh cao điều khiển dữ liệu vào trong ứng dụng ASP.NET. Nó bao gồm hai điều khiển đó là Masked TextBox and Date Input. Nó làm cho những tính năng dòng đầu tiên có thể được lựa chọn. Nó hỗ trợ bàn phím copy&paste. RadMenu: nó có hầu hết các điều khiển điều hướng cao cấp cho ASP.NET. Nó cho phép bạn xây dựng nhanh. Nó siêu hiệu quả trong công nghệ rending.(rending biến hình vẽ phác thành hình không gian ba chiều). RadPanelBar: là một bộ phận linh hoạt cho phép xây dựng menu có thể gập lại được. Nó phát triển nhằm sự điều hướng bên trái/ phải được dễ dàng. Nó không thể có được nhờ thiết kế menu thông thường. RadRotator: một bộ phận vạn năng cho sự luân phiên nội dung DHTML. Những thanh cuộn tin tức, sự rọi sáng vào tiêu điểm sản phẩm, dự báo thời tiết, giấy chứng thực đang chạy tăng cấp và quảng cáo banner. RadSplitter: đây là điều khiển cho phép bạn xây dựng deskop giống như giao diện ứng dụng có các thanh trượt giống như trong visual studio.NET. mỗi layout có thể gồm không giới hạn các bộ lồng nhau với sự tách ra. Trạng thái tự động tiếp tục trên sever nó có thể được lưu hoặc tải xuyên suốt sự mở rộng API. RadSpell: Cho phép người phát triển thêm kiểm tra chính tả nhiều thứ tiếng. Sản phẩm gồm các tuỳ chỉnh hoàn thành có thể đính kèm bất kì server/client cho phép chỉnh sửa phần tử. Nó có thể sử dụng các công cụ, từ điển của MS word. RadTabStrip: một bộ phận mềm dẻo dùng để xây dựng giao diện tab trong ứng dụng ASP.NET. RadToolBar: là bộ phận mềm dẻo thực thi công cụ và button strips. Nó cần cho các ứng dụng Web. Khi nó kết hợp với telerik RadDock nó bắt chước tính linh hoạt những công cụ của deskop. RadTreeView: cho phép hiển thị theo dạng cây. Nó kết hợp những ảnh hưởng rendering nó hỗ trợ sự thực thi cao hơn.Nó hỗ trợ kéo thả. RadUpload: Một bộ phận chuyên dụng để upload file RadWindow: một bộ phận có thể thay thế trình duyệt chuẩn cuộc hội thoại. alert/prompt/confirm. Người phát triển có thể xây dựng các phương thức hội thoại và cửa sổ, riêng lẻ hoặc từng nhóm. Nó bắt chước Windows TaskBar. Ngoài ra chúng ta có thể phát triển các điều khiển cho riêng các dự án của mình. Sau đó tích hợp vào ứng dụng SiteFinity một cách tùy biến. Làm việc với các mô-đun 2.3.6.1. Sử dụng module sẵn có : Sitefinity cung cấp sẵn những module và bạn có thể kết hợp chúng một cách dễ dàng ở trong website và mở rộng khả năng của chúng bằng cách sử dụng môi trường visual studio. Những module đó bao gồm: Generic Content News Polls Lists Blogs Forums Phát triển một module được cung cấp sẵn trong Sitefinity thì sẽ hữu ích và đỡ tốn thời gian hơn là xây dựng lại một module từ đầu. Những chức năng của module thì thiên về mở rộng nhưng nó cũng cần có những yêu cầu chính xác. Phần này sẽ cung cấp những hướng dẫn về những mở rộng mẫu cho những module của sitefinity. Lấy ví dụ, nhập vào nội dung là chức năng chính của Generic Content module. Tiếp tục, thêm một tùy chọn như là lựa chọn xem nội dung nào có thể được nhìn thấy với ai và khi nào nó được nhìn thấy. Điều này sẽ có ích khi mà ta cài đặt sự khác nhau của nội dung trang web cho user đã đăng ký và chưa đăng ký. Ở trong sitefinity 3.1, bạn có thể tạo một user control mà bao trùm GenericContent control đã có, và bổ sung những gì của bạn vào. The User Control nên bổ sung giao diện IcontentContainer và thuộc tính Content nên có thuộc tính WebEditor thích hợp. Generic Content modules được thiết kế để quản lý những đoạn code HTML ở khắp nơi trong trang web. Có thể sử dụng modules này bằng 2 cách: Kéo 1 Generic Content control từ Sitefinity Toolbox vào 1 page và sửa content một cách trực tiếp ở trên trang đó. Hình 2. 8 - Điều khiển nội dung (Generic Content) Với News Module, chúng ta có thể đưa những tin tức mới vào website. Bạn sử dụng News module để đưa tin tức vào website và đặt một Newlist control vào 1 trang để hiển thị những nội dung. Hình 2. 9 - Điều khiển Modul Sitefinity cung cấp module blog giúp chúng ta quản lý blog ở trong website.Nó bao gồm một dãy các đặc trưng như tag cloud, RSS feeds, và có hỗ trợ cả comments. Hình 2. 10 - Blog Module Với list chúng ta có thể tạo và đưa ra những danh sách ở trong website. List module được sử dụng khi chúng ta đưa ra một danh sách thông tin của một chủ đề nào đó. Hình 2. 11 - List Module Với list chúng ta có thể tạo và đưa ra một cuộc điều tra online ở trong website. Sử dụng Poll module để vẽ một biểu đồ cuộc điều tra và thêm vào bất cứ trang nào ta muốn thông qua Poll box control. Hình 2. 12 - Điều khiển Poll box Khi tạo một forum với người cung cấp khác với người cung cấp mặc định ở trong Sitefinity, thì người cung cấp mới nên thừa kế lớp ForumProvider.cs. 2.3.6.1. Xây dựng module tích hợp vào Sitefinity: CMS có thể được mở rộng bằng cách add thêm những module tự viết sử dụng ngôn ngữ .net hoặc VB, C#. Khi phát triển Sitefinity, có 2 cách chủ yếu Intra-Site Modules (có thể cài đặt trên tất cả những phiên bản Sitefinity). Pluggable Modules (chỉ có thể cài đặt trên sitefinity mà có hỗ trợ version của module architecture v.v. hoặc là một số các software 32bit, 64bit. Xét ví dụ xây dựng một pluggable module trong sitefinity : Gồm có những phần như sau: Hình 2. 13 - Thành phần pluggable module Những phần cần đặc biệt chú trọng: Folder Student Psoft.Student.Data Psoft.Student Xây dựng bám sát trên mối quan hệ chặt chẽ giữa module con tương ứng như ở biểu đồ dưới: Hình 2. 14 - Mối quan hệ giữa các module Psoft.Student.Data Là một project khai báo bước đầu cơ sở dữ liệu. Các thuộc tính đối tượng cần quản lý ở đây là Student. Trong ví dụ này đối tượng Student gồm có các thuộc tính sau: ID Age EntryDate Name Trong project này còn có một file là DefautProvider.cs Đây là nơi khai báo các query, các hàm làm việc với student. Bao gồm những hàm sau: public override IList GetStudentAll() public override IStudent GetStudentOne(int Id) public override IStudent CreateStudent() public override void SaveStudent(IStudent student) public override void DeleteStudent(int Id) public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config) Tiếp đến đó là một file Student.cs khai báo ở đây chỉ là cách thức làm việc với lớp Student. Psoft.Student Trung tâm của module nằm ở Project này. File Istudent.cs Khai báo phương thức làm việc với đối tượng student File StudentProvider.cs dưới sự quản lý của file StudentManager.cs nó là cầu nối liên kết giữa Psoft.Student và Psoft.Student.Data Trong ví dụ này. Có tất cả 3 file ascx trong folder student. Tương ứng là 3 giao diện. Thì tại studentprovider cũng cần phải khai báo sử dụng tới 3 file trên. (trong region Fields và Initialization) Khai báo lại những hàm đã có trong DefautProvider (trong region Methods) Trong region Properties là cách thức lấy và trả dữ liệu về đối với từng Template. File StudentManager.cs là file có quyền điều khiển StudentProvider.cs Ở đây có tất cả 4 regions: Fields,Constructor,Methods,Properties. Đối với từng regions sẽ chịu trách nhiệm quản lý các regions ở file StudentProvider. -Trong region Methods: Khai báo các chức năng của chương trình và trả về provider của từng chức năng đó. -Trong region Constructor khai báo đối với StudentManager -Trong region Properties: ??? copy and paste File StudentModule: Khai báo thừa kế cấu trúc của WebModule, và trả về giá trị của student.(copy and paste) Folder Webcontrol: bao gồm 3 folder con: Admin, Container, Template Folder Template. Bao gồm 3 file tương ứng với 3 file trong folder giao diện Student. Thông thường 3 file này có thể lấy từ các ví dụ, copy and paste Folder Container: Xây dựng các nút, các sự kiện trên giao diện, gọi đến các control sử lý các nút và sự kiện đó.Bao gồm 3 file : -ComandPanelContainer.cs:trong ví dụ này ko xây dựng ComandPanel. -StudentEditContainer.cs Xây dựng các nút, sự kiện. Bên cạnh đó gọi đến các control sử lí các nút trong giao diện EditStudent -SutdentListContainer.cs chức năng tương tự như StudentEditContainer. Folder Admin: Gồm có 2 file: -CommandPanel.cs: trong ví dụ ko xây dựng chức năng tại file này -ControlPanel.cs: có tất cả 5 regions Fields: khai báo một kiểu hiển thị, biến trỏ selectStudent, và các Template, Container làm việc đến. Constructor: khai báo xây dựng controlpanel Methods: định nghĩa cách bliddata, tạo các khung nhìn view khác nhau. Properties:các chế độ hiển thị, template edit student, hiển thị danh sách student dưới dạng list view Events: xây dựng các chức năng các nút, sau khi ấn nút thì các form giao diện được gọi thế nào, trỏ đến đối tượng nào. Chú ý: Ở đây kiến trúc của hệ thống module Psoft.Students là cấu trúc 3 lớp: gồm có lớp: giao diện, chức năng, cơ sở dữ liệu. Mọi thiết kế dựa trên mối quan hệ chặt chẽ giữa 3 lớp này với nhau. Vấn đề bảo mật trong SiteFinity Người sử dụng và vai trò của nhà cung cấp là luôn hỗ trợ công cụ cho nhau. Bạn có thể dễ dàng thông qua đó quản lý được thông tin người sử dụng cho trang web của mình. Người sử dụng cho phép gán vai trò và cho phép chúng thực hiện những nhiệm vụ khác nhau, như là người quản trị. Người sử dụng có thẻ có nhiều hơn một vai trò. Người sử dụng sitefinity được gán một hay nhiều nhiệm vụ. người quản trị thiết lập sự cho phép cho một trang web đã định sẵn bởi một nhóm vai trò chính thức của ngừơi sử dụng. Vai trò này trên cơ bản đã được thiết lập của những mối quan hệ nội dung trang web, như là trình soạn thảo, người phê chuẩn, hay nhà xuất bản. Những vai trò khác có thể cùng thuộc vai trò đó, như là những mối quan hệ chung. Vài những cái chung không cho phép gán trên sự cho phép cơ bản của người sử dụng. Một người sử dụng được chỉ định sẵn vai trò của mình. Chỉ có người quản trị mới có thể quản lý vai trò. Vai trò của người quản trị là tự động tạo ra với mỗi project Sitefinity mới, và theo mặc định, một người quản trị đựơc gán vai trò với sự cho phép chung. Vai trò này không thể xóa, cũng không thể cho người sử dụng sau nó. Vai trò Everyone là một vai trò mới trong Sitefinity 3.1. Nó đã được đảm bảo thuộc về ngừời sử dụng. điều này là không thể thay đổi được. Vai trò này có ý nghĩa quan trọng bởi nó thiết lập sự khác nhau giữa tên đăng nhập ngừời dùng với không vai trò đặc biệt riêng nào và người sử dụng chưa đăng kí tên. Để tìm hiểu thêm là tại sao vai trò này lại quan trọng cho người sử dụng chung thì vào Public Users. Adding Public Users Hiện nay rất dễ dàng để đưa ra một login controls để thực hiện những chức năng tạo lập những users mới(CreateUser control), logging in (Login, LoginStatus),và rất nhiều nữa. Nó có thể truy cập vào hộp công cụ khi ở trong trang đang chỉnh sửa ở bộ phận CMS của Sitefnity. Permissions Có 2 loại của permissions, ta có thể giả dụ về public users: trang và forum permissions Page Permissions Một đoạn tìm(được bảo vệ) là sự thiết lập giữa những trang avaiable cho cho phép, ủy quyền những ngừơi sử dụng. Ở cái thứ tự đựơc tạo ra này như là một đọan trong website. Có những trang nên có những thuộc tính Anonymous access để thiết lập đến cái không thể . Cho phép Public users view đến các trang, một vai trò mới có thể đựơc tạo ra với giả dụ cho phép “view” tới các trang. Vai trò mới “Everyone” có thể sử dụng cho trang permissions. Tất cả những đăng ký của người sử dụng có thể cho phép view một trang, và tất cả những cái không được phép truy cập tới nó. Sau đó vai trò “Everyone” nên granted view permissions. Những cái này có thể đựoc làm bởi người quản trị. Forum Permissions: Sự ngăn cách, tách rời những hành động cho phép không rõ tác giả và không xác thực của ngừời sử dụng, kì hạn  Public users là có điều kiện. Điều này có thể sử dụng khi đồng ý cho phép cho Forums module, even nếu Deny anonymous authors thiết lập “yes”, người sử dụng có thể vẫn tạo threads và posts. Không giống nó, không rõ một người sử dụng nào, có thể không từ lúc đó, bởi mặc định, nó thuộc về những nhóm “anonymous authors”. CMS Access: Nếu một public user cố gắng truy cập vào cms administration, xem 403 exception. Khi có một role, với CMS Access cho phép thiết lập đến deny và một role với CMS Access cho phép thiết lập đến allow, nếu một ngừơi sử dụng thuộc về cả hai vai trò, deny sẽ được ứng dụng. Trong từng hoàn cảnh, 403 exception sẽ thrown lại lần nữa. Điều đó sẽ không chỉ xảy ra trong một trường hợp của vai trò set to unrestricted. Permissions là quyền lợi đựơc định nghĩa là dạng hoạt động của người sử dụng trang cho phép thực hiện. Permissions là đựơc thiêt lập bởi vai trò, ví dụ là tất cả những nội dung được soan thảo sẽ giống như là trang permissions. Nếu người sử dụng sitefinity không có một permissions. Họ có thể chỉ điều hứơng thông suốt cả website, có nhiều dạng của permissions. Administrative Permissions: Quyền lợi để quản lý người sử dụng và vai trò và cho phép trợ cấp tới chúng. Chỉ những ngừơi sử dụng có vai trò quản trị cho phép quản trị. Người có vai trò quản trị tự động tạo lập với mỗi Sitefinity project mới và đựơc mặc định là có một người quản trị trong vai trò là global permissions. Cái vai trò này không thể xóa, cũng như không thể dành cho người dùng sau nó. Global Permissions: Quyền lợi để truy cập công cụ đặc biệt ảnh hưởng đến nội dung của website. Global permissions thiết lập bởi role. Một cái global permission mới là “CMSAccess” là phiên bản 3.1 của sitefinity. Nó làm cho người sử dụng có thể là với tư cách hội viên riêng lẻ, cung cấp cho cả hai public và administration của người sử dụng. Nếu permission không được thiết lập ở trạng thái đúng cho một vai trò đặc biệt. Người sử dụng nào thuộc về vai trò này không truy cập hết đến các administration section của Sifinity. Tuy nhiên, người sử dụng có thể đã được định sẵn quyền lợi truy cập đặc biệt tới pre-specified pages. (ví dụ quyền lợi view) Modules Permissions: Cho phép quản trị site điều khiển sự quản lý của controls thứ ba hỗ trợ chức năng. Page Permissions: Permissions đã được định sẵn đến một trang quản lý điều khiển của trang nội dung và trang điều khiển thông tin. Live Pages Permissions: Permissions mà ứng dụng cho người sử dụng có một vai trò public user. Những permissions được thiết lập nếu có một trang mà đựợc truy cập bởi thành viên của một vai trò public user hay là nếu một trang được khóa chặt thì nó sẽ bao gồm navigation controls, ví dụ RadTreeView và RadMenu controls. Permission được lưu trữ trong cơ sở dữ liệu, bảng tên là sf_SecPermission. Theo một cách khác, từ phía lưu trữ dữ liệu trong XML file và sử dụng Sitefinity Security module để lưu trữ permission. Chỉ có một nhu cầu là các items với những sự cho phép có một ID của type Guid. Những tùy chọn khác là viết dữ liệu Sitefinity lưu trữ dữ liệu permission trong kho dữ liệu XML của database và vẫn sử dụng nó trong cả API của sitefinity và giao diện. Kết luận Với SiteFinity chúng ta có thể phát triển các website, các ứng dụng web một cách dễ dàng và đơn giản, giúp giảm thời gian chi phí. Ngoài ra với thiết kế mở chúng ta có thể chỉnh sửa, mở rộng cho nhiều mục đích khác nhau. Chương sau sẽ trình bày nhu cầu, ý tưởng và phân tích thiết kế một ứng dụng trên SiteFinity trong thực tế nhằm minh chứng cho sức mạnh của SiteFinity. CHƯƠNG III: KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN Nội dung sẽ trình bày của chương này bao gồm: Giới thiệu về bài toán Khảo sát và phân tích bài toán Thiết kế ứng dụng web của công ty chứng khoán 1 Giới thiệu về bài toán cần xây dựng Với sự phát triễn ngày càng nhanh của kinh tế thị trường, thị trường chứng khoán đã có những bước tiến mạnh mẽ trong những năm trở lại đây. Vì vậy xây dựng hệ thống website để cập nhật, xử lý thông tin, mua bán trao đổi chứng khoán đang là một vấn đề cần thiết hiện nay. Vì vậy bài toán được đặt ra đó là: Xây dựng hệ thống Website quản trị nội dung, cung cấp các dịch vụ thông tin về báo giá chứng khoán, các dịch vụ nhận lệnh đặt và dịch vụ thông báo kết quả khớp lệnh cho các công ty chứng khoán thành viên. 2. Xác định vấn đề Vấn đề cần đặt ra đối với một hệ thống Website TTCK là gì ? Một hệ thống Website được xem là tốt thì điều đầu tiên cần phải nghĩ đến đó là kiến trúc của hệ thống. Một hệ thống được xem là hoạt động ổn định, có khả năng mở rộng phát triễn, thay đổi theo nhu cầu của thị trường, khách hàng thì cần phải có một kiến trúc hệ thống tốt, rõ ràng. Hệ thống Website TTCK cũng không phải là ngoại lệ. Để người sử dụng có thể đặt lệnh trực tiếp thông qua hệ thống thì đòi hỏi hệ thống phải có độ xác thực và bảo mật cao. Về cơ sở dữ liệu, đây không phải là một bài toán về cơ sở dữ liệu lớn. Nhưng đòi hỏi độ bảo mật cao. 3. Phân tích yêu cầu bài toán 3.1.Tin chứng khoán : Cung cấp các tin tức liên quan đến tình hình kinh tế thị trường trong nước cũng như những thông tin quốc tế ảnh hưởng đến nền kinh tế toàn cầu nói chung và nước ta nói riêng. Nhằm giúp nhà đầu tư có cái nhìn tổng thể về tình hình phát triển của thị trường. 3.2.Tin công ty : Thông tin liên quan đến chỉ một công ty mà nhà đầu tư lựa chọn quan tâm. Phần này có 3 mục để lựa chọn quan tâm : Những tin mới nhất Những tin host Những tin nhiều người xem nhất 3.3.Tin công ty niêm yết: 3.3.1. Công ty : 3.3.1.1. Tổng quan công ty : Cung cấp thông tin về giá cổ phiếu trong ngày như : giá mở cửa, giá đóng cửa, dư mua, khối lượng khớp, giá cao nhất ,…Những số liệu này được tự động cập nhật. Các chỉ số của công ty : Giá thấp nhất Giá cao nhất trong 5 tuần Thị giá vốn Số cổ phần đang lưu hành Tỷ lệ cổ tức trên mệnh giá Ngày chốt quyền Ngày trả cổ tức EPS : Earning per Share (Chỉ số thu nhập trên một đơn vị cổ phiếu) =(Lợi nhuận dòng – Tổng cổ tức ưu đãi) / Tổng cổ phiếu thường ROA : Return On Equity (Lợi nhuận trên vốn) = Lợi nhuận dòng / Vốn sở hữu (Vốn cổ phần của cổ đông) Đòn bẩy TC : P/E : Price to Earning Ratio (Chỉ số thị giá chia cho thu nhập của mỗi cổ phần) = PM/EPS (PM – Market Price) Beta :Đo độ bất ổn tương đối của một loại cổ phần Khối lượng trung bình 10 ngày Biểu đồ : Hình 3. 1 - Biểu đồ giá 3.3.1.2. Hồ sơ doanh nghiệp : Hồ sơ doanh nghiệp gồm có : Tên công ty và địa chỉ : tên pháp định, tên quốc tế, viết tắt, trụ sở chính, website, điện thoại, fax Chi tiết doanh nghiệp : thành viên của TTGD, lĩnh vự kinh doanh, ngành nghề kinh doanh, số chi nhánh, số nhân viên Ban lãnh đạo : tên , chức vụ Lịch sử hình thành Lĩnh vực kinh doanh Vị thế công ty Chiến lược phát triển và đầu tư 3.3.1.3. Thống kê cơ bản : Đưa thông tin liên quan đến khái quát của công ty chỉ tiêu tài chính (chỉ số định giá) P/E (4 quý trước) P/S (4 quý trước) P/B EPS (4 Quý trước) Chỉ số cơ bản Quy mô Tổng cộng tài sản Vốn chủ sở hữu Doanh thu thuần Thị giá vốn Tăng trưởng Tăng trưởng EPS (3 năm trước) Tăng trưởng tài sản Tăng trưởng doanh thu Khả năng tài chính Đòn bảy tài chính TSCĐ / Vốn CSH Khả năng sinh lời ROA ROE Tỷ lệ lãi gộp Tỷ suất lãi từ hoạt động kinh doanh Tỷ suất lợi nhuận sau thuế EBITDA EBIT Hiệu quả kinh doanh Vòng quay hàng tồn kho Vòng quay tổng tài sản Thông tin quyền cổ đông Ngày chốt quyền Tỷ lệ Kiểu Báo cáo tài chính tóm tắt (Bảng Cân đối Kế toán) Tài sản ngắn hạn Tài sản dài hạn Nợ phải trả Vốn chủ sở hữu Tổng cộng nguồn vốn Báo cáo Kết quả Hoạt động kinh doanh Doanh thu thuần Giá vốn hàng bán Lợi nhuận gộp Lợi nhuận thuần từ hoạt động kinh doanh Tổng lợi nhuận kế toán trước thuế Lợi nhuận sau thuế thu nhập doanh nghiệp 3.3.1.4. Cáo bạch báo cáo tài chính : Đầy đủ thông tin về các bản cáo bạch của công ty .Mỗi bản cáo bạch phải có thời gian đăng bản cáo bạch, tình trạng bản cáo bạch,… 3.3.2. Quyền sở hữu : 3.3.2.1. Cổ đông chính : Thông tin về cơ cấu cổ đông như phần trăm sở hữu nhà nước, sở hữu nhà đầu tư nước ngoài và tỷ lệ các sở hữu khác. Ngoài ra còn phải có thông tin cụ thể về các cổ đông lớn (Họ tên, số cổ phần, chức vụ,..). Bởi đó là những người có tầm ảnh hưởng đến tình hình biến động giá cổ phiếu của công ty. Mỗi thông tin về họ có thể ảnh hưởng đến thị trường của cổ phiếu đó. Ví dụ một vị chủ tịch sở hữu 20% cổ phần của công ty bỗng dưng tuyên bố bán ra 4% thì điều gì sẽ xảy ra? Chắc chắn nếu không có một thông tin khác quá quan trọng ảnh hưởng đến sự tăng giá thì cổ phiếu đó sẽ giảm giá không phải là nhỏ. 3.3.2.2. Giao dịch nội bộ : Thường thì những vụ giao dịch nội bộ sẽ không ảnh hưởng nhiều đến giá cả cổ phiếu đó, Trừ khi lượng giao dịch quá lớn và với mức giá chênh nhiều so với giá cổ phiếu đang giao dịch trên sàn. Do vậy cũng cần có thông tin về tên người giao dịch, chức vụ, số cổ phần giao dịch và giá của nó. 3.3.3. Công bố thông tin : Phần thông tin được công bố này sẽ nằm trong mục tin tức. Gồm có tin thị trường và sự kiện doanh nghiệp 3.3.4. Biểu đồ kỹ thuật : Đây là phần không thể thiếu của một trang web chứng khoán. Các biểu đồ để nhà đầu tư phân tích về tình hình giá, biên độ giao động. lượng giao dịch trong lịch sử,… Biểu đồ gồm có: Biểu đồ cơ bản, biểu đồ kỹ thuật, biểu đồ nâng cao 3.3.5. Báo cáo tài chính : Gồm bảng cân đối kế toán và báo cáo kết quả kinh doanh: Bảng cân đối kế toán : Tên các mục tài chính, số tiền, thời gian Báo cáo kết quả kinh doanh : Tên các mục kinh doanh, số tiền, thời gian 3.3.6. Truy vấn giá : Giúp nhà đầu tư tìm nhanh giá và các thông tin liên quan đến giao dịch của cổ phiếu đó. Có thể tìm kiếm theo mã CK, theo thời gian. Thông tin hiển thị sẽ là ngày giao dịch, phần trăm thay đổi tăng giảm, giá mở cửa, giá cao nhất, … 4. Đặc tả của một số use case chính đối với người sử dụng : Hình 3. 2 - Sơ đồ use case đối với người sử dụng 4.1. Usecase xem thông tin báo giá chứng khoán Mô tả: usecase thực hiện khi nhà đầu tư muốn xem bảng báo giá chứng khoán hiện tại Dòng sự kiện chính: Nhà đầu tư yêu cầu xem báo giá chứng khoán Hệ thống truy vấn thông tin báo giá chứng khoán từ TTGDCK. Hệ thống hiển thị kết quả bảng báo giá và kết thúc usecase. 4.2. Usecase xem kết quả khớp lệnh Mô tả: usecase thực hiện khi nhà đầu tư muốn xem danh sách các lệnh giao dịch đang chờ khớp. Dòng sự kiện chính: Công ty chứng khoán gửi mã cổ phiếu cần xem kết quả khớp lệnh. Hệ thống gửi trả danh sách các lệnh đang khớp của loại chứng khoán trong ngày giao dịch hiện tại. 4.3. Usecase xem tìm kiếm thông tin các công ty niêm yết Mô tả: usecase thực hiện khi nhà đầu tư tìm kiếm trong danh mục các công ty đang niêm yết chứng khoán. Dòng sự kiện chính: Nhà đầu tư được yêu cầu nhập vào điều kiện tìm kiếm các công ty niêm yết. Điều kiện tìm kiếm theo mã chứng khoán, và theo tên công ty. Hệ thống lấy thông tin về các công ty chứng khoán từ TTGDCK. Hệ thống hiện thị thông tin về công ty niêm yết cho nhà đầu tư. Đặc tả một số use case chính ở phần quản trị hệ thống: 5. Thiết kế cơ sở dữ liệu : 5.1. Các bảng CSDL về thông tin công ty: Bảng CI_CompanyInfo Tên thực thể Thông tin công ty Mô tả Thông tin của công ty phát hành cổ phiếu Cấu trúc TT Tên trường Khóa Giải thích 01 ID PK Khóa chính tự tăng 02 StockCode FK Mã chứng khoán 03 VietnameseName Tên pháp định 04 InternationalName Tên quốc tế 05 Abbreviation Viết tắt 06 Telephone Điện thoại 07 Fax Fax 08 Website website 09 BranchNumber Số chi nhánh 10 EmployeeNumber Số nhân viên 11 MarketCap Thị giá vốn : giá trị công ty được xác định bởi giá thị trường đối với các cổ phiếu thường đã phát hành. 12 ShareOutstanding Số cổ phần đang lưu hành 13 EPS Earning per Share : Chỉ số thu nhập trên một đơn vị cổ phiếu. Công thức : = (Lợi nhuận ròng - Tổng cổ tức ưu đãi)/Tổng cổ phiếu thường 14 ROE Return On Equity : Lợi nhuận trên vốn = Lợi nhuận dòng trên / vốn sở hữu (vốn cổ phần của cổ đông) 15 PE P/E (Price to Earning Ratio) Chỉ số thị giá chia cho thu nhập của mỗi cổ phần = PM/EPS (PM là Market Price) 16 ROA Return on Assets : Lợi nhuận trên tài sản = Lợi nhuận dòng sau thuế / Tổng giá trị tài sản 17 PS P/S: Thị giá/doanh thu trên một cổ phiếu 18 PB Price-to-Book ratio: P/B = Giá cổ phiếu/ (Tổng giá trị tài sản – tài sản vô hình và nợ) * Giá trị cổ phiếu tính từng ngày 19 20 Leverage Chỉ số đòn bẩy : Sử dụng nguồn tài trợ từ các khoản vay thay cho vốn cổ phần 21 Beta Đo độ bất ổn tương đối của một loại cổ phần 22 DividendYield Tỷ lệ cổ tức / mệnh giá 23 Ex_DividendDate Ngày chốt quyền 24 DividendPayableDate Ngày trả cổ tức 25 FixedAssetDivideEquity Tài sản cố định trên vốn chủ sở hữu 26 GrossProfitMargin Tỉ lệ lãi gộp 27 OperatinMargin Tỉ suất lãi từ hoạt động kinh doanh 28 NetMargin Tỉ suất lợi nhuận sau thuế 29 EBITDA EBITDA = doanh thu - các khoản chi phí (trừ tiền trả lãi, thuế, khấu hao) 30 EBIT thu nhập của doanh nghiệp trước khi tính các khoản tiền lãi và thuế thu nhập EBIT = Thu nhập - Chi phí hoạt động 31 InventoryTurnover Vòng quay hàng tồn kho 32 TotalAssetTurnover Vòng quay tổng tài sản 33 IndustryCode Mã ngành nghề kinh doanh Lấy Trong bảng : sys_ListCommon_Lang với type là IND  : Ngành nghề kinh doanh LanguageCode là VI 34 TypeFloor Loại sàn giao dịch : Lấy trong bảng : sys_ListCommon_ Lang với type là TFL : Loại sàn giao dịch LanguageCode là Vi 35 Sector Lĩnh vực kinh doanh: Lấy trong bảng : sys_ListCommon_Lang với type là SEC : Lĩnh vực kinh doanh LanguageCode là Vi 36 IsActivated Còn hoạt động hay không : 1 : hoạt động 0 : Không hoạt động Bảng 3. 1 – Bảng CI_CompanyInfo Thông tin công ty Bảng CI_CompanyLang Tên thực thể Thông tin công ty với các ngôn ngữ Mô tả Lưu thông tin của công ty với các ngôn ngữ khác nhau Cấu trúc TT Tên trường Khóa Giải thích 01 ID PK Khóa chính tự tăng 02 LanguageCode FK Mã ngôn ngữ 03 CompanyID FK Khóa công ty 04 History Lịch sử hình thành (nội dung) 05 MainBusiness Lĩnh vực kinh doanh (nội dung) 06 MarketPosition Vị thế công ty (nội dung) 07 [Plan] Chiến lược phát triển công ty(nội dung) 08 Headquarter Trụ sở chính Bảng 3. 2 - Bảng CI_ConpanyLang Thông tin công ty với các ngôn ngữ Bảng CI_Leader Tên thực thể Ban lãnh đạo Mô tả Quản lý ban lãnh đạo của công ty niêm yết Cấu trúc TT Tên trường Khóa Giải thích 01 ID PK Khóa chính tự tăng 02 LanguageCode FK Mã ngôn ngữ 03 CompanyID FK Khóa công ty 04 Name Tên lãnh đạo 05 [Position] Chức vụ lãnh đạo Bảng 3. 3 - Bảng CI_Leader Ban lãnh đạo Bảng SYS_Language Tên thực thể Thông tin ngôn ngữ Mô tả Thông tin các ngôn ngữ Cấu trúc TT Tên trường Khóa Giải thích 01 Code PK Mã ngôn ngữ 02 Name Tên ngôn ngữ 03 Description Mô tả 04 PathFile Đường dẫn file config 05 IsActivated Có hoạt đông hay không Bảng 3. 4 - Bảng SYS_Langluage Thông tin ngôn ngữ Bảng CI_AuthorityShareholder Tên thực thể Thông tin quyền cổ đông Mô tả Thông tin về việc trả cổ tức, họp cổ đông, Bán ưu đãi,... Cấu trúc TT

Các file đính kèm theo tài liệu này:

  • docBanIn.doc