Как построить клиентское приложение

Этот раздел относится к технологии прежних версий, которая сохраняется для обеспечения обратной совместимости с существующими приложениями и не рекомендуется для разработки новых приложений. Сейчас распределенные приложения следует создавать с помощью  Windows Communication Foundation (WCF).

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

y6dc64f2.note(ru-ru,VS.100).gifПримечание
Полные инструкции по построению и выполнению этого примера см. в разделе Как компилировать и выполнять базовое приложение для удаленного взаимодействия.

Построение базового клиента удаленного взаимодействия

  1. После выполнения инструкций раздела Как построить ведущее приложение создайте в каталоге remoting подкаталог с именем client. Создайте файл конфигурации для клиентского приложения, как показано в следующем фрагменте кода, и сохраните этот файл в каталоге remoting\client. Имя файла должно иметь вид имя-приложения.exe.config. В данном случае файл называется client.exe.config. Следующий файл конфигурации содержит предназначенные для системы удаленного взаимодействия сведения о том, что удаленный объект RemotableType находится в сборке RemotableType по адресу https://localhost:8989/RemotableType.rem.

    <configuration>
       <system.runtime.remoting>
          <application>
             <client>
                <wellknown 
                   type="RemotableType, RemotableType"
                   url="https://localhost:8989/RemotableType.rem"
                />
             </client>
          </application>
       </system.runtime.remoting>
    </configuration>
    

    Сведения об атрибуте URL в данном файле конфигурации см. в разделе URL-адреса активации. Если требуется запускать это приложение в сети, необходимо в конфигурации клиента заменить "localhost" на имя удаленного компьютера.

    y6dc64f2.note(ru-ru,VS.100).gifПримечание
    Хотя в предыдущем файле конфигурации содержится лишь несколько параметров, большинство проблем с использованием удаленного взаимодействия .NET происходит потому, что некоторые из этих параметров заданы неверно или не соответствуют параметрам конфигурации для клиентских приложений. Очень легко допустить ошибку при вводе имени, забыть номер порта или не указать атрибут. При возникновении проблем с приложением удаленного взаимодействия в первую очередь необходимо проверить параметры конфигурации.

  2. Создайте новый исходный файл на любом языке. В методе main вызовите метод RemotingConfiguration.Configure, передав ему имя файла конфигурации клиента (client.exe.config). После этого создайте экземпляр типа RemotableType и вызовите его метод SayHello. Сохраните клиентское приложение под именем Client.cs или Client.vb в каталоге remoting\client.

    y6dc64f2.note(ru-ru,VS.100).gifПримечание
    Не следует сохранять клиентское приложение в одном каталоге с приложением Listener.exe. В противном случае нельзя будет иметь уверенность, что принимается и используется именно удаленная ссылка, поскольку при размещении приложений в одном каталоге может происходить разрешение сборок и типов.

       Public Shared Sub Main()
          RemotingConfiguration.Configure("Client.exe.config")
          Dim remoteObject As New RemotableType()
          Console.WriteLine(remoteObject.SayHello())
       End Sub 'Main
    
       public static void Main(){
          RemotingConfiguration.Configure("Client.exe.config");
          RemotableType remoteObject = new RemotableType();
          Console.WriteLine(remoteObject.SayHello());
       }
    
  3. Скопируйте сборку RemotableType.dll из каталога remoting\Type в каталог remoting\client.

    y6dc64f2.note(ru-ru,VS.100).gifПримечание
    На этом этапе часто спрашивают: "Как понять, что вызывается удаленный объект, если мы копируем сборку на клиент?". Именно поэтому мы добавили в метод RemotableType.SayHello() вызов Console.WriteLine. Если вызывается удаленный объект, в процессе Listener происходит вызов метода WriteLine, в противном случае метод WriteLine вызывается в клиентском процессе.

  4. Скомпилируйте клиентское приложение, введя в каталоге remoting\client следующую команду:

    vbc /r:RemotableType.dll Client.vb
    
    csc /noconfig /r:RemotableType.dll Client.cs
    
  5. Откройте два окна командной строки. В одном окне перейдите в каталог remoting\listener и запустите файл listener.exe. В другом окне перейдите в каталог remoting\client и запустите файл client.exe. Командная строка client должна иметь следующий вид:

    C:\tmp\Remoting\client>client 
    Hello, world 
    
  6. Командная строка listener должна иметь следующий вид:

    C:\tmp\Remoting\listener>listener
    Listening for requests. Press Enter to exit...
    RemotableType.SayHello() was called!
    
  7. Можно видеть результат работы приложения listener, которое получило вызов метода RemotableType.SayHello().

Примеры

' Client.vb 
Imports System
Imports System.Runtime.Remoting

Public Class Client
   Public Shared Sub Main()
      RemotingConfiguration.Configure("Client.exe.config")
      Dim remoteObject As New RemotableType()
      Console.WriteLine(remoteObject.SayHello())
   End Sub 'Main
End Class 'Client
// Client.cs 
using System;
using System.Runtime.Remoting;

public class Client{

   public static void Main(){
      RemotingConfiguration.Configure("Client.exe.config");
      RemotableType remoteObject = new RemotableType();
      Console.WriteLine(remoteObject.SayHello());
   }
}

См. также

Задачи

Как построить ведущее приложение

Справочник

Схема параметров удаленного взаимодействия

Основные понятия

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

Другие ресурсы

Построение базового приложения для удаленного взаимодействия на платформе .NET Framework

Дата сборки: 2010-02-13