cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
106 lines (83 loc) • 3.62 kB
Markdown
# 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 и глобальной конфигурации.