После того, как доступный удаленно компонент был создан, можно настроить серверное приложение и клиент, использующий нативный API.NET. Для получения дополнительной информации о выборе правильного API для ваших потребностей доступа смотрите, Выбирают How to Access an Assembly.
Некоторые причины вы можете использовать нативный API.NET вместо MWArray
API:
Вы хотите передать аргументы и возвращаемые значения с помощью стандартных типов.NET, и вы или ваши пользователи не работаете экстенсивно с типами данных, характерными для MATLAB®.
Вы хотите получить доступ к своему компоненту от клиентской машины без установленной версии MATLAB.
Для получения информации о доступе к вашему компоненту с помощью MWArray
API, смотрите доступ к Доступному удаленно блоку.NET Используя MWArray.
Серверное приложение разместит удаленный компонент, который вы встроили, Создают Доступный удаленно блок.NET.
Клиентское приложение, запускающееся в отдельном процессе, получит доступ к удаленному компоненту, размещенному серверным приложением. Создайте сервер с файлом проекта Microsoft® Visual Studio® MagicSquareServer\MagicSquareServer.csproj
:
Измените ссылку для сгенерированного блока компонента к MagicSquareComp\for_redistribution_files_only\MagicSquareCompNative.dll
.
Выберите соответствующую платформу сборки.
Выберите режим Debug или Release.
Создайте 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.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:
Измените ссылку для сгенерированного блока компонента к MagicSquareComp\for_redistribution_files_only\MagicSquareCompNative.dll
.
Измените ссылку для сгенерированного интерфейсного блока к MagicSquareComp\for_redistribution_files_only\IMagicSquareCompNative.dll
.
Выберите соответствующую платформу сборки.
Выберите режим Debug или Release.
Создайте MagicSquareClient
проект.
Предоставьте конфигурационный файл для MagicSquareServer
.
Код 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 IMagicSquareCompNative; namespace MagicSquareClient { class MagicSquareClient { static void Main(string[] args) { try { RemotingConfiguration.Configure (@"MagicSquareClient.exe.config"); String urlServer= ConfigurationSettings.AppSettings["MagicSquareServer"]; IMagicSquareClassNative magicSquareComp= (IMagicSquareClassNative)Activator.GetObject (typeof(IMagicSquareClassNative), 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 double[,] magicSquare= (double[,])magicSquareComp.makesquare(arraySize); Console.WriteLine("Magic square of order {0}\n", arraySize); // Display the array elements: for (int i = 0; i < (int)arraySize; i++) for (int j = 0; j < (int)arraySize; j++) Console.WriteLine ("Element({0},{1})= {2}", i, j, magicSquare[i, j]); } catch (Exception exception) { Console.WriteLine(exception.Message); } Console.ReadLine(); } } }
Этот код делает следующее:
Клиент читает связанный конфигурационный файл, чтобы завоевать репутацию и местоположение доступного удаленно компонента.
Клиент инстанцирует доступного удаленно объекта с помощью статического Activator.GetObject
метод
От этой точки клиент дистанционной работы вызывает методы на доступном удаленно компоненте, как это вызвало бы метод локального компонента.
Конфигурационный файл для клиента магического квадрата находится в файле 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
доверие)
Запустите сервер путем выполнения следующего:
Откройте DOS или команду UNIX® и cd
к MagicSquareServer\bin\x86\v4.0\Debug
.
Запустите MagicSquareServer.exe
. Вы будете видеть сообщение:
Magic Square Server started...
Запустите клиент путем выполнения следующего:
Откройте DOS или командное окно UNIX и cd
к MagicSquareClient\bin\x86\v4.0\Debug
.
Запустите 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