-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathipc.html
More file actions
520 lines (412 loc) · 30.6 KB
/
ipc.html
File metadata and controls
520 lines (412 loc) · 30.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>IPC(プロセス間通信) | SOCKET-MANAGER Framework For PHP</title>
<meta name="description" content="SOCKET-MANAGER Framework の IPC(プロセス間通信)設計を解説。UNIT/Queue/Module の統一モデルにより IPC を特別扱いせず実装でき、INET ベースの高速通信やハイパフォーマンスモードとの連携でネイティブ級の低レイテンシ IPC を実現。" />
<meta name="keywords" content="SOCKET-MANAGER, IPC, プロセス間通信, INET ベース, 高速 IPC, ネイティブ IO, ハイパフォーマンスモード, SimpleSocket, SocketManager, RuntimeManager, CUEI, イベント駆動, PHP フレームワーク, マイクロサービス, 非同期処理, モジュール共存" />
<link rel="canonical" href="https://socket-manager.github.io/document/ipc.html" />
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LF9W695NNW"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LF9W695NNW');
</script>
<link rel="icon" href="https://socket-manager.github.io/document/favicon.ico" type="image/x-icon" />
<link type="text/css" rel="stylesheet" href="./css/common.css" media="all" />
<script src="./js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="./js/common.js"></script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "SOCKET-MANAGER Framework - IPC Architecture and Inter-Module Communication",
"description": "SOCKET-MANAGER Framework の IPC(プロセス間通信)設計を解説。UNIT/Queue/Module の統一モデルにより IPC を特別扱いせず実装でき、INET ベースの高速通信やハイパフォーマンスモードとの連携でネイティブ級の低レイテンシ IPC を実現。",
"keywords": "SOCKET-MANAGER, IPC, プロセス間通信, INET ベース, 高速 IPC, ネイティブ IO, ハイパフォーマンスモード, SimpleSocket, SocketManager, RuntimeManager, CUEI, イベント駆動, PHP フレームワーク, マイクロサービス, 非同期処理, モジュール共存",
"articleSection": [
"IPC Architecture",
"Inter-Process Communication",
"INET-Based High-Speed IPC",
"CUEI Architecture",
"Event-Driven Architecture",
"SimpleSocket Architecture",
"High Performance Mode Integration",
"PHP Real-time Communication",
"Advanced Architecture"
],
"author": {
"@type": "Person",
"name": "SOCKET-MANAGER開発チーム"
},
"publisher": {
"@type": "Organization",
"name": "SOCKET-MANAGER",
"logo": {
"@type": "ImageObject",
"url": "https://socket-manager.github.io/document/logo.png",
"width": 355,
"height": 50
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://socket-manager.github.io/document/ipc.html"
},
"url": "https://socket-manager.github.io/document/ipc.html",
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Framework Top",
"item": "https://socket-manager.github.io/document/"
},{
"@type": "ListItem",
"position": 2,
"name": "IPC(プロセス間通信)",
"item": "https://socket-manager.github.io/document/ipc.html"
}]
},
"isPartOf": {
"@type": "WebSite",
"name": "フレームワークのご紹介",
"url": "https://socket-manager.github.io/document/"
}
}
</script>
</head>
<body>
<div class="layout">
<div class="menu" role="navigation" aria-label="ページメニュー">
<h2 class="menu-title">SOCKET-MANAGER</h2>
<h4 class="menu-reference menu-page-title-bottom"><a href="./reference/" target="_blank">>> Reference</a></h4>
<h2 class="menu-label">MAIN-MENU</h2>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./">▶フレームワークのご紹介</a></h3>
<h3 class="menu-page-title-link"><a href="./event-handler.html">▶イベントハンドラについて</a></h3>
</div>
<h3 class="menu-label-sub">IMPLEMENT</h3>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./init-class.html">▶初期化クラス</a></h3>
<h3 class="menu-page-title-link"><a href="./unit-parameter.html">▶UNITパラメータクラス</a></h3>
<h3 class="menu-page-title-link"><a href="./protocol-unit.html">▶プロトコルUNITクラス</a></h3>
<h3 class="menu-page-title-link"><a href="./command-unit.html">▶コマンドUNITクラス</a></h3>
<h3 class="menu-page-title-link"><a href="./main.html">▶メイン処理クラス</a></h3>
<h3 class="menu-page-title-link"><a href="./setting.html">▶設定ファイル</a></h3>
<h3 class="menu-page-title-link"><a href="./message.html">▶メッセージファイル</a></h3>
</div>
<div class="menu-line"></div>
<div class="menu-text">
<h3 class="menu-page-title-link-for-runtime-manager"><a href="./runtime-manager/" target="_blank">>> ランタイムライブラリ</a></h3>
<h3 class="menu-page-title-link-for-runtime-manager"><a href="./simple-socket/" target="_blank">>> シンプルソケット機能</a></h3>
</div>
<h3 class="menu-label-sub">ADVANCED</h3>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./architecture.html">▶アーキテクチャ</a></h3>
<h3 class="menu-page-title-link"><a href="./event.html">▶イベント駆動アーキテクチャ</a></h3>
<h3 class="menu-page-title">▼IPC(プロセス間通信)</h3>
<ul>
<li><a href="./ipc.html#begin">はじめに</a></li>
</ul>
<ul>
<li><a href="./ipc.html#module">モジュール構造と IPC の関係</a></li>
</ul>
<ul>
<li><a href="./ipc.html#concept">IPC を特別扱いしない思想</a></li>
</ul>
<ul>
<li><a href="./ipc.html#cuei-ipc">CUEI各要素との相関関係</a></li>
</ul>
<ul>
<li><a href="./ipc.html#strategy">依存性注入と戦略パターン</a></li>
</ul>
<ul>
<li><a href="./ipc.html#microservice">マイクロサービスとの親和性</a></li>
</ul>
<ul>
<li><a href="./ipc.html#launcher">Launcher 統合管理</a></li>
</ul>
<ul>
<li><a href="./ipc.html#simple">SimpleSocket の横断的利用</a></li>
</ul>
<ul>
<li><a href="./ipc.html#example">IPC の実例</a></li>
</ul>
<ul>
<li><a href="./ipc.html#clean">ビジネスロジックが汚れない</a></li>
</ul>
<ul>
<li><a href="./ipc.html#rest">REST-API 環境との関係</a></li>
</ul>
<ul>
<li><a href="./ipc.html#last">おわりに</a></li>
</ul>
<h3 class="menu-page-title-link"><a href="./multi-server.html">▶マルチサーバーの構成</a></h3>
<h3 class="menu-page-title-link"><a href="./tcp-and-udp.html">▶TCP/UDP通信について</a></h3>
<h3 class="menu-page-title-link"><a href="./laravel.html">▶Laravelと連携する</a></h3>
<h3 class="menu-page-title-link"><a href="./system-setting.html">▶システム設定ファイル</a></h3>
<h3 class="menu-page-title-link"><a href="./system-setting.html">▶カスタムコマンド作成機能</a></h3>
<h3 class="menu-page-title-link"><a href="./high-performance.html">▶ハイパフォーマンスモード</a></h3>
<h3 class="menu-page-title-link"><a href="./scale-test.html">▶実運用スケールベンチマーク</a></h3>
<h3 class="menu-page-title-link"><a href="./itil.html">▶技術版 ITIL としての CUEI/O</a></h3>
</div>
<h3 class="menu-label-sub">OTHER-PROJECT</h3>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./new-project.html">▶新規開発環境</a></h3>
<h3 class="menu-page-title-link"><a href="./websocket.html">▶Websocketサーバー開発環境</a></h3>
<h3 class="menu-page-title-link"><a href="./dev-ops.html">▶フレームワークのDevOps環境</a></h3>
</div>
<div class="menu-line"></div>
<div class="menu-text">
<h3 class="menu-page-title-link-for-minecraft"><a href="./minecraft-contents/" target="_blank">>> マインクラフト専用環境</a></h3>
<h3 class="menu-page-title-link-for-launcher"><a href="./launcher/" target="_blank">>> GUI & CLI ランチャー</a></h3>
<h3 class="menu-page-title-link-for-rest-api"><a href="./rest-api/" target="_blank">>> REST-APIサーバー開発環境</a></h3>
</div>
<h2 class="menu-label">EXTRA-MENU</h2>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./extra-demo.html">▶デモサーバーの種類</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-demo-command.html">▶デモのコマンド仕様</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-demo-setting.html">▶デモの設定ファイル</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-minecraft.html">▶マインクラフトの通信仕様</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-close-frame.html">▶切断フレームの検証</a></h3>
</div>
<h2 class="menu-label">PHP-TECHNIQUE</h2>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./php-pass-by-reference.html">▶参照渡し</a></h3>
<h3 class="menu-page-title-link"><a href="./php-phpdoc.html">▶PHPDocのフォーマット</a></h3>
</div>
<div class="menu-dummy-for-framework"></div>
</div>
<div class="main" role="main">
<h1>【IPC(プロセス間通信)】</h1>
<a id="begin"></a>
<h2 class="subtitle">はじめに</h2>
<div class="text-block">
SOCKET-MANAGER Framework は、TCP / UDP / WebSocket / 独自プロトコルといった
<strong>異なる通信方式を同一プロセス内で共存させる</strong> という特徴的なアーキテクチャを持っています。<br /><br />
この構造は単なる「複数プロトコル対応」ではなく、
<strong>IPC(プロセス間通信)を特別扱いせずに自然に実現できる</strong> という大きな利点につながります。<br /><br />
本ページでは、SOCKET-MANAGER Framework の基盤思想の一部である
<strong>IPC(プロセス間通信)とモジュール構造の関係</strong> を解説します。<br />
フレームワーク全体の構成については、
<font><a href="./">▶フレームワークのご紹介</a></font> をご覧ください。<br />
</div><br />
<a id="module"></a>
<h2 class="subtitle">モジュール構造と IPC の関係</h2>
<div class="text-block">
SOCKET-MANAGER Framework は、
<a class="embedded-link" href="./event.html">イベント駆動アーキテクチャ</a>で説明しているように
<strong>UNIT(処理単位)/Queue(状態遷移)/Module(機能単位)</strong>
の三層構造で成り立っています。<br /><br />
この三層構造の上で、フレームワーク本体には次の
<strong>「モジュール管理クラス」</strong> が存在します。<br /><br />
<ul>
<li><strong>SocketManager</strong>(プロトコル部・コマンド部を統合管理)</li>
<li><strong>RuntimeManager</strong>(ランタイム UNIT 群を管理)</li>
<li><strong>SimpleSocketGenerator</strong>(SimpleSocket 系列を生成)</li>
</ul>
これらは「Module」そのものではなく、
<strong>複数の UNIT / Queue を束ねて管理する上位レイヤーのクラス</strong> です。<br /><br />
<h3 class="underline">UNIT / Queue を利用する管理クラスと、利用しない管理クラス</h3>
<strong>SocketManager</strong><br />
・プロトコル部:プロトコル処理を担う Queue の集合<br />
・コマンド部:サーバーコンテンツ処理を担う Queue の集合<br />
→ <strong>UNIT / Queue を前提としたステートマシン構造</strong><br /><br />
<strong>RuntimeManager</strong><br />
・ランタイム UNIT:常駐型アプリの処理を担う Queue の集合<br />
→ <strong>UNIT / Queue を前提としたステートマシン構造</strong><br /><br />
<strong>SimpleSocketGenerator</strong><br />
・SimpleSocketTcpServer / SimpleSocketTcpClient / SimpleSocketUdp を生成<br />
→ <strong>UNIT / Queue を必要としない軽量通信モジュールを生成</strong><br /><br />
このように、
<strong>SocketManager と RuntimeManager はステートマシン上で動作する UNIT / Queue の集合体</strong> であり、
<strong>SimpleSocket 系列はステートマシンに依存しない軽量通信モジュール</strong> です。<br /><br />
これらの管理クラスが生成するモジュールは
<strong>同一プロセス内で自由に組み合わせて動作</strong> できるため、<br />
IPC(プロセス間通信)も「特別な仕組み」ではなく、
<strong>必要なモジュールを複数プロセスに配置するだけで自然に成立する通信形態</strong> として扱えます。<br />
</div><br />
<a id="concept"></a>
<h2 class="subtitle">IPC を“特別扱いしない”という設計思想と INET ベース高速通信</h2>
<div class="text-block">
一般的なフレームワークでは、IPC は以下のように「別世界」として扱われがちです。<br /><br />
<ul>
<li>専用の IPC ライブラリ</li>
<li>専用のメッセージング層</li>
<li>専用のプロトコル</li>
<li>専用のハンドラ</li>
</ul>
しかし SOCKET-MANAGER Framework では、
<strong>IPC も通常の通信モジュールの一つ</strong> として扱います。<br /><br />
つまり、
<strong>IPC 専用の仕組みを作らなくても、通常の通信モジュールを複数プロセスに配置するだけで IPC が成立する</strong>
という構造になっています。<br /><br />
この設計により、外部ミドルウェアに依存せず
<strong>INET ベースの軽量な通信経路をそのまま利用できるため、プロセス間で高速かつ低レイテンシなデータ転送が可能</strong>
になります。<br /><br />
専用ブローカーやメッセージング層を経由しないため遅延要因が少なく、
<strong>リアルタイム性が求められる用途にも適した IPC 基盤</strong> を実現しています。<br />
</div><br />
<a id="cuei-ipc"></a>
<h2 class="subtitle">CUEI 各要素との相関関係</h2>
<div class="text-block">
IPC(プロセス間通信)は CUEI アーキテクチャにおける
<strong>I(IPC)</strong> の役割を担う要素です。<br /><br />
SOCKET-MANAGER Framework では、プロトコル部とコマンド部が
CycleDrivenManager により統一インターフェースで扱われるため、
IPC も通常の通信モジュールと同じ抽象モデルで実現できます。<br /><br />
また、イベント駆動アーキテクチャ(E)の上で動作するため、
<strong>サーバー本体のモジュールと IPC モジュールを同じイベントループ内で共存</strong>
させることが可能です。<br /><br />
<ul>
<li><strong>C(Communication)</strong>:プロトコル部が抽象化され、IPC も通常通信と同じモデルで扱える</li>
<li><strong>U(Union)</strong>:共有基盤(UNITパラメータ)がプロセス間でも統一的に利用される</li>
<li><strong>E(Event)</strong>:複数モジュールを同一イベントループで安全に共存させる</li>
<li><strong>I(IPC)</strong>:追加の仕組みなしでプロセス間通信を構成できる</li>
</ul><br />
IPC が INET ベースで動作するため、
<strong>CUEI の I はリアルタイム性の高い通信基盤として機能</strong> します。<br /><br />
イベントループとステートマシンによる E(Event)の詳細については、
<font><a href="./event.html">▶イベント駆動アーキテクチャ</a></font> を参照してください。<br />
</div><br />
<a id="strategy"></a>
<h2 class="subtitle">依存性注入と戦略パターン</h2>
<div class="text-block">
フレームワーク本体は、
<strong>ストラテジーパターンを基盤とした依存性注入(DI)</strong> を採用しています。<br /><br />
これにより、以下のような柔軟な構成が可能になります。<br /><br />
<ul>
<li>プロトコル部・コマンド部をクラス単位で自由に差し替え</li>
<li>同一インターフェースで複数モジュールを共存</li>
<li>IPC 用モジュールを必要なプロセスにだけ注入</li>
</ul>
この DI 構造は、IPC を「後付けの特殊機能」ではなく、
<strong>モジュール構成の一部として自然に扱える</strong> という大きな利点を生みます。<br /><br />
なお、依存性注入(DI)やインターフェース設計の思想については、
PHP-FIG が策定する PSR-11(Container Interface)も参考になります:<br />
<a href="https://www.php-fig.org/psr/psr-11/" target="_blank" rel="noopener">https://www.php-fig.org/psr/psr-11/</a><br />
</div><br />
<a id="microservice"></a>
<h2 class="subtitle">マイクロサービスとの親和性</h2>
<div class="text-block">
モジュールをプロセス単位で自由に構成できるため、
SOCKET-MANAGER Framework は
<strong>マイクロサービスアーキテクチャと非常に相性が良い</strong> という特徴があります。<br /><br />
<ul>
<li>サービスごとに異なるプロトコルを採用可能</li>
<li>IPC モジュールを介してサービス間通信を統一</li>
<li>プロセス単位でスケールアウトが容易</li>
<li>Launcher による複数サーバーの一元管理</li>
</ul>
これらはすべて、
<strong>UNIT / Queue / Module</strong> という統一抽象モデルがあるからこそ成立する設計です。<br /><br />
また、イベント駆動型のサービス連携という観点では、
PSR-14(Event Dispatcher)も関連する設計思想として参考になります:<br />
<a href="https://www.php-fig.org/psr/psr-14/" target="_blank" rel="noopener">https://www.php-fig.org/psr/psr-14/</a><br />
</div><br />
<a id="launcher"></a>
<h2 class="subtitle">Launcher 統合管理</h2>
<div class="text-block">
SOCKET-MANAGER Launcher は、フレームワーク本体と同じく
<strong>UNIT / Queue を基盤としたステートマシン構造</strong> を採用しています。<br /><br />
そのため、サービス群を Launcher から統一的に管理でき、
<strong>システム全体をステータス管理対象として扱える</strong> という強みがあります。<br /><br />
<ul>
<li>各サービスの起動・停止・再起動を一元管理</li>
<li>サービスごとのステータスを統一フォーマットで監視</li>
<li>IPC を利用したサービス間連携を俯瞰的に把握</li>
<li>サービス群を「統合ステートマシン」として運用可能</li>
</ul>
Launcher は CUEI/O アーキテクチャにおける
<strong>“/O(Operation)”</strong> に該当し、
開発フェーズで統合された CUEI の要素を
<strong>運用フェーズで統合的に管理する役割</strong> を担います。<br /><br />
CUEI/O 全体の構造については、
<font><a href="./architecture.html">▶アーキテクチャ</a></font> を参照してください。<br />
</div><br />
<a id="simple"></a>
<h2 class="subtitle">SimpleSocket の横断利用</h2>
<div class="text-block">
SimpleSocket は以下の 2 つの使い方ができます。<br /><br />
<h3 class="underline">1. 独立モジュールとして動作</h3>
Launcher のカスタムモニタリング機能がこの例です。<br /><br />
<h3 class="underline">2. 他モジュールの UNIT 内で動作</h3>
<code>$ctx->simple_socket</code> により、
SocketManager や RuntimeManager の UNIT 内から
SimpleSocket の送受信機能を直接利用できます。<br /><br />
SimpleSocket は UNIT / Queue を必要としないためオーバーヘッドが少なく、
<strong>IPC の高速化や軽量な補助通信に適したモジュール</strong> として利用できます。<br />
</div><br />
<a id="example"></a>
<h2 class="subtitle">IPC の実例</h2>
<div class="text-block">
フレームワークのデモでは、Minecraft 統合版(Bedrock Edition)との連携を含む
以下の IPC 構成を実現しています。<br /><br />
<ul>
<li>TCP 版 IPC</li>
<li>UDP 版 IPC</li>
<li>Web ブラウザ同士の宛先指定メッセージ送受信</li>
<li>Web ブラウザ ⇔ Minecraft 統合版 間の宛先指定メッセージ送受信</li>
</ul>
Minecraft 側では、ゲーム内の <strong>「/w(whisper)」</strong> 機能を利用してプレイヤーへ通知を行っています。<br /><br />
Minecraft 統合版の公式ドキュメントはこちら:<br />
<a href="https://learn.microsoft.com/ja-jp/minecraft/creator/" target="_blank" rel="noopener">
Minecraft 統合版クリエイタードキュメント
</a><br /><br />
これらはすべて、
<strong>IPC 専用の仕組みではなく、通常の通信モジュールを複数プロセスに配置しただけ</strong>
で成立しています。<br />
</div><br />
<a id="clean"></a>
<h2 class="subtitle">ビジネスロジックが汚れない理由</h2>
<div class="text-block">
IPC をモジュールとしてカプセル化できるため、
ビジネスロジック側は以下のメリットを得ます。<br /><br />
<ul>
<li>IPC の実装がアプリロジックに混ざらない</li>
<li>モジュール単位で差し替え可能</li>
<li>テストや保守が容易</li>
<li>プロトコル変更にも強い</li>
</ul>
これは <strong>UNIT / Queue / Module</strong> という
統一された抽象モデルがあるからこそ実現できる設計です。<br />
</div><br />
<a id="rest"></a>
<h2 class="subtitle">REST-API との関係</h2>
<div class="text-block">
REST-API 環境では、SocketManager の特定構成をプリセット化しているため、
IPC の実装方法は REST-API 側の
<font><a href="./rest-api/parallel.html" target="_blank" rel="noopener">▶Parallelクラス実装</a></font>
ページで説明しています。<br /><br />
本ページでは、
<strong>フレームワーク本体としての IPC の思想と構造</strong> を扱います。
</div><br />
<a id="last"></a>
<h2 class="subtitle">おわりに</h2>
<div class="text-block">
IPC は SOCKET-MANAGER Framework のアーキテクチャから自然に導かれる仕組みであり、
特別なミドルウェアや専用プロトコルを必要としない点が大きな特徴です。<br /><br />
モジュールを複数プロセスに配置するだけで IPC が成立し、
SimpleSocket を利用した軽量かつ高速な通信も同一イベントループ内で実現できます。<br /><br />
さらに、IPC は「通信モジュールの一つ」として扱えるため、
<strong>
ハイパフォーマンスモード(FFI + 独自 IO ドライバ)と組み合わせることで、
プロセス間通信でもネイティブ IO による高速性をそのまま享受できます。
</strong><br />
これは、外部ブローカーを経由しない INET ベース IPC の強みと相性が良く、
大量接続・高頻度メッセージングでも低レイテンシを維持できる構造です。<br /><br />
ハイパフォーマンスモードの詳細は
<font><a href="./high-performance.html">▶ハイパフォーマンスモード</a></font>
をご覧ください。<br /><br />
また、CUEI/O アーキテクチャや Launcher による統合管理と組み合わせることで、
マルチサーバー構成・サービス連携・リアルタイム処理など、
より高度なシステム構築にも柔軟に対応できます。<br /><br />
追加の構成例や応用的な設計については、
ADVANCED カテゴリの各ページをご参照ください。<br />
</div><br />
</div>
</div>
</body>
</html>