WCF Channel и ChannelFactory Кэширование

Поэтому я решил немного повысить производительность в своем приложении WCF и попытаться кэшировать Channels и ChannelFactory. У меня есть два вопроса по поводу всего этого, которые мне нужно прояснить, прежде чем я начну.

1) Должен ли ChannelFactory быть реализован как синглтон?

2) Я не совсем уверен, как кэшировать / повторно использовать отдельные каналы. У вас есть примеры того, как это сделать, которыми вы можете поделиться?

Вероятно, важно отметить, что моя служба WCF развертывается как отдельное приложение с единственной конечной точкой.

РЕДАКТИРОВАТЬ:

Спасибо за ответы. У меня все еще есть несколько вопросов, хотя ...

1) Думаю, я не совсем понимаю, где должно происходить кэширование. Я доставляю клиентский API, который использует этот код, в другой отдел нашей компании. Это кэширование происходит на клиенте?

2) Клиентский API будет использоваться как часть приложения Silverlight, это что-то меняет? В частности, какие механизмы кэширования доступны в таком сценарии?

3) Мне все еще неясно, как устроен метод GetChannelFactory. Если у меня есть только один сервис, должен ли когда-либо создаваться и кэшироваться только один ChannelFactory?

Я до сих пор не реализовал какую-либо функцию кэширования (потому что я совершенно не понимаю, как это должно быть сделано!), Но вот что у меня есть для клиентского прокси:

namespace MyCompany.MyProject.Proxies
{
    static readonly ChannelFactory<IMyService> channelFactory =
        new ChannelFactory<IMyService>("IMyService");

    public Response DoSomething(Request request)
    {
        var channel = channelFactory.CreateChannel();

        try
        {
            Response response = channel.DoSomethingWithService(request);
            ((ICommunicationObject)channel).Close();
            return response;
        }
        catch(Exception exception)
        {
            ((ICommenicationObject)channel).Abort();
        }
    }
}

Ответы на вопрос(3)

Ваш ответ на вопрос