Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пример клиент серверного приложения 
:(
    Опции темы
Cold_Almaty
Дата 15.2.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 22.1.2008

Репутация: нет
Всего: нет



Народ, доброе время суток.
Пожалуйста, приведите пример простого клиент серверного приложения, чтобы в качестве серверной части выступал сервис. Приложение должно запускать, скажем, блокнот.  smile

Добавлено через 11 минут и 51 секунду
Сделал три блока: клиент, сервер, dll.

клиент:
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Channels.Http;
using RemoteRegObject;



namespace RemoteRunAppClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            HttpChannel c = new HttpChannel();
            ChannelServices.RegisterChannel(c);

            object remoteObject = Activator.GetObject(typeof(RemoteRegObject.RemoteRegObj),
               "http://localhost:32469/RemoteAppStart.soap");

            RemoteRegObj simple = (RemoteRegObj)remoteObject;
            simple.runApp();
                      
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

         }
}


сервер:
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp ;
using System.Runtime.Remoting.Channels.Http;
using RemoteRegObject;

namespace RemoteRunAppServ
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            HttpChannel c = new HttpChannel(32469);
            ChannelServices.RegisterChannel(c);

            RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteRegObject.RemoteRegObj),
                "RemoteAppStart.soap",
                WellKnownObjectMode.SingleCall);
        }
    }
}


DLL:
Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Data;
using System.IO;
using Microsoft.VisualBasic;

namespace RemoteRegObject
{
    public class RemoteRegObj:MarshalByRefObject 
    {
        public RemoteRegObj()
        {
        }       
            public void runApp()
            {
                   Process notepad = new Process();
                    notepad.StartInfo.FileName = @"C:\WINDOWS\system32\notepad.exe";
                    notepad.Start();                
        }
    }
}


Вот так всё работает. Но мне надо, чтобы сервер был реализован в виде сервиса.
Код сервиса:
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Configuration.Install;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Channels.Http;
using RemoteRegObject;



namespace RemoteRunAppService
{
    [RunInstallerAttribute(true)]
    public class MyProjectInstaller : Installer
    {
        private ServiceInstaller serviceInstaller1;
        private ServiceProcessInstaller processInstaller;

        public MyProjectInstaller()
        {
            // Instantiate installers for process and services.
            processInstaller = new ServiceProcessInstaller();
            serviceInstaller1 = new ServiceInstaller();

            // The services run under the system account.
            processInstaller.Account = ServiceAccount.LocalSystem;

            // The services are started manually.
            serviceInstaller1.StartType = ServiceStartMode.Manual;

            // ServiceName must equal those on ServiceBase derived classes.            
            serviceInstaller1.ServiceName = "RegApp";

            // Add installers to collection. Order is not important.
            Installers.Add(serviceInstaller1);
            Installers.Add(processInstaller);
        }
    }


    public partial class SimpleObjServer : ServiceBase
    {
        public SimpleObjServer()
        {
            InitializeComponent();
        }
        public HttpChannel c;

        protected override void OnStart(string[] args)
        {
            // TODO: Add code here to start your service.
            c = new HttpChannel(32469);
            ChannelServices.RegisterChannel(c);

            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(RemoteRegObject.RemoteRegObj),
                "RemoteAppStart.soap", WellKnownObjectMode.Singleton );
        }

        protected override void OnStop()
        {
            // TODO: Add code here to perform any tear-down necessary to stop your service.
            ChannelServices.UnregisterChannel(c);
        }
    }
}


Нифига не работает. Пожалуйста поправьте. smile 
PM MAIL   Вверх
Cold_Almaty
Дата 19.2.2008, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 22.1.2008

Репутация: нет
Всего: нет



Всё. Разобрался.
Правильный поиск рулит (mr. DUDA прав).

на топик с разъяснением


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0365 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.