2009-07-30 26 views
9

Có ai có suy nghĩ nào về khái niệm Blackboard từ trang 163 của 'Người lập trình thực dụng' không?Bất cứ ai cũng có suy nghĩ về việc sử dụng Mẫu Bảng đen theo cách này?

Tôi muốn có một số hệ thống con nhỏ (DLL và EXE) chủ yếu là độc lập với nhau. Có một số hội đồng sẽ được sử dụng bởi tất cả các EXE. Những hội đồng này hầu như sẽ sử dụng cùng một cơ sở dữ liệu. Thay vì sử dụng giao diện để giao tiếp giữa các hội đồng này, không phải kiểu mẫu Blackboard sẽ cung cấp sự độc lập hơn?

Tôi đang nghĩ về một số loại trình xây dựng hòa giải thông báo thông qua các sự kiện và tất cả các giao tiếp hệ thống phụ đi qua nó. Điều này giữ cho hệ thống syb rất độc lập. Người hòa giải sẽ giữ tên của tất cả các thông báo cần phát. Sau đó, người đăng ký sẽ nghe một sự kiện cụ thể theo tên nhưng luôn đăng ký sự kiện hòa giải giống như (hoặc có thể vượt qua tên là tham số).

Dưới đây là một số thảo luận thêm về nó: http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_22829492.html

+0

Tôi cũng quan tâm đến việc biết cách tốt hơn "quy trình làm việc". – Mank

Trả lời

13

Khái niệm về một bảng đen là nhiều quy trình độc lập chạy và cập nhật bảng, trong khi họ làm việc ra đoạn nào của nó. Một ví dụ cổ điển là nhận dạng giọng nói. Dữ liệu đầu vào là âm thanh được nhận dạng. Âm thanh có thể được phân đoạn và nhiều chủ đề bắt đầu khớp các đoạn trích với các từ. Khi mỗi chuỗi tìm các từ phù hợp, chúng cập nhật bảng đen với bản dịch đến thời điểm này. Khi các cụm từ bắt đầu được lắp ráp, một chuỗi khác có thể thực hiện kiểm tra ngữ pháp để xác minh các lựa chọn mà các chuỗi trình nhận dạng khác nhau đang tạo. Nếu một từ có độ tin cậy thấp và vi phạm ngữ pháp, đoạn có thể chạy lại tìm kiếm các lựa chọn thay thế. Điều này thậm chí có thể dẫn đến việc phân vùng lại dữ liệu âm thanh dưới dạng các điểm dừng và tạm dừng được giải quyết.

Khi các cụm từ trở thành câu, thậm chí còn có thể xem lớn hơn và có thể giải quyết các tùy chọn khác nhau cho âm thanh đồng âm (cặp, cặp đôi). Tất cả điều này được thực hiện bằng cách mở bảng đen cho tất cả các quy trình và "khóa" chỉ được áp dụng khi các kết quả khác nhau cuộn vào.

Sử dụng cơ sở dữ liệu làm bảng đen của bạn có ý nghĩa bởi vì bạn nhận giao dịch "miễn phí" , nhưng nó sẽ phụ thuộc vào dữ liệu đang được cập nhật và đọc lại mạnh mẽ như thế nào. Nếu nó xảy ra rất nhanh, các chuyến đi khứ hồi sẽ tăng lên và tạo ra cấu trúc bộ nhớ hợp lý hơn.

Ý tưởng về người hòa giải có ý nghĩa vì nó tạo ra một điểm khóa duy nhất ... và thuật toán bảng đen hiếm khi gặp phải A-> B, B-> Kiểu bế tắc vì chúng yêu cầu tất cả các phần tử dữ liệu phía trước. Ngoài ra, từ bỏ trên một khóa không phải là một hình phạt lớn như các nhiệm vụ phụ khác nhau sẽ được khởi động lại tất cả thời gian khi dữ liệu cuộn vào. Thuê bao đến hội đồng quản trị sẽ cần phải được thông báo khi dữ liệu mà họ đã trở nên lỗi thời, có thể được thực hiện với các cuộc gọi lại sẽ khởi động lại tác vụ với dữ liệu mới nhất. Theo như bình luận về một quy trình công việc: sự khác biệt chính ở đây là hầu hết các luồng công việc được điều phối bởi một quy trình tổng thể đưa trạng thái vừa nhập vào và đưa ra quyết định về trạng thái nào có sẵn cho dữ liệu di chuyển bên trong. Trong khi có thể có các diễn viên độc lập, họ hiếm khi tham gia vào việc "làm tốt" lẫn nhau bằng cách tạo ra kết quả tốt hơn (các nhiệm vụ khác sau đó sẽ sử dụng). Nói cách khác, một quy trình làm việc thường là một tập hợp rất hạn chế các trạng thái mà dữ liệu tuần hành thông qua, trong khi bảng đen gần như là miễn phí cho tất cả các hoạt động độc lập. (Điều đó nói rằng, một bảng đen có thể đứng sau quy trình làm việc của bạn: http://sunsite.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-247/FORUM_15.pdf)

Tôi không thể nghĩ ra bất kỳ ví dụ nào về mẫu mà tôi đã thấy, và loại công việc tôi không gọi nhiều (các tính toán được xác định). Thực hiện một số tìm kiếm tìm tài liệu tham khảo bằng các ngôn ngữ khác, nhưng không có tìm kiếm nào xuất hiện với chất lượng tuyệt vời.

+0

Cảm ơn. Nó sẽ không hoạt động tốt như một giao tiếp trung tâm giữa các ứng dụng phân tán trên mạng nội bộ? – 4thSpace

+2

Nó sẽ có vẻ là một mô hình hợp lý cho các ứng dụng phân tán với một vài lời khuyên. Thứ nhất là nó thường được sử dụng trong các tình huống thời gian thực hoặc gần thời gian thực, nơi mà chi phí của một mô hình phức tạp hơn (có thể tránh tính toán dư thừa dễ dàng hơn). Thông báo thứ hai là một bảng đen giao dịch tốc độ hội tụ cho băng thông: có thể có rất nhiều lần đọc dư thừa gây ra bởi chu kỳ cập nhật/thông báo. – Godeke

+1

Vì hai vấn đề tiềm năng này tôi chắc chắn sẽ đảm bảo rằng một mô hình phân phối mạng truyền thống hơn (ví dụ như sử dụng thiết kế trong đó quy trình trung tâm phân phối khối lượng công việc cho các quy trình công nhân trong trang trại). Một chút tính toán lên phía trước tại trung tâm có thể có nghĩa là bạn có thể tránh hầu hết các công việc lại bằng cách đơn giản là không gửi lệnh cho người lao động cho đến khi toàn bộ kịch bản có sẵn cho đơn vị công việc đó. Thật khó để nói mà không biết bản chất của công việc: lặp lại (Blackboard) hoặc phân phối tải công việc (hub/worker). – Godeke

Các vấn đề liên quan