Многие языки имеют встроенную технологию RPC. Java RMI .NET удаленное взаимодействие В древности было много попыток:
- Архитектура брокера запросов общедоступных объектов Corba (Common ObjectRequest Broker Architecture), техническая спецификация общей структуры брокера запросов объектов, предложенная организацией OMG в 1991 году. Базовая структура основана на объектно-ориентированной модели и состоит из языка определения интерфейса OMG (OMG IDL), посредника запросов объектов (ORB) и стандартного протокола IIOP (Internet Inter ORB Protocol, также известного как сетевой протокол обмена ORB). состоит из 3-х ключевых модулей.
- COM (компонентная объектная модель, модель компонентных объектов) — это компонентная технология, предложенная Microsoft в 1993 году. Это независимая от платформы, не зависящая от языка, прозрачная по местоположению и поддерживаемая сетью промежуточная технология. Божественная книга «Сущность COM» в сознании многих программистов старшего поколения.
1 Рассмотрим пользователя
Определить интерфейс процесса
Клиент использует сгенерированный прокси-объект-заглушку
2 Дизайн клиента
Клиент создает прокси-объект для интерфейса процесса.
Фабрика клиентских прокси, которая может генерировать прокси-объекты интерфейсов с помощью динамического прокси JDK (или реализации AOP).
- ClientStubInvocationHandler
- Фиксирован ли протокол сообщений?При чем тут это?
Глядя на широту поддержки протоколов фреймворком, если он поддерживает несколько протоколов, он будет гибким и изменяющимся, он связан с конкретными службами, Поставщик услуг может выбрать протокол 1, а поставщик услуг B может выбрать протокол 2.
- Какой протокол сообщений использует служба? Откуда берется эта информация?
Из полученной служебной информации требуется средство поиска служебной информации.
把发现者设计出来, 要求:可灵活支持多种发现机制
- Если вы хотите поддерживать несколько протоколов, как должен быть спроектирован класс?
проблема: ➢ Какие параметры и возвращаемые значения должны быть определены для методов маршалинга и демаршаллинга? ➢ Операционными объектами маршалинга и демаршаллинга являются запросы и ответы, причем содержание запросов и ответов различно. Удовлетворены ли два метода сортировки и десортировки?
Уровень клиентского протокола разработки
Классы запросов и ответов, определяющие стандарты фреймворка
- Расширение уровней протокола до четырех
Протокол сообщений независим как уровень (требуются и клиент, и сервер)
Сетевой уровень
отправить запрос, получить ответ
Чтобы инициировать сетевой запрос, вы должны знать адрес службы
- Полная диаграмма классов клиента
Во время реализации уровень протокола включает в себя важную концепцию
- Сериализация и десериализация параметров
3 Сервер дизайна
3.1 RPCServer
Когда приходит запрос клиента, серверу сначала нужно получить запрос через RPCServer.
- RPCServer
3.2 Мышление
Что еще нужно сделать после того, как RPCServer получит запрос клиента?
Сетевой уровень обеспечивает многопоточность в RPCServer для обработки запросов, а уровень протокола сообщений повторно использует дизайн клиента.
(разработать请求处理类
, чтобы завершить работу над сетевым уровнем. )
3.3 RequestHandler
После того, как RPCServer получает запрос, он передает запрос RequestHandler для обработки.
RequestHandler вызывает уровень протокола, чтобы преобразовать сообщение запроса в объект запроса, а затем вызывает процедуру!
человеческая пытка
➢ Как RequestHandler получает объект процесса? ➢ Что в запросе? ➢ Имя службы, имя метода, тип параметра, значение параметра ➢ Требуется ли модуль регистрации процессов?
Ознакомиться с дизайном после
➢过程注册模块
: Разрешить пользователям регистрировать свои процедуры в среде RPC.
➢过程暴露模块
: Если вы хотите опубликовать (представить) регистрацию службы, раскрытие может быть реализовано тем же классом
- Сетевой уровень, реализованный в RPCServer: Netty, с использованием RequestHandler
- Модуль ServiceRegister реализует регистрацию и публикацию службы.
- Реализовать обработку протокола сообщений и вызовы процедур в RequestHandler.
Код
- Во-первых, пользователю необходимо установить свой порт и протокол.