# Service Registry - Реестр сервисов и внедрение зависимостей

Service Registry в CSElement предоставляет централизованную систему управления сервисами с поддержкой внедрения зависимостей и глобальной конфигурации.

## 🎯 Основные возможности

- **Централизованный реестр сервисов** - единая точка доступа ко всем сервисам
- **Внедрение зависимостей** - автоматическое разрешение зависимостей
- **Lifecycle management** - управление жизненным циклом сервисов
- **Глобальная конфигурация** - централизованная настройка всех систем

## 🚀 Быстрый старт

```typescript
import { ServiceRegistry } from 'cs-element';

// Доступ к встроенным сервисам
const persistence = services.persistence;
const reactivity = services.reactivity;
const history = services.history;
const registry = services.registry;

// Глобальная конфигурация
services.configureReactivity({
  autoDispose: true,
  debug: true,
  warnMemoryLeaks: true
});

services.configurePersistence({
  adapter: 'indexeddb',
  autoSave: true,
  compression: true
});

// Работа с Element Registry
const allElements = services.registry.getAllElements();
const userElements = services.registry.getElementsByType('User');
const element = services.registry.getElementById('element-123');

// Поиск элементов
const results = services.registry.search({
  name: 'John',
  type: 'User',
  active: true
});
```

## 📚 Подробное руководство

### Встроенные сервисы

```typescript
// Persistence Manager
services.persistence.save(element);
services.persistence.load('element-id');
services.persistence.clear();

// Reactivity Manager
services.reactivity.createComputed(() => element.data.value * 2);
services.reactivity.watch(() => element.data, callback);

// History Manager
services.history.undo();
services.history.redo();
services.history.createSnapshot();

// Element Registry
services.registry.register(element);
services.registry.unregister('element-id');
services.registry.clear();
```

### Пользовательские сервисы

```typescript
// Регистрация пользовательского сервиса
class NotificationService {
  constructor() {
    this.subscribers = new Map();
  }
  
  subscribe(channel, callback) {
    if (!this.subscribers.has(channel)) {
      this.subscribers.set(channel, []);
    }
    this.subscribers.get(channel).push(callback);
  }
  
  notify(channel, data) {
    const callbacks = this.subscribers.get(channel) || [];
    callbacks.forEach(callback => callback(data));
  }
}

// Регистрация в реестре
services.register('notifications', new NotificationService());

// Использование
const notifications = services.get('notifications');
notifications.subscribe('user-created', (user) => {
  console.log('New user created:', user.name);
});
```

Service Registry обеспечивает централизованное управление всеми сервисами CSElement с поддержкой dependency injection и глобальной конфигурации. 