Обзор служб
Службы позволяют пользователю получать доступ к функциональности одного приложения из другого приложения. Приложение, предоставляющее услугу, распространяет операции, которые оно может выполнить на определенном типе данных — например, шифрование текста, оптическое распознавание символов растрового изображения или генерирующийся текст, такой как сообщение дня. Когда пользователь управляет тем определенным типом данных в некотором приложении, пользователь может выбрать надлежащий элемент в меню Services, чтобы воздействовать на текущий выбор данных (или просто вставить новые данные в документ).
В этой главе рассматриваются, как службы обрабатываются, и описывает некоторые демонстрационные службы.
Как работают запросы на обслуживание
Службы выполняются путем передачи данных назад и вперед между приложениями через совместно используемую область монтажа. Обратите внимание на то, что эти два приложения — запрашивающая сторона службы и поставщик услуг — являются абсолютно отдельными; они не работают в пространстве общей памяти. Область монтажа, содержащая данные, является определенной для запроса на обслуживание и обычно не вмешивается в стандарт Скопировать/вставить область монтажа.
Когда пользователь выбирает пункт меню Services, потоки данных как показано на рисунке 1. Текущий выбор копируется в область монтажа, тогда передающуюся приложению поставщика услуг. Если поставщик услуг в настоящее время не работает, это автоматически запускается. Поставщик услуг читает содержание области монтажа и воздействует на нее. Поставщик услуг записывает новые данные обратно к области монтажа, и область монтажа возвращается к исходному приложению. Если существует тот, исходное приложение тогда вставляет содержание области монтажа в документ, заменяя текущий выбор. Приложение поставщика услуг автоматически не выходит в конце запроса на обслуживание.
Не все службы и получают и предоставляют данные. Некоторые службы только получают данные, и другие только предоставляют данные. В этих случаях выполняется только одна из копии и шагов вставки. Службы могут таким образом быть разделены на две группы:
Процессор. Этот тип службы действует на данные. Служба процессора действует на текущий выбор и затем отправляет его в службу. Например, если пользователь выбирает адрес электронной почты в документе TextEdit, и затем выбирает Send Selection из меню Services, TextEdit копирует адрес лица в область монтажа, Почтовые запуски приложения, и Почта вставляет адрес в поле Send нового электронного письма.
Провайдер. Этот тип службы дает данные вызывающему приложению. Например, если пользователь выбирает Capture Full Screen из меню Services, приложение Захвата открывается, берет снимок экрана, то возвраты снимок экрана (данные TIFF в этом случае) к вызывающему приложению. Вызывающее приложение (такое как TextEdit) ответственно за вставку данных в активный документ.
Служба попадает в обе категории, если она обрабатывает текущий выбор и затем обеспечивает заменяющее значение. Например, текстовая служба шифрования берет выбор текущего текста, шифрует его, и затем возвращает зашифрованный текст запрашивающей стороне службы для замены текущего выбора.
Sample Services
Следующие данные показывают службы в действии. Рисунок 2 показывает меню Services из приложения TextEdit. Сделайте Новую Липкую Запись, пример службы процессора. Команда Make New Sticky Note берет текущий выбор в документе TextEdit, открывает новый документ Stickies, и затем вставляет выбор в документ Stickies. Для более удобного использования сочетание клавиш (Command-Shift-Y) определяется для этой службы.
Рисунок 3 показывает другой пример службы процессора. В этом случае команда Open URL копирует выделенный текст, запускает веб-браузер, вставляет выделенный текст в поле расположения браузера, и затем пытается соединиться с тем расположением.
Полный экран получения является службой провайдера. Рисунок 4 показывает документ Фактов Apple, прежде чем будет вызван Полный экран Получения.
Рисунок 5 показывает документ Фактов Apple после того, как Захват взял выстрел текущего экрана и возвратил данные приложению TextEdit. Вспомните, что это - ответственность TextEdit сделать что-то с возвращенными данными. В этом примере TextEdit просто вставляет TIFF в текущий документ в точке вставки.