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

Почему использование нативный API.NET?

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

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

  • Вы хотите передать аргументы и возвращаемые значения с помощью стандартных типов.NET, и вы или ваши пользователи не работаете экстенсивно с типами данных, характерными для MATLAB®.

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

Для получения информации о доступе к вашему компоненту с помощью MWArray API, смотрите доступ к Доступному удаленно блоку.NET Используя API MWArray.

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

Серверное приложение разместит удаленный компонент, который вы встроили, Создают Доступный удаленно блок.NET.

Клиентское приложение, запускающееся в отдельном процессе, получит доступ к удаленному компоненту, размещенному серверным приложением. Создайте сервер с Microsoft® Visual Studio® файл проекта MagicSquareServer\MagicSquareServer.csproj:

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

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

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

  4. Создайте MagicSquareServer проект.

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

Код MagicSquareServer

Код C# для сервера находится в файле MagicSquareServer\MagicSquareServer.cs. 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="MagicSquareCompNative.MagicSquareClass,  
                         MagicSquareCompNative" 
                   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\MagicSquareClient.csproj. Создать удаленный клиент, использующий Microsoft Visual Studio:

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

  2. Измените ссылку для сгенерированного интерфейсного блока к MagicSquareComp\for_redistribution_files_only\IMagicSquareCompNative.dll.

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

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

  5. Создайте MagicSquareClient проект.

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

Код MagicSquareClient

Код C# для клиента находится в файле MagicSquareClient\MagicSquareClient.cs.

 MagicSquareClient.cs

Этот код делает следующее:

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

  • Клиент инстанцирует доступного удаленно объекта с помощью статического 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
    
    Element(0,0)= 16
    Element(0,1)= 2
    Element(0,2)= 3
    Element(0,3)= 13
    Element(1,0)= 5
    Element(1,1)= 11
    Element(1,2)= 10
    Element(1,3)= 8
    Element(2,0)= 9
    Element(2,1)= 7
    Element(2,2)= 6
    Element(2,3)= 12
    Element(3,0)= 4
    Element(3,1)= 14
    Element(3,2)= 15
    Element(3,3)= 1