Loading...
Area: Optimizely Search & Navigation
ARCHIVED This content is retired and no longer maintained. See the latest version here.

Recommended reading 

Obtaining an IClient instance

The client class can be instantiated directly, but its constructor requires a number of parameters. As these parameters primarily concern configuration details, the Client class also has a parameter-less static method, CreateFromConfig, that returns an instance of the class based on configuration settings. To use the Client.CreateFromConfig method, you must first add a configuration section to your solution, see .NET Client API.

With that in place, you can easily obtain an instance of the Client class:

C#
IClient client = Client.CreateFromConfig();

Managing instances

Creating an instance of the Client class is not a very costly operation but performance may be affected. In many scenarios, you also want to modify the instance prior to usage, meaning you want to instantiate it on application startup. Therefore, it is recommended to only use a single instance per application, or a few long-lived instances with different settings/conventions.

You can accomplish this in several ways, depending on the type of application in which the Client class is being used. In an ASP.NET MVC web site, you can configure the DependencyResolver to automatically inject the instance into controllers. Likewise, an Inversion of Control container can inject the instance into the presenter in a Web Forms site that uses the MVP pattern. In other situations, you can manage the instance in a custom class in a Singleton-like fashion. The following example illustrates how to wire up injection of the Client class into controllers in an ASP.NET site that uses the Autofac MVC integration.

C#
protected void Application_Start()
{
    var builder = new ContainerBuilder();
    builder.Register(x => 
        CreateSearchClient()).As<IClient>().SingleInstance();
    var container = builder.Build();
    DependencyResolver.SetResolver(
        new AutofacDependencyResolver(container));
}

private static Client CreateSearchClient()
{
    var client = Client.CreateFromConfig();
    //Any modifications required goes here    
    return client;
}

Related topics

Do you find this information helpful? Please log in to provide feedback.

Last updated: Nov 16, 2015

Recommended reading