Доступ к доступному удаленно блоку.NET Используя MWArray

Почему использование API MWArray?

После того, как вы создадите доступный удаленно компонент, можно настроить консольный сервер и клиент, использующий API MWArray. Для получения дополнительной информации о выборе правильного API для ваших потребностей доступа смотрите, Выбирают How to Access an Assembly.

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

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

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

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

Для получения информации о доступе к вашему компоненту с помощью нативного API.NET смотрите доступ к Доступному удаленно блоку.NET Используя Нативный API.NET: Магический квадрат.

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

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

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

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

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

  3. Выберите режим Debug или Release.

  4. Разработайте проект MagicSquareMWServer.

  5. Предоставьте конфигурационный файл для MagicSquareMWServer.

Код MagicSquareServer

Используйте код 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();
             }
         }
     }
Этот код делает следующую обработку:

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

    • Имя компонента, который это разместит

    • Форматирование протокола и сообщения дистанционной работы, чтобы использовать

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

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

Конфигурационный файл MagicSquareServer

Конфигурационный файл для 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. Выберите режим Debug или Release.

  3. Разработайте проект MagicSquareMWClient.

  4. Предоставьте конфигурационный файл для MagicSquareMWServer.

Код MagicSquareClient

Используйте код 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

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

Конфигурационный файл MagicSquareClient

Конфигурационный файл для клиента магического квадрата находится в файле 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 Runtime инициализирует, необходимо видеть следующий вывод:

    Magic square of order 4
    
    162313
    511108
    97612
    414151