Aracılığıyla paylaş


uzaktan iletişim aracı arabirimleri tasarlama

Dağıtılmış bileşen nesne modelinin ortaya çıkmasıyla birlikte, özel arabiriminizi yalnızca işlem içinde kullanmayı amaçlasanız bile yeniden değiştirilebilir olması önemlidir.

MIDL, arabirimleriniz için üst bilgi dosyaları oluşturmanın ötesinde bir yoldur. Arabirimlerinizi makine, işlem ve iş parçacığı sınırları arasında kullanmanıza olanak tanıyan uzaktan iletişim için kullanılan bir programlama dilidir. Bu, programınızı müşterilere sunmadan önce BU koşullar altında MIDL tanımlı arabirimlerinizin davranışını doğrulamanız gerektiği anlamına gelir. IDL'nizde bir hata yaptıysanız ve arabirime doğru bir şekilde uzaktan erişilemiyorsa, bu hatayı düzeltmek zor olabilir. Arabiriminizi yeni bir IID ile düzeltmeniz ve geriye dönük uyumluluk için eskisini içinde bırakmanız veya her istemciyi ve her sunucu makinesini aynı anda her yere dönüştürmeniz gerekir.

Arabiriminiz hiçbir zaman işlem dışında kullanılmayacak olsa bile, iş parçacıkları arasında kullanılabilir. Kontrol edilmemiş bir IDL dosyası için en kötü sorun, birden çok tek iş parçacıklı çalışma alanını desteklemeyen işlem içi sunucular için ortaya çıkabilir). İş parçacığı modeli belirtmeyen bir sunucu örtük olarak tek iş parçacıklı kabul edilir. Tek iş parçacıklı olarak işaretlenen her şey, ilk olarak CoInitialize veya CoInitializeExçağrısını yapan iş parçacığına zorlanır. Nesneyi etkinleştiren başka bir iş parçacığıysa, bu tek iş parçacıklı sunucudaki tüm arabirimlerin etkinleştirme iş parçacığına uzaktan erişilebilir hale getirilmesi gerekir; bu da QueryInterface) çağrısına yanıt olarak REGDB_E_IIDNOTREG döndürülmesiyle sonuçlanabilir. Arabiriminizin hem işlemde olduğunu hem de her zaman aynı iş parçacığında çağrılacağını kesin olarak onaylamadığınız sürece, bir noktada uzaktan erişime maruz kalırsınız.

Son olarak, bir arabirim tasarımcısı olarak istemci uygulamalarının arabiriminizi nasıl kullanacağını göz önünde bulundurmanız gerekir. bir arabirimin işlem ve makine sınırları arasında verimli olup olmayacağını belirleyen iki şey vardır: arabirim sınırı boyunca yöntem çağrılarının sıklığı ve belirli bir yöntem çağrısında aktarılacak veri miktarı. COM, işlemler arası ve ağlar arası çağrıları programlar için saydam hale getirse de, adres alanlarında yüksek frekanslı ve yüksek bant genişliğine sahip çağrıları verimli hale getiremez. Bazı durumlarda, normalde yalnızca işlem içi sunucular olarak uygulanacak arabirimler tasarlanırken diğer arabirimler uzaktan kullanım için daha uygundur.