ライセンスのプロパティ
Babel Licensing のテンプレートの「ライセンスのプロパティ」セクションでは、テンプレートから生成されるライセンスの具体的な属性と制約を定義します。このセクションは、アセンブリ、コンポーネント、フィールド、機能の 4 つの主要なカテゴリに分かれています。各カテゴリは、ライセンスの範囲と特性を定義するうえで、それぞれ異なる役割を持ちます。
アセンブリ
「アセンブリ」タブでは、ライセンスの対象となる .NET アセンブリを指定します。これは、複数のアセンブリで構成されるソフトウェアでは重要で、ソフトウェアのどの部分をライセンスの対象にするかを正確に制御できます。
アセンブリのプロパティ
ライセンステンプレートの各アセンブリエントリには、次の情報が含まれます。
- 名前:アセンブリの名前(「MyCompany.ProductName」など)
- バージョン:アセンブリのバージョン番号(「1.0.0.0」など)
- カルチャ:アセンブリのカルチャ情報(「neutral」または特定のカルチャコードなど)
- 公開キートークン:アセンブリの ID を検証する公開キートークン
バージョンのワイルドカード
Babel Licensing では、アセンブリのバージョンにワイルドカード式を使用できます。これにより、1 つのライセンスで同じアセンブリの複数のバージョンを対象にできます。
- 正確なバージョン:
1.0.0.0(バージョン 1.0.0.0 のみが対象) - メジャーバージョンのワイルドカード:
1.*(1.x.x.x のすべてのバージョンが対象) - メジャーバージョンとマイナーバージョンのワイルドカード:
1.2.*(1.2.x.x のすべてのバージョンが対象) - バージョン範囲:
[1.0.0.0-2.0.0.0](1.0.0.0 から 2.0.0.0 までのバージョンが対象。両端を含む)
例
-
単一のアセンブリ、正確なバージョン:
Name: MyCompany.Core Version: 1.5.2.0 Culture: neutral Public Key Token: a5d85ef2c81d0f8a -
単一のアセンブリ、メジャーリリースのすべてのバージョン:
Name: MyCompany.Core Version: 2.* Culture: neutral Public Key Token: a5d85ef2c81d0f8a -
バージョンルールが異なる複数のアセンブリ:
Name: MyCompany.Core Version: 3.* Culture: neutral Public Key Token: a5d85ef2c81d0f8a Name: MyCompany.Extensions Version: [1.0.0.0-2.5.0.0] Culture: neutral Public Key Token: a5d85ef2c81d0f8a
コンポーネント
「コンポーネント」タブでは、アセンブリ内の特定のコンポーネントやモジュールをライセンスの対象にでき、ライセンスをよりきめ細かく制御できます。コンポーネントは文字列の識別子で表され、アプリケーションのコードでその有無を確認できます。
コンポーネントの用途
コンポーネントは、一般に次のような場合に使用します。
- アプリケーションに、個別にライセンスできる独立したモジュールがある
- ライセンスのレベルに応じて、特定の機能を有効または無効にしたい
- 単一のアセンブリ内で、機能ベースのライセンスを実装する必要がある
プロパティ
- 名前:コンポーネントの文字列識別子(「ReportingEngine」、「AdvancedEditor」など)
例
-
モジュール単位のコンポーネント:
Name: DataAnalysis Name: Reporting Name: Visualization -
機能階層別のコンポーネント:
Name: BasicFeatures Name: AdvancedFeatures Name: EnterpriseFeatures -
連携用のコンポーネント:
Name: SqlServerConnector Name: SapIntegration Name: RestApiClient
アプリケーションのコードでは、Babel Licensing の API を使って、特定のコンポーネントがライセンスされているかどうかを確認できます。
if (license.Components.Contains("AdvancedFeatures"))
{
// Enable advanced features
}フィールド
「フィールド」タブでは、ライセンステンプレートにカスタムのキーと値のペアを追加できます。これらのフィールドには、ライセンスの検証、追跡、業務上の目的に役立つ追加情報を格納できます。
一般的な用途
- ライセンスのカスタムパラメーターを定義する
- 機能用の暗号化されたパスワードを格納する
- ライセンス管理用のメタデータを含める
プロパティ
- 名前:フィールドの識別子(「Metadata」、「ContractNumber」など)
- 値:フィールドに関連付けられた値
例
-
アプリケーション固有のフィールド:
Name: MaxConcurrentProjects Value: 10 Name: StorageQuota Value: 500GB -
機能の構成用フィールド:
Name: EncryptionLevel Value: AES256 Name: ApiRateLimit Value: 1000
アプリケーションは、Babel Licensing の API を通じてこれらのフィールドにアクセスできます。
string encryptionLevel = license.Fields["EncryptionLevel"].Value;
int apiRateLimit = int.Parse(license.Fields["ApiRateLimit"].Value);機能
「機能」タブでは、ライセンスによってアプリケーション内で有効になる特定の機能を定義します。単純な文字列識別子であるコンポーネントとは異なり、機能には、その機能の構成に使用できる追加データを含めることができます。
プロパティ
- 名前:機能の識別子(「CloudSync」、「BatchProcessing」など)
- データ:機能に関連付けられた任意のバイナリデータ。構成パラメーター、機能固有のキー、その他のデータを格納できます
例
-
基本的な機能の有効化:
Name: AdvancedReporting Name: DataExport Name: CustomBranding -
構成データ付きの機能:
Name: SecurityModule Data: [Encrypted configuration data] Name: DatabaseConnectors Data: [Serialized list of allowed connectors] -
階層別の機能:
Name: UserQuota Data: [Serialized value representing maximum users] Name: PerformanceTier Data: [Encoded performance settings]
アプリケーションでは、機能が利用できるかどうかを確認し、関連付けられたデータを取得できます。
if (license.Features.Any(f => f.Name == "AdvancedReporting"))
{
// Enable advanced reporting features
}
var securityConfig = license.Features
.FirstOrDefault(f => f.Name == "SecurityModule")?.Data;
if (securityConfig != null)
{
// Initialize security module with the provided configuration
}統合の方針
ライセンステンプレートを設計するときは、これら 4 つのプロパティカテゴリがどのように連携するかを考慮してください。
- アセンブリは、どのソフトウェアコンポーネントをライセンスの対象にするかという範囲を定義します
- コンポーネントは、それらのアセンブリ内にモジュール性をもたらします
- フィールドは、カスタムの情報とパラメーターを追加します
- 機能は、特定の機能を有効にします。構成データを伴う場合もあります
これらのプロパティを慎重に構成することで、ソフトウェアの使用と配布を管理しながら、顧客のさまざまなニーズ、ビジネスモデル、製品エディションに対応できる柔軟なライセンス体系を作成できます。
Babel Licensing のライセンスのプロパティに対するこの包括的なアプローチにより、知的財産を保護しながら、顧客にスムーズな体験を提供する高度なライセンス戦略を実装できます。