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


Механизм выноса сервиса расчета 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:

 <log4net>
                    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
                            <file value="C:\inetpub\wwwroot\SpreadsheetService\logs\log4net\log.txt"/>
                            <appendToFile value="true"/>
                            <rollingStyle value="Size"/>
                            <maxSizeRollBackups value="10"/>
                            <maximumFileSize value="50MB"/>
                            <staticLogFileName value="true"/>
                            <layout type="log4net.Layout.PatternLayout">
                                  <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
                           </layout>
                   </appender>
                   <root>
                          <level value="ALL"/>
                          <appender-ref ref="RollingFileAppender"/>
                   </root>
            </log4net>