Microsoft RPC (
Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
Remote Procedure Call
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it were a normal (l ...
) is a modified version of
DCE/RPC DCE/RPC, short for "Distributed Computing Environment / Remote Procedure Calls", is the remote procedure call system developed for the Distributed Computing Environment (DCE). This system allows programmers to write distributed software as if it w ...
. Additions include partial support for
UCS-2
The Universal Coded Character Set (UCS, Unicode) is a standard set of characters defined by the international standard ISO/IEC 10646, ''Information technology — Universal Coded Character Set (UCS)'' (plus amendments to that standard), whi ...
(but not
Unicode
Unicode, formally The Unicode Standard,The formal version reference is is an information technology Technical standard, standard for the consistent character encoding, encoding, representation, and handling of Character (computing), text expre ...
) strings, implicit handles, and complex calculations in the variable-length string and structure paradigms already present in DCE/RPC.
Example
The DCE 1.0 reference implementation only allows such constructs as , or possibly . MSRPC allows much more complex constructs such as and even , a common expression in DCOM IDL files.
Use
MSRPC was used by Microsoft to seamlessly create a client/server model in
Windows NT
Windows NT is a proprietary graphical operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems sc ...
, with very little effort. For example, the
Windows Server domain
A Windows domain is a form of a computer network in which all user accounts, computers, printers and other security principals, are registered with a central database located on one or more clusters of central computers known as domain controlle ...
s protocols are entirely MSRPC based, as is Microsoft's
DNS
The Domain Name System (DNS) is a hierarchical and distributed naming system for computers, services, and other resources in the Internet or other Internet Protocol (IP) networks. It associates various information with domain names assigned to ...
administrative tool.
Microsoft Exchange Server
Microsoft Exchange Server is a mail server and calendaring server developed by Microsoft. It runs exclusively on Windows Server operating systems.
The first version was called Exchange Server 4.0, to position it as the successor to the related ...
5.5's administrative front-ends are all MSRPC client/server applications, and its
MAPI
Messaging Application Programming Interface (MAPI) is an API for Microsoft Windows which allows programs to become email-aware. While MAPI is designed to be independent of the protocol, it is usually used to communicate with Microsoft Exchange Ser ...
was made more secure by "proxying" MAPI over a set of simple MSRPC functions that enable encryption at the MSRPC layer without involving the MAPI protocol.
History
MSRPC is derived from the
Distributed Computing Environment
In computing, the Distributed Computing Environment (DCE) software system was developed in the early 1990s from the work of the Open Software Foundation (OSF), a consortium (founded in 1988) that included Apollo Computer (part of Hewlett-Packard fr ...
1.2 reference implementation from the
Open Software Foundation
The Open Software Foundation (OSF) was a not-for-profit industry consortium for creating an open standard for an implementation of the operating system Unix. It was formed in 1988 and merged with X/Open in 1996, to become The Open Group.
Despite ...
, but has been copyrighted by Microsoft. DCE/RPC was originally commissioned by the Open Software Foundation, an industry consortium to set vendor- and technology-neutral open standards for computing infrastructure. None of the
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
vendors (now represented by the
Open Group
The Open Group is a global consortium that seeks to "enable the achievement of business objectives" by developing "open, vendor-neutral technology standards and certifications." It has over 840 member organizations and provides a number of servi ...
), wanted to use the complex DCE or such components as DCE/RPC at the time.
Microsoft's
Component Object Model is based heavily on MSRPC, adding interfaces and inheritance. The marshalling semantics of DCE/RPC are used to serialize method calls and results between processes with separate address spaces, albeit COM did not initially allow network calls between different machines.
With
Distributed Component Object Model
Distributed Component Object Model (DCOM) is a proprietary Microsoft technology for communication between software components on networked computers. DCOM, which originally was called "Network OLE", extends Microsoft's COM, and provides the comm ...
(DCOM), COM was extended to software components distributed across several networked computers. DCOM, which originally was called "Network OLE", extends Microsoft's COM, and provides the communication substrate under Microsoft's COM+ application server infrastructure.
References
*
*{{cite book , title=DCE/RPC over SMB: Samba and Windows NT Domain Internals , author=Luke Kenneth Casson Leighton , year=1999 , publisher=Sams , isbn=1-57870-150-3
External links
MSRPC at MSDN a chapter on MSRPC from a technical article by Jean-Baptiste Marchand.
Network protocols
Remote procedure call
Microsoft application programming interfaces