valdis
May 16, 2012
  2708
(0 votes)

Limit assemblies for scanning for Community Entity Attributes (v0.3)

If you are working with EPiServer Relate+ product then you know that there is a extendable entities in the framework that allows you to add new attributes to existing entities to store some additional info if required.

 

Default approach to set and get values from those attributes are using stringly-typed interface, like:

 

  1. return user.GetAttributeValue<string>("SkypeUsername");

 

To get rid of this and to access entity in strongly-typed manner can be accomplished either using:

  1. CustomEntityProvider
  2. Or by using some custom interceptors.

 

Later one is implemented in Geta.Community.EntityAttributeBuilder library. Using this lib you can get access to entities attributes in following manner:

 

  1. var userAttr = user.AsAttributeExtendable<UserAttributes>();
  2. userAttr.FatherName = "John";

 

Library had to scan all the assemblies in current application domain and look for particular types decorated with known attributes for Geta.Community.EntityAttributeBuilder.

Building and using this library in a large projects where assemblies may reach up to 250 and more may cause some startup delays as it was scanning everything and trying to sync attributes. Usually such meta data is stored in few assemblies and no need for extra all assemblies scanning process to find ones.

 

Latest version of Geta.Community.EntityAttributeBuilder library (0.3) is released with feature that limits scanning process to known list of assemblies. One that you can found in <episerver.framework> element <scanAssembly>.

 

So using latest version you can now configure to limit scanning. Add this to your configuration file:

 

  1. <configSections>
  2.   <section name="entityAttributeBuilder" type="Geta.Community.EntityAttributeBuilder.EntityAttributeBuilderConfiguration, Geta.Community.EntityAttributeBuilder" />
  3. </configSections>

 

Add add configuration section:

 

  1. <entityAttributeBuilder>
  2.   <scanAssembly>
  3.     <add assembly="YourAssemblyNameWhereAttributesAreLocated" />
  4.     <add assembly="YourAnotherAssemblyName" />
  5.   </scanAssembly>
  6. </entityAttributeBuilder>

 

Package as usual can be found in nuget.episerver.com (Id: Geta.Community.EntityAttributeBuilder).

 

 

Hope this helps!

May 16, 2012

Comments

valdis
valdis May 16, 2012 01:53 PM

For the site with approx 200 assemblies startup time increased by ~1 sec.

Please login to comment.
Latest blogs
Customizing Property Lists in Optimizely CMS

Generic property lists is a cool editorial feature that has gained a lot of popularity - in spite of still being unsupported (officially). But if y...

Allan Thraen | Oct 2, 2022 | Syndicated blog

Content Delivery API – The Case of the Duplicate API Refresh Token

Creating a custom refresh provider to resolve the issues with duplicate tokens in the DXC The post Content Delivery API – The Case of the Duplicate...

David Lewis | Sep 29, 2022 | Syndicated blog

New Optimizely certifications - register for beta testing before November 1st

In January 2023, Optimizely is making updates to the current versions of our certification exams to make sure that each exam covers the necessary...

Jamilia Buzurukova | Sep 28, 2022

Optimizely community meetup - Sept 29 (virtual + Melbourne)

Super excited to be presenting this Thursday the 29th of September at the Optimizely community meetup. For the full details and RSVP's see the...

Ynze | Sep 27, 2022 | Syndicated blog