Модель программирования
В первые дни компьютерного программирования каждая программа была написана в виде большого монолитного блока, заполненного операторами goto . Каждой программе приходилось управлять собственными входными и выходными данными на различных аппаратных устройствах. По мере развития дисциплины программирования этот монолитный код был организован в процедуры с наиболее часто используемыми процедурами, упакованными в библиотеки для совместного использования и повторного использования.
Язык программирования C поддерживает процедурно-ориентированное программирование. В C процедура main относится ко всем остальным процедурам как черные ящики. Например, процедура main не может узнать, как выполняются процедуры A, B и X. Процедура main вызывает только другую процедуру. В ней нет сведений о том, как эта процедура реализована.
Языки программирования, ориентированные на процедуры, предоставляют простые механизмы для указания и написания процедур. Например, стандартный прототип C-функции ANSI — это конструкция, используемая для указания имени процедуры, типа возвращаемого результата (если таковой имеется), а также числа, последовательности и типа ее параметров. Использование прототипа функции — это формальный способ указания интерфейса между процедурами.
Microsoft RPC основывается на этой модели программирования, позволяя процедурам, сгруппированные по интерфейсам, находиться в процессах, отличных от вызывающего. Microsoft RPC также добавляет более формальный подход к определению процедуры, который позволяет вызывающей и вызываемой подпрограмме принять контракт для удаленного обмена данными и вызова функциональных возможностей. В модели программирования Microsoft RPC традиционные вызовы функций дополняются двумя дополнительными элементами.
- Первый элемент — это файл .idl/.acf, который точно описывает механизм обмена данными и передачи параметров между вызывающим элементом и вызываемой процедурой.
- Второй элемент — это набор API среды выполнения, которые предоставляют разработчикам детализированный контроль над удаленным вызовом процедур, включая аспекты безопасности, управление состоянием на сервере, указание клиентов, которые могут взаимодействовать с сервером, и т. д.