D. Giới thiệu Bộ cộng tác Zimbra
IV. Kiến trúc của hệ thống
4. Kiến trúc Máy khách Zimbra (Zimbra Client)
Phương châm của Zimbra là để hỗ trợ cho các ứng dụng email/messaging hiện nay trên phía máy khách như Microsoft Outlook, Apple Mail, Novell Evolution, Mozilla Thunderbird,... Cùng lúc, có nhiều chức năng nâng cao cho hệ thống Máy chủ Zimbra (Zimbra Server) như mash-ups, tìm kiếm, hội thoại, tagging, Ajax linking và Embedding/ALE,...) mà chúng không thể thấy được trên giao diện người dùng. Người dùng yêu thích khả năng của những chức năng nâng cao này trong Zimbra Ajax client (ít nhất là cho đến khi việc tồn tại các máy khách được làm nổi bật giống như thế!).
Ajax là từ viết tắt của Asynchronous JavaScript XML (JavaScript và XML bất đồng bộ). Khi cái tên Ajax gần đây được xem như là vật hái ra tiền, dựa trên các công nghệ - JavaScript (cũng được biết như là ECMAScript), CSS (Cascading Style Sheets = các bản kiểu dáng liên hoàn), XML (Extensible Markup Language = Ngôn ngữ tăng cường mở rộng), SOAP (Simple Object Access Protocol = Giao thức truy cập đối tượng đơn giản),... đang trưởng thành trong những năm qua.
Ajax đã trở thành một "vấn đề kế tiếp", bởi vì các ứng dụng Ajax kết hợp duy nhất:
Giao diện tương tác người dùng phong phú;
Các nối kết client/server mạnh hơn;
Chi phí thấp cho việc điều hành một Web client;
Cảm quan tốt hơn đối với Web (trừ nút Back và lưu trữ Bookmark);
Hạn chế sự tích hợp với nội dung trang Web khác (như "Mash ups")
Sự đầu tư cho việc bảo vệ về một Web chuẩn mực.
Một sự biểu hiện của Ajax đang là một chuẩn của Web, Zimbra Ajax client chạy và hoạt động tốt từ trình duyệt Mozilla Firefox, IE (Microsoft Internet Explorer), cho đến Apple Safari.
Giới thiệu về Bộ cộng tác Zimbra Zimbra Ajax client thật sự là rất to lớn (nhiều hơn 100K dòng lệnh) để lập trình giao diện hướng đối tượng bằng JavaScript. Máy khách theo mô hình kiến trúc MVC (Model- View-Controller), với các trạng thái thay đổi đều được trả về trong giao diện người dùng và gửi đến/nhận từ của Máy chủ trợ giúp. Cơ bản Zimbra Ajax trình duyệt phía máy khách không cho phép sự duy trì – mọi trạng thái duy trì trên phía máy khách đều được quản lý bên phía Máy chủ. CSS được tận dụng tối đa để có thể khả chuyển cho giao diện người dùng. Các kỹ thuật tối ưu thiết yếu cho sự tiện dụng của người dùng cao hay thấp bao gồm khả năng kết hợp nhiều tập tin JavaScript và CSS, việc nén các kết quả và bộ nhớ trình duyệt (về mã lệnh, không phải dữ liệu người dùng). 1/3 mã lệnh trong ZCS client là trang trí dựa trên công cụ kéo thả Kabuki Ajax, cấp phép bởi Zimbra và bản quyền mã nguồn mở trích ra từ giải pháp toàn thể cho ZCS client/server. (Để biết thêm về Ajax, xin xem thêm tài liệu về Zimbra/Kabuki Ajax Toolkit).
Hình D-3 : Front-End Architecture
4.2 Giao tiếp giữa Client/Server
Các kết nối XML/SOAP sử dụng cho giao tiếp Zimbra client/server đều được ghi chép kỹ từng chi tiết cho các lập trình viên được tự do truy cập bất kỳ thư tín Zimbra và các dịch vụ cộng tác – như là việc gửi một email, lập lịch cho cuộc họp hoặc chấp nhận một yêu cầu công việc – từ bất kỳ chương trình dịch vụ Web được kích hoạt. Cùng lúc, tất cả XML crunching không thể tối ưu cho việc thực thi Ajax phía client cho nên nhóm Zimbra cung cấp một "fast-path" thay đổi một cách tối ưu bên trong Zimbra server để tối ưu việc hiển thị - JSON (JavaScript Object Notation) - mang lại hiệu quả cao hơn cho việc xử lý bên trong Ajax client. Việc thay đổi cách truyền tải là sự lựa chọn một cách tự nhiên thích hợp (bản tương thích được đảm bảo từ Ajax client được tải về từ máy chủ và luôn có giao diện XML mặc định phía sau nó).
4.3 Sự cộng tác với các hệ thống client hiện tại.
Như minh họa trong hình D-3, Bộ cộng tác Zimbra hỗ trợ một mảng lớn các hệ thống messaging và calendaring hiện tại trên các máy khách – như Outlook, Apple desktop; Mozilla Thunderbird, Novell Evolution, Eudora,... – thông qua các plug-ins mà Zimbra cung cấp và các giao thức chuẩn công nghệ:
- Outlook (MAPI) - Zimbra bao gồm plug-in nhà cung cấp MAPI (được đóng gói như Window Installer hoặc tập tin MSI) trực tiếp liên kết với Outlook, và do đó phải được cài đặt trên nền Window client. Điều này được Microsoft khuyến khích và hỗ trợ tiếp cận để đồng bộ hóa các chức năng Outlook như là email cũng như calendaring và các contact (không được hỗ trợ cho IMAP) với các máy chủ thư tín như ZCS. Nhà cung cấp Zimbra MAPI đề cập đến bảo mật chính của giao thức các dịch vụ web như Web Ajax client (trừ sự tối ưu JSON). Nhà cung cấp Zimbra MAPI hỗ trợ lưu trữ chế độ cho kết quả thao tác hủy kết nối và sự tải đồng bộ, và dẫn đến việc hỗ trợ cho SSL/TLS, không đòi hỏi phải có một VPN để bảo mật qua các mạng công cộng.
- Apple Desktop (iSync) - ZCS client sync plug-in cho Apple cũng giống với kiến trúc của nó dành cho bộ ZCS Connector dành cho Outlook, nhưng nó cung cấp sử dụng đồng bộ hóa Apple Address Book, iCal và iCal Events đến ZCS server. Apple Mail được đồng bộ hóa tốt hơn, mặc dù thông qua IMAP. Tất cả các truyền thông qua mạng đều hỗ trợ riêng thông qua SSL/TLS.
- Novell Evolution - ZCS client sync plug-in cho Novell Evolution (Ximian) cũng cùng kiến trúc đó, việc sử dụng Evolution Data Sever (EDS) như là điểm tích hợp trên phía client và việc cung cấp sự đồng bộ hóa thông qua cùng cơ chế bảo mật các dịch vụ Web.
- POP3 - SSL/TLS hoặc truyền tải văn bản thuần. Việc dựa trên sự thực thi bất đồng bộ Nhập/Xuất bảo đảm khả năng vận hành đồng thời của nhiều máy khách.
- IMAP4 - Zimbra hỗ trợ hầu hết các tính năng mở rộng IMAP4. Khả thi thông qua SSL/TLS hoặc truyền tải văn bản thuần, và cũng như việc Nhập/Xuất bất đồng khả chuyển trên máy chủ.
- iCalendar - Zimbra có bản dựa trên sự kết hợp chuẩn Internet Calendaring cho việc lập lịch các sự kiện, thời gian bận, cuộc hẹn,… đề cập trong các RFC dưới đây:
+ RFC 2445 - Internet Calendaring và Scheduling Code Object Specification (iCalendar)
+ RFC 2446 - iCalendar Transport-Independent Interoperability Protocol (iTIP)
+ RFC 2447 - iMIP (iTIP over MIME)
Zimbra cũng xuất bản dữ liệu calendar (như là trong định dạng vCal) cho việc truy cập chỉ đọc cho các máy khách giống như Apple iCal.
- RSS, REST & SOAP – tất cả các chức năng của Zimbra cũng được công bố một cách bảo mật trên các tài liệu XML cho các ứng dụng khác hoặc tiện ích dòng lệnh (bao gồm các cộng cụ migration) để tạo đòn bẩy.
- "Over the Air" Sự đồng bộ với thiết bị di động – Nơi ưu tiên của Zimbra cho các Smart phone là cung cấp chuyên về các phần mềm PIM (Personal Information Management=
Quản lý thông tin cá nhân) bao gồm gửi tin, sổ lưu địa chỉ, và các ứng dụng lập lịch. Với phần mềm đồng bộ hóa với các thiết bị tương thích (không có phần mềm Zimbra được đòi hỏi trên
Giới thiệu về Bộ cộng tác Zimbra máy thu phát cầm tay!), Zimbra Mobile ngày nay có thể đồng bộ các mối liên hệ, các tác vụ, và email tới Nokia, Motorola, Samsung, Treo, và các điện thoại Blackberry Smart. (Chỉ có các thiết bị Blackberry đòi hỏi phần mềm máy chủ thêm vào – đồng bộ dễ dàng từ thiết bị vào Máy chủ ZCS.) Hơn nữa, từ mạng intranet và các ứng dụng Internet có thể truy cập đến máy chủ ZCS qua các giao thức mở hay các giao thức chuẩn, ngày nay có một cách đơn giản để mở rộng các ứng dụng kết nối đến các thiết bị ZCS: như là việc export các liên hệ khách hàng từ hệ thống CRM, việc export một nhật ký du lịch từ ứng dụng yêu cầu của chúng ta, hoặc đơn giản hơn là việc gửi một email yêu cầu đến một URL đặt biệt từ trình duyệt.
4.4 Mash-ups và Zimlets
Zimlets, tái hiện lại một kiến trúc kéo thả cho cả giao diện người dùng lẫn sự tích hợp trên phía Máy chủ (như đã đề cập trong hình D-3). Cái tên "mash-up" được đúc kết để mô tả sự tích hợp và sự tùy chọn của nhiều giao diện Web/dịch vụ Web để loại trừ việc chuyển đổi ngữ cảnh giữa các hệ thống đang tồn tại. Từ đó, việc tính toán thực sự lớn hơn nhiều bộ phận, mash-ups có thể nâng cao một cách ngạc nhiên sự tiện dụng đối với người dùng cũng như sự phát triển vận hành sản phẩm.
Kiến trúc Zimbra Zimlet làm cho người phát triển khai báo các thông tin tích hợp từ các nguồn khác nhau – như là Internet và các hệ thống thông tin chuyên nghiệp – vào bất kỳ nội dung nào trong ZCS, bao gồm các thông tin email, các lĩnh vực hợp đồng, và các chú ý được chỉ định trong lịch biểu. Tóm lại, ZCS cấu hình trước với một vài mẫu Zimlet XML – ví dụ gồm sự tích hợp với Google/Yahoo Maps, Amazon, Saleforce.com, và các hệ thống VoIP, nhưng phát triển thực sự là sự tăng trưởng nhanh chóng của các Zimlet như là mô hình được bao trùm bởi cộng đồng mã nguồn mở.
Kiến trúc của các Zimlet bao gồm một framework cho client và server, như là một tập hợp các dịch vụ Web và JavaScript APIs. Zimlets được đưa ra cho người dùng cuối thông qua ZCS Ajax client. Cơ sở hạ tầng của Zimlet server cung cấp các template cho sự quản lý vòng đời như là sự phân phối, sự cấu hình, điều khiển việc truy cập, và ―hủy phân phối‖. Thêm vào đó, framework của Zimlet server cung cấp khả năng tích hợp với bộ máy tìm kiếm ZCS (như là cho việc đánh chỉ mục một cách đặc biệt để nhận dạng các đối tượng giống như các id của khách hàng), trong khi đó framework cho Zimlet client cung cấp sự hỗ trợ cho các menu ngữ cảnh trên các panel item, nội dung của các đối tượng, hỗ trợ kéo thả, và việc nhúng các nội dung từ xa vào ZCS. Điểm chính của kiến trúc là làm cho việc thực thi trên diện rộng các khuôn mẫu Zimlet này, từ một số khuôn mẫu đòi hỏi do hoặc không có tùy chọn code (nghĩa là gồm cả việc khai báo) đển một số khuôn mẫu sử dụng JavaScript tích hợp một số nhỏ các thao tác để làm phong phú các thao tác trên giao diện người dùng trong ZCS client, hoặc các chức năng mở rộng của Java để làm điều tương tự trên phía server. Hầu hết các ví dụ về Zimlet, không đòi hỏi phải viết mã nguồn – cách thức hoạt động của chúng được chỉ định qua các tập tin mẫu XML để truy cập vào trong proxy chung của Web service trên server (từ các chương trình ứng dụng Ajax client chỉ tạo ra các yêu cầu dành cho máy chủ của chúng ta và ngăn ngừa từ các truy cập trực tiếp vào các Website một cách tùy ý). Để có cái nhìn chi tiết hơn về Zimlet, xin hãy đọc tài liệu chỉ dẫn và các gallery về Zimlet trên Website của Zimbra.
4.5 Postfix, anti-spam, và anti-virus.
Bộ cộng tác Zimbra gồm có Postfix, nó quan sát như là một MTA (Zimbra Mail Transfer Agent) cho việc gửi và nhận email qua Internet. Postfix được "nhúng" vào trong Zimbra, việc cài đặt, cấu hình, và vận hành Postfix (tuỳ chọn) là trong suốt đối với người quản trị Zimbra. Postfix vận hành bên trong ZCS Mailbox Server thông qua chuẩn công
nghiệp SMTP/LMTP. MTAs khác có hỗ trợ SMTP/LMTP có thể được sử dụng để thay cho Postfix.
Ngoài Zimbra MTA, Postfix cũng cung cấp một bộ test hợp nhất (trong trường hợp Zimbra, thông qua amavisd-new) dành cho hãng thứ ba về các giải pháp AS (anti-spam) và AV (anti-virus). Thực vậy, điều này chính xác làm thế nào chúng được tích hợp SpamAssassin và các giải pháp cho ClamAV, và chúng được thêm vào trong ZCS. (Tất nhiên, các giải pháp cho anti-spam/anti-virus bên ngoài, có thể cũng được thuê với Zimbra đơn giản bằng việc định tuyến vào hộp thư đến qua các dịch vụ host như Postini.) Postfix là một sự hợp nhất tự nhiên cho những hệ thống thông tin bắt tuân theo chính sách thông điệp. Mọi luồng thông báo của Zimbra (bên trong và bên ngoài) đều thông qua Postfix. Để cho sự triển khai ở mức quy mô, Postfix nên được cấu hình trên những server riêng biệt hơn là thiết đặt cho chúng chay trên các máy chủ ZCS Mailbox.
5. Kiến trúc máy chủ Zimbra
Hình D-4 : Kiến trúc Back-End
5.1 Kiến trúc Máy chủ
Chỉ khi Zimbra bị thuyết phục rằng JavaScript/Ajax là sự lựa chọn đúng cho khách hàng quen thuộc ZCS, vì thế mà Zimbra tìm đến Java - sự chọn lựa đúng và chủ yếu trong môi trường lập trình bên phía máy chủ Zimbra:
Java rất tốt khi tích hợp với Web - Đối với các phần mềm hệ thống, được sử dụng nhiều nhất, hầu hết đều được kết nối cẩn thận đến các công nghệ Web như XML và các dịch vụ Web, ở trong C# (trung tâm thuộc trường phái Microsoft) và trong Java (dành cho những người khác).
Sự tích hợp các thành phần trong việc "quản lý code" - Máy chủ Zimbra chứa nhiều các thành phần mã nguồn mở cũng như một số lượng mã mới có thực. Việc kết hợp
Giới thiệu về Bộ cộng tác Zimbra nhiều thành phần này vào trong một ảnh tiến trình đơn lẻ thật đơn giản trong môi trường quản lý code giống như của Java - Bộ cộng tác Zimbra là một sản phẩm rất dễ dàng cho việc build, test, và trợ giúp, như là một kết quả của cộng đồng Zimbra đang lo lắng ít nhất là về việc tập hợp, lưu trữ các lỗi cần tham chiếu, reentrancy,...
Thực thi - Chúng ta có thể không mong rằng sẽ nhìn thấy quá trình thực thi trong cái phần này, nhưng để cho các ứng dụng có cường độ Nhập/Xuất cao chẳng hạn như việc xử lý giao dịch và truyền tin, Java đưa ra những thuận lợi qua những ngôn ngữ thay thế. Java rất tốt cho việc Nhập/Xuất đồng thời và đồng bộ, việc cho phép Zimbra nhiều đầu vào và đầu ra hiệu quả bên trong một tiến trình đơn, và từ đây việc tránh vượt quá tiến trình chuyển đổi và các giao tiếp bên trong tiến trình (IPC điển hình là 3 lệnh quan trọng xa xỉ hơn những lời gọi hàm cục bộ bên trong tiến trình). The proof of course is in the pudding—Zimbra offers superior performance in head-to-head benchmarking against the fastest C-based alternatives. Minh chứng cho điều này là trong pudding - Zimbra hỗ trợ tối cao việc thực thi trong head-to-head benchmarking chống lại những giải pháp dựa trên C nhanh nhất. (Tương tự, các hệ thống trao đổi Java cơ bản giống như WebLogic và WebSphere hiện tại đang cạnh tranh với những sự thay thế C cơ bản như Tuxedo và Encina/CICS). Và vì thế trong khi Java có thể sẽ không bao giờ cạnh tranh với C về những từ khoá về các chỉ dẫn thực thi (nhân tiện, Java hiện giờ có sự cạnh tranh về sự hướng đối tượng trong mã viết bởi C++), về đa thành phần, những ứng dụng mạng I/O cấp cao như Zimbra, Java là sự lựa chọn tốt nhất.
Sự chọn lựa an toàn - Quản lý code là nền tảng để các kiến trúc Internet phía máy chủ của các công ty phần mềm lớn nhất - C#: Microsoft; Java: IBM, Oracle, SAP, BEA,...
Hơn nữa, Java chạy từ doanh nghiệp lớn đến người sử dụng trong ngành tin học ngày nay: nghĩa là, có những sự hợp tác cá nhân với nhiều hơn 10.000 CPU sản phẩm có môi trường Java trên máy chủ, và ứng dụng xử lý hàng ngàn cuộc giao dịch trên giây.
5.2 Message store (Lưu trữ thông điệp).
Zimbra message (hay blod) store được xây dựng dựa trên hệ thống tập tin Unix/Linux.
Việc ánh xạ là một tập tin trên một thông điệp - chính xác là Zimbra ghi lại cái thông điệp RFC822 MIME tái thể hiện trực tiếp đến một tập tin. Điều này mang đến rất nhiều thuận lợi:
Một lần được ghi, các thông điệp là không bị thay đổi trong Zimbra, và các hệ thống tập tin ảnh hưởng đến việc lưu trữ và khôi phục lại trạng thái ban đầu các khối dữ liệu phi cấu trúc/bán cấu trúc.
Công việc dọn dẹp được hệ điều hành đảm nhiệm một cách tự động, mang lại hiệu quả cao và giảm bớt cho việc điều hành.
Các tiện ích, các công cụ và các đoạn script độc lập có thể nhận dạng và xử lý Zimbra message miêu tả trên đĩa một cách dễ dàng.
Các khả năng tự động của hệ điều hành như tạo chỉ mục/ tìm kiếm (ví dụ như Mac Spotlight), khả năng nén và bảo mật.
Sau cùng nhưng cũng không kém phần quan trọng, việc lưu trữ đa tầng - bộ đệm dữ liệu bởi chính Zimbra, nhưng Zimbra cũng có những thuận lợi dựa trên bộ đệm của hệ điều hành. Từ các hệ chuyên gia truyền tin được thông qua cổng tập trung trên việc đọc và ghi thực thi, hiệu quả của lưu trữ bộ đệm là một trong nhưng nền tảng tối thiểu cho việc thự thi truyền tin khả chuyển hơn.