2009-02-20 42 views
21

Gần đây tôi đã chuyển sang các ngôn ngữ thay thế hỗ trợ kiến ​​trúc sư/tác nhân/không chia sẻ gì - tức là. scala, clojure vv (clojure cũng hỗ trợ trạng thái chia sẻ).Các mẫu thiết kế cho thiết kế đồng thời/tác nhân dựa trên thiết kế

Cho đến nay hầu hết tài liệu mà tôi đã đọc tập trung xung quanh cấp giới thiệu. Những gì tôi đang tìm kiếm là tài liệu tiên tiến hơn dọc theo băng đảng của bốn nhưng thay vì chia sẻ không có gì dựa.

Tại sao? Nó giúp grok sự thay đổi trong tư duy thiết kế. Ví dụ đơn giản là dễ dàng, nhưng trong một ứng dụng java thế giới thực (đơn luồng) bạn có thể có đồ thị đối tượng với 1000 thành viên với các mối quan hệ phức tạp. Nhưng với sự phát triển đồng thời dựa trên tác nhân, nó giới thiệu một tập hợp các ý tưởng hoàn toàn mới để hiểu khi thiết kế các hệ thống lớn. I E. Đại lý chi tiết - bao nhiêu nhà nước nên một đại lý quản lý - ý nghĩa về hiệu suất vv hoặc là mô hình tốt của họ để lập bản đồ đồ thị trạng thái chia sẻ đối với hệ thống đại lý dựa. các mẹo về ánh xạ các mô hình miền để thiết kế. Các thảo luận không có trên công nghệ nhưng nhiều hơn về cách sử dụng TỐT NHẤT công nghệ trong thiết kế (các ví dụ "phức tạp" trong thế giới thực sẽ là tuyệt vời).

Trả lời

1

Tôi đã hỏi một câu hỏi tương tự here có một số câu trả lời hợp lý có thể hữu ích. Tôi đang xem kỹ của bạn. Tôi chưa tìm thấy thứ gì đó đã thực sự giúp tôi, nhưng tôi rất tích cực tìm kiếm.

Tôi nghĩ rằng sự thay đổi tâm là rào cản lớn nhất để bước vào các kiến ​​trúc và ngôn ngữ đồng thời và cho đến khi các nhà phát triển bị bẻ khóa sẽ dễ dàng học các mô hình kiểu MS. Đối với nó để thực sự trở thành chủ đạo nó cần phải tìm đường vào trường học và được dạy cùng với C# và VB.

Câu trả lời của tôi cho số 2080 programmers question là "đồng thời".

10

Thậm chí nếu tôi không thể đưa ra bất kỳ ví dụ điển hình thực tế nào cung cấp cho bạn thiết kế mẫu thẳng lên, có một vài nơi để bắt đầu.

Đầu tiên là đưa đầu của bạn được bao bọc đúng theo các khái niệm. Một cuốn sách trợ giúp bạn làm điều này là Making reliable distributed systems in the presence of software errors được viết bởi một Erlang Guru Joe Armstrong, nơi giải thích Lập trình theo hướng đồng thời theo cách rất dễ tiếp cận. Đó là trong thực tế, một Ph.D. luận án, nhưng đừng để điều đó làm bạn sợ. Nó dễ đọc hơn, và dễ chịu hơn trong các món hời, so với hầu hết các sách giáo khoa phổ biến.

Nhìn vào các hệ thống thực tế thường có nghĩa là bạn phải học quá nhiều về ngôn ngữ thực tế vì nó cũng có ý nghĩa chỉ để đánh giá mọi thứ. Đối với Erlang, documentation cung cấp phương pháp thiết kế và hành vi (Erlang speek cho thư viện mẫu thiết kế). Điều này sẽ minh họa các mẫu thiết kế thường được sử dụng nhất trong cài đặt này. Và những đã chứng minh là có hiệu quả trong việc xây dựng các hệ thống quy mô lớn, tức là hàng triệu dòng mã (so sánh với hệ số 4 đến 10 của các ngôn ngữ khác như Java) và các quy trình đồng thời chạy trên một máy trong các cụm máy phân tán. Ví dụ gần đây về hệ thống thực sự trực tiếp là Facebook Chat.

Đối với các khuôn khổ khác tôi thực sự không thể giúp bạn, tôi sợ.

+0

trò chuyện trên facebook có vẻ thú vị. Khi bạn nhìn vào vấn đề thiết kế chat/pbx, các đối tượng "tương tác" tạo ra một "đại lý" tốt bởi vì sự tương tác là phần lớn tự chứa về trạng thái (các bên, fsm cho mỗi bên, v.v.). Nó sẽ được tốt đẹp để xem những gì họ đã thiết kế khôn ngoan. – nso1

4

Một "nam diễn viên" là mẫu thống nhất cho lập trình đồng thời (hàng đợi thông điệp không đồng bộ cộng với bối cảnh thực thi để xử lý nó), nhưng có nhiều mẫu thiết kế hỗ trợ xác định các khía cạnh hoặc yếu tố của hệ thống dựa trên tác nhân. Có thể tìm thấy nhiều thông tin phổ biến nhất trong bài viết của Wikipedia trên Concurrency Patterns.Một số điểm nổi bật:

Nếu bạn đã không đi qua nó đã có, Akka có thể quan tâm đến bạn - nó là một "hoàn toàn" khung diễn viên hướng sự kiện chạy trên JVM.