Почему COM DLL называют «серверами»? - PullRequest
2 голосов
/ 18 декабря 2011

Почему COM DLL называют «серверами»?

Я понимаю, что COM-клиенты будут использовать COM DLL, создавая объекты и вызывая функции и т.д.предназначен для реального процесса, работающего в ОС.Почему тогда термин «сервер» применяется к COM DLL?

Ответы [ 3 ]

6 голосов
/ 18 декабря 2011

Так определяется модель и терминология COM .Есть клиенты и серверы. Эта терминология не зависит от того, как размещен конкретный COM-сервер , или как конкретный COM-клиент подключается к указанному серверу - , что будет просто запутанным!:)

(Сама DLL не является COM-сервером: скорее, COM DLL содержит COM-сервер.)

В идеальном мире есть нет необходимости различать внепроцессный COM-объект (который является размещенным как «классическое» определение сервера в отдельном процессе) и внутрипроцессный COM-объект.Однако тот факт, что он находится в процессе, не означает, что это прямой доступ, и COM будет маршалировать через границы потоков!(В этом случае физическое проявление «классического сервера» все еще применяется, только на уровне подпроцесса.)

Я думаю это хорошее краткое введение .Я думаю, что лучше сравнивать COM с CORBA , чем просто библиотеки или классы.То есть COM также определяет правила связи .Этого нет в большинстве библиотек - например, классы в JAR-файлах или не-COM DLL - которые фактически содержат просто «код для выполнения».

Счастливое кодирование.


Здесьэто определение COM , которое я считаю уместным:

Компонентная объектная модель + (COM +) - это двоичный стандарт взаимодействия, определенный Microsoft, который задает модель для связи с распределенными объектами. COM + определяет связь, разделяя объекты на клиентов и серверы. Клиент определяется как объект, который хочет получить доступ к определенной службе, тогда как сервер - это объект, который предоставляет услугу. Клиенти сервер может взаимодействовать друг с другом независимо от языка программирования, на котором они определены, и независимо от операционной системы, которая находится между ними.

2 голосов
/ 18 декабря 2011

Термин «сервер» используется в довольно широком смысле, в том смысле, что это компонент, который предоставляет услуги . Тот факт, что конкретный компонент может быть доступен как внутрипроцессная DLL, является деталью реализации.

1 голос
/ 18 декабря 2011

DLL предоставляет услуги клиентам. Таким образом, аналогично модели клиент-сервер в сетях, мы также называем библиотеки DLL серверами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...