Một vài năm trước, tôi đã thiết kế và triển khai hệ thống kinh doanh quan trọng đã sử dụng .NET Remoting. Chúng tôi đã có một ứng dụng khách được triển khai như một GUI của Windows Forms, một máy chủ được cài đặt như một Dịch vụ Windows và một cơ sở dữ liệu SQL Server.
Tôi thiết kế để khắc phục sự cố/gỡ lỗi/phát triển, vì vậy một trong các tiêu chí thiết kế đầu tiên của tôi là tôi có thể loại bỏ toàn bộ toàn bộ .NET Remoting implementation và chạy toàn bộ hệ thống trên máy tính để bàn của mình. Vì vậy, tôi có thể tắt chức năng truy cập từ xa bằng cách thay đổi một thiết lập cấu hình boolean thành "false" = off.Sau đó tôi có thể khắc phục sự cố, gỡ lỗi, phát triển hoàn toàn mà không phải trả phí hoặc can thiệp của .NET Remoting.
Dường như điều này cũng có giá trị cho tình huống của bạn. Trên thực tế, tôi không thể tưởng tượng ra một tình huống mà trong đó đó không phải là một tính năng mong muốn, đặc biệt là vì nó rất dễ thực hiện.
Vì vậy, để thực hiện nó, cài đặt cấu hình được mỗi khách hàng và mã máy chủ sử dụng để quyết định lớp triển khai nào sẽ khởi tạo để giao tiếp với phía bên kia. Tất cả các giao tiếp xảy ra thông qua một giao diện C# tùy chỉnh có hai lớp thực hiện cụ thể ở mỗi bên: một lớp thực hiện giao tiếp bằng .NET Remoting, lớp kia đã thực hiện truyền thông như một cuộc gọi trực tiếp trong quá trình (các cuộc gọi trực tiếp).
Chỉ có một cặp lớp học (một ở mỗi bên) biết bất kỳ điều gì về .NET Remoting, vì vậy sự cách ly là tổng. Hầu hết thời gian, tất cả các nhà phát triển đã làm việc với điều khiển từ xa đã tắt, nhanh hơn và đơn giản hơn. Khi họ cần, trong một dịp hiếm hoi, họ đã bật tính năng này (chủ yếu là chỉ cho tôi hoặc khi ai đó kết nối với thử nghiệm/sản xuất để khắc phục sự cố).
Bằng cách này, tôi đã thực hiện giao diện Remoting chết đơn giản: đáp ứng công chúng thực hiện (Request)
Ngoài ra, tôi cũng sử dụng các chương trình gỡ rối tung đầu đề cập ở trên, và tôi đồng ý rằng bạn cần phải lưu tâm của tác động đến luồng GUI.
Nguồn
2008-11-07 01:42:56
Vâng, bạn nói "RemoteObject tạo luồng không phải ThreadPool sử dụng ThreadPool để xử lý IO". Đây không phải là lý do (ví dụ, các chủ đề không ThreadPool đang chờ đợi các khe ThreadPool để mở ra)? – Alan
Tại sao điều đó ảnh hưởng đến chuỗi mà RemoteObject đang bật? GUI thậm chí không thể vào được phương thức RemoteObject mà nó đang gọi. – Chris
Nếu bạn có thể có thể vung cái này, mương từ xa cho WCF. – Will