![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Создание удаленного объекта сервера ⇐ ПредыдущаяСтр 7 из 7
Для создания удаленного объекта сервера, содержащего все необходимые функции, необходимо выполнить следующие действия: 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(); } } }
|