Giải pháp theo SOP cho bài toán

Một phần của tài liệu Tìm hiểu về lập trình hướng dịch vụ – service oriented programming (Trang 27 - 31)

Để phân tích bài toán, chúng ta cần định nghĩa các thành phần và các giao diện dịch vụ. Bước đầu tiên của quá trình này là tìm kiếm các giao diện dịch vụ chuẩn cho phạm vi của bài toán này. Nếu các giao diện này đang tồn tại thì điều này gần như một hay nhiều thành phần cái mà hiện thực các giao diện cũng sẵn sàng như các sản phẩm. Các sản phẩm này có thể tích hợp vào giải pháp của bài toán. Trong ví dụ này, ta giả sử rằng cần tạo các giao diện dịch vụ. Sau đây là các giao diện dịch vụ sẽ được tạo ra

Máy chơi âm thanh - Audio Player: Giao diện của dịch vụ này điều khiển việc phát lại (playback) của một file âm thanh, một dòng (stream) âm thanh, hay danh sách các file âm thanh đang được chơi (trình bày thông qua URL). Giao diện này bao gồm những tính năng chuẩn như chơi (play), đứng tạm thời (pause), dừng hẳn(stop), các file âm thanh hay cho file âm thanh chạy nhanh về trước (fast forward), chọn điểm bắt đầu chơi, làm câm file âm thanh,..

Bộ ghi âm - Audio Recorder: Giao diện dịch vụ này được sử dụng để điều khiển việc ghi lại các âm thanh và có thể tạo ra các dòng âm thanh hay các file âm thanh

thanh (chủ đề, tác giả, album,...) và trả về một hay nhiều truy cập như các URLs.

Lưu trữ âm thanh - Audio Store: Giao diện này đưa vào một file âm thanh hoặc một dòng âm thanh tham khảo và tổ chức những thông tin có sẵn về nó như tác giả, chủ đề,..

Giải mã âm thanh - Audio Codec: Giao diện dịch vụ này được sử dụng để xuất bản các bộ giải mã âm thanh

Dịch vụ chuyển từ dạng tiếng nói sang dạng văn bản (Speech to text): Giao diện dịch vụ này đưa vào một file âm thanh hay một dòng âm thanh. Nó thực hiện công việc nhận dạng tiếng nói và xuất ra một dạng văn bản. Một trong các thuộc tính của dịch vụ này là dịch thuật một ngôn ngữ.

Dịch vụ chuyển từ dạng văn bản sang dạng tiếng nói (Text to speech): Giao diện dịch vụ này đưa vào một dòng văn bản và đầu ra của quá trình này là một file biểu diễn âm thanh có thể là một file hay một dòng.

Nhà cung cấp âm thanh – Audio provider: Giao diện dịch vụ này được sử dụng cho các phát thanh viên trên mạng hay các nhà cung cấp âm thanh giúp cho họ có thể xuất bản các dịch vụ của họ

Dòng âm thanh - Audio Stream: Giao diện dịch vụ này cung cấp việc phát âm thanh bằng cách sử dụng một vài bộ giải mã.

Hình sau đây thể hiện các thành phần và các dịch vụ trong bản thiết kế ban đầu dưới dạng các kí hiệu của ngôn ngữ ADL. Các bộ nối có vai trò của người dùng (hình tam giác) và vai trò của người cung cấp (hình vuông). Các con số trên phần cuối của các bộ nối thể hiện số lượng hợp đồng đã được định nghĩa trước đó.

Hình 2: ADL cho hệ thống MP3

Ở đây là một sự mô tả khái quát cho các thành phần trong lược đồ này. Các thành phần được in nghiên đã bao gồm một phần của sản phẩm lõi:

Thành phần “các dịch vụ âm thanh”: Đây là nhà cung cấp của sản phẩm hiện tại. Nó là một máy chơi âm nhạc, máy ghi âm hay một bộ tách CD (CD ripper)

Giao diện đồ họa của âm thanh: Đây là giao diện người dùng dịch vụ được cung cấp trực tiếp thành phần dịch vụ âm thanh.

Giao diện người dùng âm thanh dạng tiếng nói: Đây là giao diện người dùng dịch vụ khác cũng được cung cấp trực tiếp thành phần dịch vụ âm thanh.

Thành phần “dịch vụ tiếng nói”: Đây là công cụ của bên thứ ba, nó giúp chuyển đổi từ dạng văn bản sang dạng tiếng nói và từ tiếng nói sang dạng văn bản. Mục đích của thành phần này là cho phép các dịch vụ âm thanh có thể làm việc với bộ điều khiển tiếng nói.

Thành phần “Lưu trữ âm thanh”: Thành phần này quản lí các file âm thanh, các dòng âm thanh có liên quan, các bô giải mã. Dịch vụ âm thanh này có thể đi đến chỗ lưu trữ để truy xuất bất kì nguồn cung cấp âm thanh sẵn có nào. Thành phần này được đóng gói trong sản phẩm.

• Thành phần “người tìm kiếm âm thanh”: Thành phần này xác định nhà cung cấp âm thanh để tìm kiếm một nội dung âm thanh cụ thể nào đó. Thành phần này cũng không đươc đóng gói cùng với sản phẩm.

• Bộ giải mã âm thanh: các bộ giải mã này được xuất bản trên các trang web.

• Thiết bị âm thanh đầu ra : bất kì thiết bị nào chấp nhận một dòng âm thanh

• Thiết bị âm thanh đầu vào: Bất kì thiết bị nào cung cấp các dòng âm thanh.

Hiển nhiên các thành phần sẽ làm việc tốt hơn nếu chúng được chia sẽ. Ví dụ, dịch vụ tiếng nói thường đòi hỏi sự tập dượt để có thể công nhận là chất lượng cao. Nếu mỗi sản phẩm bao gồm dịch vụ tiếng nói của nó thì người dùng sẽ tốn thời gian để tìm hiểu các dịch vụ khác nhau. Bằng cách chia sẽ các dịch vụ tiếng nói chúng có thể tích hơp vào các sản phẩm và dịch vụ của người dùng.

Hình dưới đây cho thấy một triển khai ví dụ. Các phần cứng bao gồm hai máy tính (với các kết nối băng thông rộng), một âm thanh nổi, và nhiều đài phát thanh qua tòa nhà. Xét khía cạnh phần mềm có bốn thành phần hiện thực giao diện “máy chơi âm thanh” (Interface 1). Một máy chơi được gắn trực tiếp với dàn âm thanh nổi, một cái khác thì nối với máy tính và cái còn lại gắn với bô truyền FM dãi sóng ngắn.

Hình 3: Hệ thống MP3

những thành phần khác lại ủy quyền việc tìm kiếm dịch vụ cho một đợn vị điều khiển từ bên ngoài được xem như một cộng tác viên. Các thành phần kiểu cộng tác viên có thể được sử dụng để cấu hình các kết nối cảu các dịch vụ thụ động. Các cộng tác viên này có thể tự gán các dịch vụ cho chính nó hoặc sẽ cung cấp một giao diện giúp người dùng có thể thực hiện việc cấu hình các dịch vụ. Thành phần “các dịch vụ âm thanh” đóng vai trò là các cộng tác viên, chúng cho phép người sử dụng có thể chuyển các dòng âm thanh cá nhân đến một căn phòng riêng nào đó trong căn hộ. Điều này cũng dễ hình dung cho người sử dụng: các thành phần liên quan được hiển thị như hình ảnh của những gì họ thực sự đang có và hợp đồng dịch vụ hiển lên qua các nhãn hoặc biểu tượng. Sau đó, vấn đề đơn giản còn lại là kết nối các dấu chấm để làm những việc mạnh mẽ hơn.

Một điều quan trọng cần lưu ý ở đây là kể từ khi phát hiện ra hệ thống đang được sử dụng, thì cũng là lúc chúng đang được hình thành và đang tự khôi phục. Hệ thống đang tự hình thành bởi vì các thành phần mới có thể thêm động và được sử dụng trong hệ thống mà không làm thay đổi các thành phần đang có trong hệ thống. Nếu như một máy chơi âm nhạc được thêm vào hệ thống thì nó xuất hiện như một lưa chọn khác cho đầu ra âm thanh. Còn khi một máy chơi được gỡ khỏi hệ thống thì nó sẽ không còn lạ một tùy chọn cho đầu ra âm thanh nữa. Trong các hệt thống dựa trên nền tảng dịch vụ thì việc một thiết bị cung cấp một dịch vụ riêng lẻ hay nhiều dịch vụ theo kiểu tất cả trong một bởi vì các dịch vụ là các phần tử riêng lẻ.

Một phần của tài liệu Tìm hiểu về lập trình hướng dịch vụ – service oriented programming (Trang 27 - 31)