Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Создание удаленного объекта сервера






Для создания удаленного объекта сервера, содержащего все необходимые функции, необходимо выполнить следующие действия:

1.В Visual Studio создать новый класс приложения в виде библиотеки с названием ListServer.

2. В Solution Explorer нажать правой клавишей на модуле Class1.cs и выбрать команду Delete.

3. В Solution Explorer в проекте ListServer нажать на правую клавишу и выбрать команду Add | Add Class. Создать название для нового класса CompanyLists.cs.

4. Изменить объявление класса, породив его из класса MarshalByRefObject, чтобы можно было бы удаленно передавать на него ссылку:

public class CompanyLists: MarshalByRefObject

{

}

5. В классе CompanyList добавить приватную переменную в виде массива строк:

private String[] Countries = {" Spain", " France", " Italy" };

6. Добавить открытый метод getCountryList(), возвращающий массив строк, определенный на предыдущем шаге:

public String[] getCountryList()

{

return Countries;

}

Создание приложения сервера и клиента

Сконструируйте формы клиента и сервера так, как это показано на рис.5 и рис.6.

Рис.5. Внешний вид серверного приложения

Рис.6. Внешний вид клиентного приложения.

8. Добавьте в форму сервера клавишу для регистрации канала для удаленного объекта, в форму клиента – две клавиши (для регистрации канала удаленного объекта на стороне клиента и для получения списка из удаленного объекта). Измените описание перечисленных классов в соответствующих проектах вашего решения следующим образом:

// Класс удаленного объекта сервера

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ListServer

{

public class CompanyLists: MarshalByRefObject

{

private String[] Countries = { " Spain", " France", " Italy" };

public String[] getCountryList()

{

return Countries;

}

}

}

// Класс формы приложения-хоста удаленного объекта сервера

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using ListServer;

namespace ListHost

{

public partial class CompanyListHostForm: Form

{

public CompanyListHostForm()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

HttpChannel myChannel = new HttpChannel(8080);

ChannelServices.RegisterChannel(myChannel, false);

RemotingConfiguration.RegisterWellKnownServiceType(typeof (ListServer.CompanyLists),

" CompanyLists", WellKnownObjectMode.Singleton);

MessageBox.Show(" Канал создан и зарегистрирован! ");

}

}

}

// Класс формы приложения-клиента удаленного объекта

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using ListServer;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

namespace ListClient

{

public partial class CompanyListClientForm: Form

{

HttpChannel c = null;

CompanyLists cLst = null;

public CompanyListClientForm()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

c = new HttpChannel();

ChannelServices.RegisterChannel(c, false);

MessageBox.Show(" Канал создан и инициализирован! ");

}

private void button2_Click(object sender, EventArgs e)

{

cLst = (CompanyLists)Activator.GetObject(typeof (CompanyLists),

" https://localhost: 8080/CompanyLists",

WellKnownObjectMode.Singleton);

listBox1.DataSource = cLst.getCountryList();

}

}

}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.