Birkaç yıl önce, .NET Remoting'i kullanan kritik bir iş sistemi tasarladım ve uyguladım. Windows Forms GUI, Windows Hizmeti olarak uygulanan bir sunucu ve bir SQL Server veritabanı olarak uygulanan bir müşterimiz vardı.
Ben giderme/ayıklama/geliştirme için tasarlanmış
, benim ilk tasarım kriterlerinin nedenle bir ben trivially tüm .NET Remoting uygulanmasını kaldırıp masaüstümde bütün sistemi çalıştırabilir olmasıydı. Böylece, tek bir boolean yapılandırma ayarını "false" = kapalı olarak değiştirerek remoting'i devre dışı bırakabilirim.Sonra, .NET Remoting'in genel gider ya da paraziti olmadan tamamen sorun giderebilir, hata ayıklayabilir, geliştirebilirim.
Durumunuz için de bu değerli olabilir. Nitekim, özellikle uygulanması kolay olduğundan, bunun istenen bir özellik olmadığı bir durum düşünemiyorum. Bu nedenle, uygulamak için, yapılandırma ayarını, her bir istemci ve sunucu kodu tarafından, hangi uygulama sınıfının diğer tarafla iletişim kurmak üzere başlatılacağına karar vermek için kullandığını. Tüm iletişim, her iki tarafta iki somut uygulama sınıfına sahip olan özel bir C# arayüzü ile gerçekleşti: Bir sınıf, .NET Remoting kullanarak iletişimi uyguladı, diğer sınıf iletişimi doğrudan süreç içi geçiş (doğrudan çağrılar) olarak uyguladı.
Sadece bir çift sınıf (her bir tarafta bir tane) .NET Remoting hakkında bir şey biliyordu, bu nedenle yalıtım toplamdı. Çoğu zaman, tüm geliştiriciler, daha hızlı ve daha basit olan uzaklaştırma ile çalıştı. İhtiyaç duyduklarında, nadiren de olsa, (çoğunlukla sadece ben, ya da birisi sorun giderme için test/prodüksiyona bağlandığında) onu açtılar. Bu arada
, ben uzak arayüz ölü basit yaptı: kamu Tepki yürütmek (İstek) Bunun ötesinde
, ben de ucu yukarıda belirtilen fırlatma ayıklayıcısını kullanılan ve senin dikkatli olmak gerekir konusunda hemfikir GUI iş parçacığına etkisi.
"RemoteObject, IO işlemek için ThreadPool'u kullanan ThreadPool olmayan iş parçacıkları oluşturur" diyorsunuz. Nedeni bu olamaz (yani ThreadPool parçacıkları açmak için ThreadPool yuvaları bekliyoruz)? – Alan
Neden RemoteObject öğesinin açık olduğu iş parçacığını etkiler? GUI, çağırdığı RemoteObject yöntemine bile giremiyor. – Chris
Bunu sallayabilirseniz, WCF için hendek atmayı deneyin. – Will