Это старая версия документа!


Механизм выноса сервиса расчета Excel-отчетов на отдельную машину

Инструкция по выносу сервиса расчета Excel-отчетов на отдельную машину для ОС Windows.

Инструкция для ОС Linux находится на отдельной странице.

Опубликовать проект «SL.Spreadsheet.WcfService», используя «Release».

После этого в папке «Publish\SpreadsheetService» (полный путь «~\SL.Spreadsheet.WcfService\Publish») опубликуется сервис пересчета.

Активация WAS для взаимодействия с сервисом с помощью протоколов отличных от http (net.tcp, net.pipe и др.):

1. Установить компоненты Windows (Программы и компоненты):

  • .Net Framework 3.5 → Активация WCF не по HTTP;
  • Дополнительные службы .Net Framework 4.5 → Службы WCF → Активация по HTTP, Активация по TCP, Активация по именованным каналам.

2. Добавить привязки net.tcp, net.pipe в веб-сайт IIS, где будет размещаться сервис.

  1. Скопировать папку с сервисом «SpreadsheetService» (например, в «inetpub\wwwroot»).
  2. Создать отдельный пул в IIS для сервиса, обязательно в Integrated Mode («встроенный» в русской версии Windows).
  3. Создать приложение в IIS, где задать имя и путь к сервису из пункта 1, выбрать пул из пункта 2.
  4. В дополнительных параметрах приложения указать активные протоколы: http, net.tcp, net.pipe.

Настройка приложения ADVANTA на работу с удаленным сервисом пересчета Excel-отчетов:

1. В client.config в appSettings добавить:

<add key="WorkbookHandler" value="Remote" />

2. В serviceModelClient.config раскомментировать endpoint с протоколом, который требуется использовать:

  • если приложение и сервис расположены на одном сервере, то рекомендуется использовать netNamedPipeBinding;
  • если на разных серверах, то netTcpBinding.

Исправить значение address на адрес к развернутому сервису - путь должен выглядеть как-то так: net.pipe:⁄⁄{адрес к сервису}/WorkbookHandlerService.svc.

Для включения Serilog в сервисе пересчета в Web.config сервиса в секцию appSettings необходимо добавить:

<add key="ProfilerLogEnable" value="true"/>
      <add key="ProfilerLogPath" value="C:\inetpub\wwwroot\SpreadsheetService\logs"/>
      <add key="ProfilerAllLogsSizeLimitMegaBytes" value="500"/>
В папке с логами C:\inetpub\wwwroot\SpreadsheetService\logs должна быть подпапка ProfilerLog, иначе ничего записываться не будет.

Также поддерживаются другие ключи: ProfilerLogPath, ProfilerAllLogsSizeLimitMegaBytes, IsWriteToProfilerLogAllRequests, ProfilerLogExclusions.

Можно добавить секцию log4net в Web.config сервиса:

<configSections>
                     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
             </configSections>

Можно добавить секцию log4net в configuration: