exponenta event banner

Доступ к удаленной сборке .NET с помощью MWArray

Зачем использовать API MWAray?

После создания удаленного компонента можно настроить консольный сервер и клиент с помощью MWArray API. Дополнительные сведения о выборе подходящего API для доступа см. в разделе Выбор способа доступа к сборке.

Некоторые причины, по которым вы можете использовать MWArray API вместо собственного .NET API:

  • Вы работаете с массивами структуры данных, которые не поддерживаются собственным API .NET.

  • Вы или ваши пользователи активно работают со многими типами данных MATLAB ®.

  • Вы или ваши пользователи знакомы и удобны в использовании MWArray API.

Сведения о доступе к компоненту с помощью собственного API .NET см. в разделе Доступ к удаленной сборке .NET с помощью собственного API .NET: Magic Square.

Кодирование и построение файла приложения и конфигурации сервера хостинга

Серверное приложение размещает удаленный компонент, встроенный в «Создание удаленной сборки .NET». Можно также выполнить эти действия с помощью собственного API .NET, как описано в разделе Доступ к удаляемой сборке .NET с помощью собственного API .NET: Magic Square.

Создайте сервер с помощью файла проекта Microsoft ® Visual Studio ®MagicSquareServer\MagicSquareMWServer.csproj:

  1. Изменение привязок для созданной сборки компонентов на MagicSquareComp\for_redistribution_files_only\MagicSquareComp.dll.

  2. Выберите подходящую платформу сборки.

  3. Выберите режим «Отладка» или «Выпуск».

  4. Построить MagicSquareMWServer проект.

  5. Укажите файл конфигурации для MagicSquareMWServer.

Код сервера MagicSityServer

Используйте код C # для сервера, расположенного в файлеMagicSquareServer\MagicSquareServer.cs:

   using System;
   using System.Runtime.Remoting;

   namespace MagicSquareServer
     {
       class MagicSquareServer
         {
           static void Main(string[] args)
             {
               RemotingConfiguration.Configure
                 (@"..\..\..\..\MagicSquareServer.exe.config");

               Console.WriteLine("Magic Square Server started...");

               Console.ReadLine();
             }
         }
     }
Этот код выполняет следующую обработку:

  • Считывает связанный файл конфигурации для определения

    • Имя компонента, на котором он будет размещен

    • Используемый протокол удаленного взаимодействия и форматирование сообщений

    • Время аренды удаленного компонента

  • Сигнализирует о том, что сервер активен и ожидает ввода возврата каретки перед завершением.

Файл конфигурации MagicSquityServer

Файл конфигурации для MagicSquareServer находится в файле MagicSquareServer\MagicSquareServer.exe.config. Весь файл конфигурации, написанный в формате XML, выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.runtime.remoting>
    <application>
      <service>
        <wellknown mode="SingleCall" 
                   type="MagicSquareComp.MagicSquareClass, MagicSquareComp" 
                   objectUri="MagicSquareClass.remote" />
      </service>
      <lifetime leaseTime= "5M" renewOnCallTime="2M"
                leaseManagerPollTime="10S" />
      <channels>
        <channel ref="tcp" port="1234">    
          <serverProviders>            
            <formatter ref="binary" typeFilterLevel="Full" />
          </serverProviders>
        </channel>                
      </channels>     
    </application>
    <debug loadTypes="true"/>
  </system.runtime.remoting>
</configuration>

Этот код определяет:

  • Режим, в котором будет осуществляться доступ к удаленному компоненту - в данном случае режим одиночного вызова

  • Имя удаленного компонента, сборки компонента и URI объекта (унифицированный идентификатор ресурса), используемый для доступа к удаленному компоненту

  • Время аренды удаленного компонента

  • Протокол удаленного взаимодействия (TCP/IP) и номер порта

  • Средство форматирования сообщений (binary) и разрешения на канал связи (full доверие)

  • Параметр отладки сервера

Кодирование и построение клиентского приложения и конфигурационного файла

Клиентское приложение, работающее в отдельном процессе, получает доступ к удаленному компоненту, работающему в серверном приложении, созданном ранее. (См. раздел Кодирование и построение приложения и файла конфигурации сервера хостинга.

Следующее построение удаленного клиента с помощью файла проекта Microsoft Visual Studio MagicSquareClient\MagicSquareMWClient.csproj. Этот файл ссылается на сборку преобразования общих данных matlabroot\toolbox\dotnetbuilder\bin\win64\v4.0\ MWArray.dll и сгенерированная компонентная интерфейсная сборка MagicSquareComp\for_redistribution_files_only\IMagicSquareComp.

Чтобы создать удаленный клиент с помощью Microsoft Visual Studio:

  1. Выберите подходящую платформу сборки.

  2. Выберите режим «Отладка» или «Выпуск».

  3. Построить MagicSquareMWClient проект.

  4. Укажите файл конфигурации для MagicSquareMWServer.

Код клиента MagicSityClient

Использовать код C # для клиента, расположенного в файлеMagicSquareClient\MagicSquareClient.cs. Здесь показан код клиента:

using System;
using System.Configuration;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

using System.Collections;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Remoting.Channels.Tcp;

using MathWorks.MATLAB.NET.Utility;
using MathWorks.MATLAB.NET.Arrays;

using IMagicSquareComp;

namespace MagicSquareClient
{
  class MagicSquareClient
    {
      static void Main(string[] args)
        {
          try
            {
              RemotingConfiguration.Configure
                                      (@"MagicSquareClient.exe.config");
                
              String urlServer=
                   ConfigurationSettings.AppSettings["MagicSquareServer"];

              IMagicSquareClass magicSquareComp=
                (IMagicSquareClass)Activator.GetObject
                                     (typeof(IMagicSquareClass),
                                      urlServer);
 
              // Get user specified command line arguments or set default
              double arraySize= (0 != args.Length) 
                                ? Double.Parse(args[0]) : 4;

              // Compute the magic square and print the result
              MWNumericArray magicSquare=
                (MWNumericArray)magicSquareComp.makesquare
                                  (arraySize);

              Console.WriteLine("Magic square of order {0}\n\n{1}",
                                arraySize, magicSquare);
            }

          catch (Exception exception)
            {
              Console.WriteLine(exception.Message);
            }

          Console.ReadLine();
        }
    }
}

Этот код выполняет следующие действия:

  • Клиент считывает связанный файл конфигурации, чтобы получить имя и местоположение удаленного компонента.

  • Клиент создает экземпляр удаляемого объекта с помощью статического Activator.GetObject метод

  • С этого момента удаленный клиент вызывает методы удаляемого компонента точно так же, как и метод локального компонента.

Файл конфигурации MagicSquityClient

Файл конфигурации для магического квадратного клиента находится в файле MagicSquareClient\MagicSquareClient.exe.config. Файл конфигурации, написанный в формате XML, показан здесь:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="MagicSquareServer"
     value="tcp://localhost:1234/MagicSquareClass.remote"/>    
  </appSettings>
  <system.runtime.remoting>
    <application>
      <channels>
        <channel name="MagicSquareChannel" ref="tcp" port="0">        
          <clientProviders>            
            <formatter ref="binary" />
          </clientProviders>
          <serverProviders>            
            <formatter ref="binary" typeFilterLevel="Full" />
          </serverProviders>            
        </channel>
      </channels>
    </application>
  </system.runtime.remoting>
</configuration>

Этот код определяет:

  • Имя сервера удаленных компонентов и URI удаленного компонента (унифицированный идентификатор ресурса)

  • Протокол удаленного взаимодействия (TCP/IP) и номер порта

  • Средство форматирования сообщений (binary) и разрешения на канал связи (full доверие)

Запуск серверного приложения

Запустите сервер, выполнив следующие действия:

  1. Откройте окно команд DOS или UNIX ® иcd кому MagicSquareServer\bin\x86\v4.0\Debug.

  2. Управляемый MagicSquareServer.exe. Вы увидите сообщение:

    Magic Square Server started...

Запуск клиентского приложения

Запустите клиент, выполнив следующие действия:

  1. Откройте командное окно DOS или UNIX и cd кому MagicSquareClient\bin\x86\v4.0\Debug.

  2. Управляемый MagicSquareClient.exe. После инициализации среды выполнения MATLAB должны появиться следующие выходные данные:

    Magic square of order 4
    
    162313
    511108
    97612
    414151