SQL Express для производства?

Прошло некоторое время с момента запроса (и ответа), но другой вариант - переопределить заголовок Accept на сервере во время обработки запроса с помощью MessageHandler, как показано ниже:

public class ForceableContentTypeDelegationHandler : DelegatingHandler
{
    protected async override Task<HttpResponseMessage> SendAsync(
                HttpRequestMessage request,
                CancellationToken cancellationToken)
    {
        var someOtherCondition = false;
        var accHeader = request.Headers.GetValues("Accept").FirstOrDefault();
        if (someOtherCondition && accHeader.Contains("application/xml"))
        {
            request.Headers.Remove("Accept");
            request.Headers.Add("Accept", "application/json");
        }
        return await base.SendAsync(request, cancellationToken);
    }
}

Где someOtherCondition может быть любым, включая тип браузера и т. д. Это было бы для условных случаев, когда только иногда мы хотим переопределить согласование содержимого по умолчанию. В противном случае, в соответствии с другими ответами, вы просто удалите ненужный форматировщик из конфигурации.

Вам обязательно нужно будет его зарегистрировать. Вы можете сделать это глобально:

  public static void Register(HttpConfiguration config) {
      config.MessageHandlers.Add(new ForceableContentTypeDelegationHandler());
  }

или по маршруту по маршруту:

config.Routes.MapHttpRoute(
   name: "SpecialContentRoute",
   routeTemplate: "api/someUrlThatNeedsSpecialTreatment/{id}",
   defaults: new { controller = "SpecialTreatment" id = RouteParameter.Optional },
   constraints: null,
   handler: new ForceableContentTypeDelegationHandler()
);

И поскольку это обработчик сообщений, он будет работать как на запросе, так и на конец конвейера конвейера, как и HttpModule. Таким образом, вы можете легко подтвердить переопределение с помощью настраиваемого заголовка:

public class ForceableContentTypeDelegationHandler : DelegatingHandler
{
    protected async override Task<HttpResponseMessage> SendAsync(
                HttpRequestMessage request,
                CancellationToken cancellationToken)
    {
        var wasForced = false;
        var someOtherCondition = false;
        var accHeader = request.Headers.GetValues("Accept").FirstOrDefault();
        if (someOtherCondition && accHeader.Contains("application/xml"))
        {
            request.Headers.Remove("Accept");
            request.Headers.Add("Accept", "application/json");
            wasForced = true;
        }

        var response =  await base.SendAsync(request, cancellationToken);
        if (wasForced){
          response.Headers.Add("X-ForcedContent", "We overrode your content prefs, sorry");
        }
        return response;
    }
}
40
задан ConcernedOfTunbridgeWells 9 October 2008 в 02:08
поделиться

5 ответов

Я знаю многих людей использование SQL Express для производства, и это работает хорошо, самым большим ограничивающим фактором является отсутствие SQL Agent для автоматизированных резервных копий. Для автоматизации резервных копий, необходимо или взять образ виртуальной машины (если на VPS) или планировщик окон использования или некоторая другая технология.

Единственным другим главным ограничивающим фактором является ограничение поршня, но для небольшого сайта я действительно не заметил что, будучи слишком большим количеством фактической проблемы.

24
ответ дан Mitchel Sellers 5 August 2019 в 15:26
поделиться

Многие дешевые хостинговые компании используют SQL Express. И я знаю от личного опыта, что SQL Express является эффективным решением для большинства вещей.

"Большинство вещей" включает крупный проект в продуктивную среду.

13
ответ дан cllpse 5 August 2019 в 15:26
поделиться

Одна вещь спросить могла бы быть - если Ваши потребности перевесят возможности SQL Server Express, Вы будете в состоянии предоставить коммерческую версию?

я думаю, что та из идей SQL Server Express - то, что Вы могли разместить свой сайт на ней и как только Вы перерастаете ее (нуждайтесь больше чем в 4 ГБ, и т.д.), Вы купите коммерческую версию, особенно теперь, когда Вы привязываетесь к использованию ее. Но если Ваш сайт перерастет его раньше, чем входящий доход будет в состоянии купить коммерческую версию, это могло быть проблемой (и возможно дефект проектирования баз данных, если Ваш сайт использует больше данных/дискового пространства, чем этому нужно к)

6
ответ дан Tom Kidd 5 August 2019 в 15:26
поделиться

Существует максимум 5 параллельных соединений для SQL Express. Если у Вас будет больше чем 5 выполнения параллельных соединений, то отбросит сильно. Alos, необходимо полагать, что SQL Agent не включен поэтому, если Вы хотите запланировать резервные копии или задачи обслуживания, необходимо использовать планировщик окон. Другой, что это, это - идеальное решение для маленьких баз данных.

-8
ответ дан Albert 5 August 2019 в 15:26
поделиться

SQL Express - отличный выбор, если вас не беспокоят ограничения памяти и процессора. Ограничение размера базы данных не является такой уж проблемой, поскольку в 2008 R2 они увеличили лимит до 10 Гб. Я думаю, что другие ограничения остались прежними.

1
ответ дан 27 November 2019 в 01:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: