몇 년 전에 .NET Remoting을 사용하는 중요한 비즈니스 시스템을 설계하고 구현했습니다. Windows Forms GUI, Windows 서비스로 구현 된 서버 및 SQL Server 데이터베이스로 구현 된 클라이언트가있었습니다.
문제 해결/디버깅/개발을 위해 설계되었으므로 첫 번째 디자인 기준 중 하나는 전체 .NET Remoting 구현을 쉽게 제거하고 데스크톱에서 전체 시스템을 실행할 수 있다는 것입니다. 그래서, 나는 하나의 부울 구성 설정을 "false"= off로 변경하여 원격 작업을 비활성화 할 수 있습니다.그런 다음 .NET Remoting의 오버 헤드 나 간섭없이 문제를 해결하고 디버그하고 완벽하게 개발할 수있었습니다.
귀하의 상황에도 유용 할 것으로 보입니다. 사실 구현하기가 쉽지 않기 때문에 바람직하지 않은 상황을 상상할 수는 없습니다.
구현하기 위해 각 클라이언트와 서버 코드에서 구성 설정을 사용하여 상대방과의 통신을 위해 인스턴스화 할 구현 클래스를 결정했습니다. 모든 통신은 양측에 두 개의 구체적인 구현 클래스가있는 사용자 지정 C# 인터페이스를 통해 발생했습니다. 한 클래스는 .NET Remoting을 사용하여 통신을 구현했으며 다른 클래스는 직접적인 프로세스 내 통과 (직접 호출)로 통신을 구현했습니다.
한 쌍의 클래스 (각면에 하나씩) 만 .NET Remoting에 대해 알았으므로 격리가 총계였습니다. 대부분의 경우, 모든 개발자는 리모콘을 끄고 더 빠르고 간단하게 작업했습니다. 드문 경우지만, 필요할 때, 대부분 켜기 만했거나 누군가 문제 해결을 위해 테스트/프로덕션에 연결했을 때. 그런데
, 나는 원격 인터페이스 죽은 간단했다 : 공공 응답 실행 (요청)을 넘어
, 나는 또한 끝이 위에서 언급 한 실행 디버거를 사용을, 그리고 당신이 염두 할 필요가 있음을 동의합니다 GUI 스레딩에 대한 영향.
"RemoteObject는 ThreadPool을 사용하여 IO 처리를 수행하는 비 ThreadPool 스레드를 만듭니다." 이것은 이유가 될 수 없습니다 (즉, 비 ThreadPool 스레드는 ThreadPool 슬롯이 열리기를 기다리고 있습니다)? – Alan
RemoteObject가있는 스레드에 영향을주는 이유는 무엇입니까? GUI는 호출하고있는 RemoteObject 메서드에 들어갈 수도조차 없습니다. – Chris
WCF를위한 리모팅을 돌릴 가능성이 있다면 – Will