powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# трехзвенка
25 сообщений из 125, страница 3 из 5
C# трехзвенка
    #38250661
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю, не в курсе и преподаватель. Сам обладает опытом турбопаскаля, а о сишарпе и т.д. знает лишь по книжкам.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250704
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вот же вся лаба решена http://msdn.microsoft.com/en-us/library/bb397809(v=vs.90).aspx
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250735
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор вот это 14267222 так и не прокомментировал. Ну да ладно, какая в принципе разница.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250794
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanда вот же вся лаба решена http://msdn.microsoft.com/en-us/library/bb397809(v=vs.90).aspx

How to: Create a Socket Listener or how to create a Laba for lazy and stupid student
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250831
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhnetivanда вот же вся лаба решена http://msdn.microsoft.com/en-us/library/bb397809(v=vs.90).aspx

How to: Create a Socket Listener or how to create a Laba for lazy and stupid student



It is the simplest ... I need a multithreading Server :)
And I have to implement one...
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250837
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75Winnipuhпропущено...


How to: Create a Socket Listener or how to create a Laba for lazy and stupid student



It is the simplest ... I need a multithreading Server :)
And I have to implement one...

Не?
http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.beginaccepttcpclient.aspx

10784492
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250856
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75,

насчет мультипоточности тут не скажу, не знаю как с сокетами это будет. Но я так понимаю листнер прочитал сообщение, отдал его в пул и дальше слушает.
ЗЫ мля, ну в Wcf это решается 1 атрибутом))
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250872
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Galadriel75, сегодня, 16:36 [14269083]
>мне на лекции ходить НЕ НАДО
Извините, не хотел Вас обидеть. Говоря про лекции, имел ввиду не Вас, а того, кому...
Насчет сокетов, будьте осторожнее, если Microsoft, C# и клиент-сервер, то очень может быть - WCF! Это их фундаментальная технология.
В этих условиях легко и два балла заработать.

С уважением, Владимир.
звонил по скайпу своему другу - он сказал - лучше через сокеты иначе ни одна сатана не поймет "что это такое" :)
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250921
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Galadriel75, сегодня, 19:44 [14269965]
>звонил по скайпу своему другу ...

Увы. Как же я отстал от современных вузовских компьютерных технологий...

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250938
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanGaladriel75,

насчет мультипоточности тут не скажу, не знаю как с сокетами это будет. Но я так понимаю листнер прочитал сообщение, отдал его в пул и дальше слушает.
ЗЫ мля, ну в Wcf это решается 1 атрибутом))

зато столько допкода надо создать.
попробывал я тут его. что то как то он очень странно сделан. там контракт, тут создай, сдесь напиши . ему ещё и IIS подавай.
и что то не быстро. согласен, не повар в этих делах, но как то не впечатлило.

а в сокетах плюнул асинхронно в метод и слушай себе дальше. быстро , шустро , на ура.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250949
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

Мне кажется, реализация на сокетах будет раза в 2 длиннее, чем WCF сервис)

IIS нужен обязательно, только если используется интеграция с ASP .NET, если не путаю. А так: http://msdn.microsoft.com/ru-ru/library/ms730158.aspx
...
Рейтинг: 0 / 0
C# трехзвенка
    #38250998
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouchbeg-in-er,

Мне кажется, реализация на сокетах будет раза в 2 длиннее, чем WCF сервис)


не знаю , как насчёт короче, но даже базовый WCF сервис, который описан на мсдн , состоящий из 4 методов, генерит туеву хучу автокода.
хотя ,да лапками, по идее, меньше писать.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251016
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erLelouchbeg-in-er,

Мне кажется, реализация на сокетах будет раза в 2 длиннее, чем WCF сервис)


не знаю , как насчёт короче, но даже базовый WCF сервис, который описан на мсдн , состоящий из 4 методов, генерит туеву хучу автокода.
хотя ,да лапками, по идее, меньше писать.
почти сделал через сокеты
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251078
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beg-in-erLelouchbeg-in-er,

Мне кажется, реализация на сокетах будет раза в 2 длиннее, чем WCF сервис)


не знаю , как насчёт короче, но даже базовый WCF сервис, который описан на мсдн , состоящий из 4 методов, генерит туеву хучу автокода.
хотя ,да лапками, по идее, меньше писать.

Hello World для WCF будет размером:
Описание контракта службы: 5 строчек
Реализация службы (консоль): 5 строчек
Реализация клиента (консоль): 5 строчек
Итого: 15 строчек
Получается полноценная система с возможностью обслуживания одновременно нескольких клиентов.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251090
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVИтого: 15 строчек
мы не ищем лёгких путей
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251151
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилSergey TSVИтого: 15 строчек
мы не ищем лёгких путейПуть через сокеты легче?
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251240
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простейшая реализация на WCF

Проект ContractWCF
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using System;
using System.Data;
using System.ServiceModel;

namespace ContractWCF
{
  [ServiceContract]
  public interface IMyContract
  {
    [OperationContract]
    DataTable GetTable();
  }
}



Проект ServerWcf
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
using ContractWCF;
using System;
using System.Data;
using System.Data.OleDb;
using System.ServiceModel;

namespace ServerWcf
{
  public class MyService : IMyContract
  {
    public DataTable GetTable()
    {
      OleDbConnection connection = new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb;Persist Security Info=False");
      OleDbCommand command = new OleDbCommand("select * from People", connection);
      OleDbDataAdapter adapter = new OleDbDataAdapter(command);
      DataTable table = new DataTable("People");
      adapter.Fill(table);
      return table;
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      ServiceHost host = new ServiceHost(typeof(MyService), new Uri("net.tcp://localhost:8523"));
      host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), "");
      host.Open();
      Console.WriteLine("Для завершения нажмите enter.");
      Console.ReadLine();
      host.Close();
    }
  }
}



Проект ClientWcf
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
using ContractWCF;
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Data;

namespace ClientWcf
{
  public class MyServiceClient : ClientBase<IMyContract>, IMyContract
  {
    public MyServiceClient(Binding binding, EndpointAddress endpointAddress) : base(binding, endpointAddress) { }

    public DataTable GetTable()
    {
      return Channel.GetTable();
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      using (MyServiceClient client = new MyServiceClient(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8523")))
      {
        DataTable table = client.GetTable();
        foreach (DataRow row in table.Rows)
          Console.WriteLine(row["surname"]);
      }

      Console.ReadKey();
    }
  }
}
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251297
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVHello World для WCF будет размером:
....
Итого: 15 строчек
Получается полноценная система с возможностью обслуживания одновременно нескольких клиентов.

ну я как то писал дубовый модуль содержащий только TCP+Serialization.

после этого , им можно было пользоваться как и с WPF. оно делало почти тоже самое. только как то понятнее и нагляднее.
в клиенте видел кто отправляет, в сервере видел как принимает. никаких посредников, только хардкор )))
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251619
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>beg-in-er,сегодня, 10:12 [14271638]
>...оно делало почти тоже самое. только как то понятнее и нагляднее.

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

Итак, WCF делает удаленный сервис похожим на локальный класс.
Локально имеем интерфейс (операционный (функциональный) контракт) и локально же строим прокси - класс, реализующий интерфейс.
Локально показываем как работать с методами сервиса
public DataTable GetTable() { return Channel.GetTable(); }
и работаем с прокси, как с обычным классом.

Пожалуйста, если возможно - код в студию.

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251625
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за неточность, спасибо конечно - Sergey TS, право же, он это заслужил.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38251709
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVПростейшая реализация на WCF

Проект ContractWCF
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using System;
using System.Data;
using System.ServiceModel;

namespace ContractWCF
{
  [ServiceContract]
  public interface IMyContract
  {
    [OperationContract]
    DataTable GetTable();
  }
}



Проект ServerWcf
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
using ContractWCF;
using System;
using System.Data;
using System.Data.OleDb;
using System.ServiceModel;

namespace ServerWcf
{
  public class MyService : IMyContract
  {
    public DataTable GetTable()
    {
      OleDbConnection connection = new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb;Persist Security Info=False");
      OleDbCommand command = new OleDbCommand("select * from People", connection);
      OleDbDataAdapter adapter = new OleDbDataAdapter(command);
      DataTable table = new DataTable("People");
      adapter.Fill(table);
      return table;
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      ServiceHost host = new ServiceHost(typeof(MyService), new Uri("net.tcp://localhost:8523"));
      host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), "");
      host.Open();
      Console.WriteLine("Для завершения нажмите enter.");
      Console.ReadLine();
      host.Close();
    }
  }
}



Проект ClientWcf
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
using ContractWCF;
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Data;

namespace ClientWcf
{
  public class MyServiceClient : ClientBase<IMyContract>, IMyContract
  {
    public MyServiceClient(Binding binding, EndpointAddress endpointAddress) : base(binding, endpointAddress) { }

    public DataTable GetTable()
    {
      return Channel.GetTable();
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      using (MyServiceClient client = new MyServiceClient(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8523")))
      {
        DataTable table = client.GetTable();
        foreach (DataRow row in table.Rows)
          Console.WriteLine(row["surname"]);
      }

      Console.ReadKey();
    }
  }
}



Спасибо большущее!!! Сейчас буду в теме разбираться... столько всего.........
...
Рейтинг: 0 / 0
C# трехзвенка
    #38252115
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVПростейшая реализация на WCF

Проект ContractWCF
Код: c#
1.
2.
3.
4.
5.
6.
using System;
using System.Data;
using System.ServiceModel;

namespace ContractWCF
[...]



Sergey TSV, а вы не могли бы солюшен зипованный приложить?
Спасибо.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38252324
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
M234Sergey TSV, а вы не могли бы солюшен зипованный приложить?
Спасибо.

Пожалуйста
...
Рейтинг: 0 / 0
C# трехзвенка
    #38252525
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Sergey TSV, вчера, 19:46 [14275683]

У меня будет большая просьба к Вам.
Понимаю, что лучшее враг хорошего, но... методы удаленного сервиса обычно имеют конечное, далеко не нулевое, время исполнения. При задержке исполнения >4 сек пользователю становиться не комфортно работать - возникает ощущение чего то сломалось. Поэтому для обкатки этой ситуации предлагаю ввести в код метода сервиса задержку >5 сек, а в прокси класс - и асинхронную реализацию метода. И показать, что в этом случае UI процесс продолжает работу.
Сие конечно - следующий этап, но думаю - надо, и надеюсь. что дополнительный код не сильно осмыслительно исказит Ваше решение.

С уважением, Владимир.
...
Рейтинг: 0 / 0
C# трехзвенка
    #38252883
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

а зачем код, при генерации клиента укажите создать асинхронные методы...
...
Рейтинг: 0 / 0
25 сообщений из 125, страница 3 из 5
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# трехзвенка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]