アプリ
Netunoは複数のアプリケーションを扱うサーバーであり、ドメインとサブドメインを通じてアプリケーションへのアクセスを振り分けます。
Netunoはバックオフィスの構築を行うため、複数のWebアプリケーションは公開・非公開のいずれにもできます。そのため通常、アプリケーションには常にプライベートアクセスがありますが、公開インターフェースは任意です。
Netunoで複数のアプリケーションを開発する場合、それらは疎結合にすることも、データベースレベルで結合することもできます。
つまり、同じデータベースを複数のアプリケーションで共有することも、アプリケーションごとにデータベースを分けることもできます。
複数データベースにおける疎結合アプリケーション
完全に異なる範囲を持つアプリケーションの場合、同じデータベースを共有する意味はありません。
ニュースレター送信用のアプリケーション、書籍管理用のアプリケーション、配送管理用のアプリケーションがあり、どれも他のアプリケーションに保存された情報を必要としないとします。これらは完全に独立しています。
したがって、同じデータベースを共有する理由はなく、それぞれが独自のデータベースを持つべきです:
このように、どのアプリケーションも他のアプリケーションに保存された情報を認識せず、その動作全体が既存の他のアプリケーションから独立しています。
同一データベース内の結合アプリケーション
情報を共有する必要があるアプリケーションを扱い、大量のデータが存在する可能性がある場合、データベースの共有はパフォーマンス面で最も実行可能な解決策ですが、セキュリティとデータ整合性の面では最善の解決策ではありません。
そのため、セキュリティと整合性の理由から、通常は大規模なWebアプリケーションが作成され、すべてが複雑な1つのアプリケーションに集中し、その専用データベースを使用します。アプリケーションが外部データを必要とする場合は、必要に応じて他のデータベースやWebサービスと連携できます。
この場合、Netunoはすでにこの種のアプリケーション開発に必要なすべての手段を提供していますが、共有データベースを持つアプリケーションにも優れたソリューションを提供します。
主な問題がセキュリティとデータ整合性である場合、Netunoでは複数のアプリケーションが同じデータベースを使用すると、それらは自動的に自分のフォームに関連するテーブルに制限されます。
フォーム、ひいてはそのテーブルを、データベースに結合されている他のアプリケーションと共有できます。
顧客管理用のアプリケーション、仕入先管理用のアプリケーション、請求管理用のアプリケーションがあるシナリオを想像してください。支払うべき仕入先の請求書も、受け取るべき顧客の請求書もあるためです。
顧客アプリケーションは仕入先アプリケーションとデータを共有すべきではありません。これらは別々のアプリケーションです。
しかし請求アプリケーションは、請求書を関連付け、さまざまな状況で回収と支払いを管理できるように、顧客アプリケーションと仕入先アプリケーションの両方と連携して両方のデータを取得する必要があります。
アプリケーション同士が互いの機密データに干渉しないようにするには、アプリケーションごとに異なるデータベースアクセスを使用することも推奨されます。さらに、データベース経由でテーブルへのアクセスを制御し、望ましくない干渉が発生しないようにすることもできます。
その他、Netunoはあるアプリケーションのものと別のアプリケーションのものを分離し、さらにそれらの間で共有されるものを制御します。
各アプリケーションのアドレス
Netunoはドメインとサブドメインを通じてアプリケーションへのアクセスを自動的に振り分けます。
Netunoにリクエストが到着すると、ドメインは次のように処理されます:
Netunoは最初のドットまでを調べ、その名前のアプリケーションが存在するか確認します。
その名前のアプリケーションが存在すれば、そのアプリケーションがリクエストを受け取ります。
その名前のアプリケーションが存在しない場合、リクエストはデフォルトアプリケーション(default)に渡されます。
このドメイン解決は、サブサブドメインの場合にも機能します。例:
つまり、最初のドットまでで、処理するリクエストを受け取るアプリケーションが決まります。
またNetunoでは、アプリケーションの正確なドメインアドレスを定義することもできます。アプリケーションが動作する正確なアドレスを定義するだけです。
ドメインを自動処理する方式を使用すれば、ほとんどの場合でアプリケーションを動作させることができます。それでも、アプリケーションの動作に完全に異なる特定のアドレスが必要な状況がある場合は、その設定で定義する必要があります。