После того, как доступный удаленно компонент был создан, можно настроить серверное приложение и клиент, использующий нативный API.NET. Для получения дополнительной информации о выборе правильного API для ваших потребностей доступа смотрите, Выбирают How to Access an Assembly.
Некоторые причины вы можете использовать нативный API.NET вместо API MWArray
:
Вы хотите передать аргументы и возвращаемые значения с помощью стандартных типов.NET, и вы или ваши пользователи не работаете экстенсивно с типами данных, характерными для MATLAB®.
Вы хотите получить доступ к своему компоненту от клиентской машины без установленной версии MATLAB.
Для получения информации о доступе к вашему компоненту с помощью API MWArray
смотрите доступ к Доступному удаленно блоку.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