valdis
May 16, 2012
  2788
(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
How to use CacheTagHelper with content areas in Optimizely CMS 12

I might be going out on a limb here - if you have a better solution, feel very free to share it!  Upgrading your Optimizely web application from .N...

Andreas J | Dec 2, 2022

The 1001st Piece in your 1000 Piece Puzzle: .NET Default Interface Functions

I was recently working with a client who wanted a reasonably large subsystem added to Optimizely that would add automated management to their...

Greg J | Nov 28, 2022 | Syndicated blog

Video Demonstration, creating a CMS12 Alloy Sample Site

Hey All Below you will find a quick video demonstration on how to install a local version of Alloy Sample based on CMS12 / .Net 6. As you will see ...

Minesh Shah (Netcel) | Nov 28, 2022

How to create an admin user I Optimizely CMS – with Episerver CLI

In this blog post I’ll show how to create an admin user for Optimizely CMS in a new environment where you don’t have access to the admin interface.

Ove Lartelius | Nov 28, 2022 | Syndicated blog