Форум программистов, компьютерный форум, киберфорум
C#: Веб-сервисы и WCF
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# WCF Получение списка запущенных на удаленном компьютере процессов https://www.cyberforum.ru/ web-services-wcf/ thread1814618.html
Всем привет...подскажите пожалуйста,как можно получить список запущенных процессов на удаленном компе...если получится код программы
Настройка с использованием файлов конфигурации C# WCF
Можно ли настроить рест веб-сервис с использованием только конфигурационных файлов, без применения атрибутов к классу службы и методам, т.е. не используя типы пространства System.ServiceModel?
На промышленном стенде AUT011005 Ошибка формата подписи запроса C# WCF
Что мы не так делаем? Что упустили? Сделали как описано в Взаимодействие с ГИС ЖКХ с помощью stunnel и openssl по ГОСТу Всё время получаем ответ "Ошибка формата подписи запроса" --Простой...
C# WCF Сортировка рядов в Google Spreadsheets Привет, ребята! В google spreadsheet api есть такая функция: // Based on the sample above for getting rows in a worksheet listQuery.OrderByColumn = "column:lastname"; И я понять не могу как... https://www.cyberforum.ru/ web-services-wcf/ thread1814381.html
C# WCF WCF: Всё ли я правильно понимаю и делаю? https://www.cyberforum.ru/ web-services-wcf/ thread1813300.html
Всем привет. Вот уже который день разбираюсь с wcf... Возникло несколько вопросов, в которых вроде как разобрался, но хотелось бы быть уверенным) Буду очень признателен если поможете расставить все...
Singleton WCF windows service C# WCF
рискну испросить помощи в уважаемом сообществе. задумал написать некую службу, к которой можно было бы обратиться, и которая запоминала и хранила бы информацию, не пользуясь дополнительными...
Ошибка десериализации тела ответного сообщения для операции "GetDebtorByIdBankrupt" C# WCF
Всем привет! Помогите, плиз! Не могу найти, где ошиблась... выходит ошибка: ERROR: Ошибка десериализации тела ответного сообщения для операции "GetDebtorByIdBankrupt". // Получение данных...
C# WCF Как передать значение типа DebtorCodeType в веб-сервисе ЕФРСБ Всем привет! Помогите, плиз, разобраться! Реализую метод SearchDebtorByCode поиск должника по коду. ComboBox я добавила на форму и заполнила Items значениями CompanyInn, PersonInn, Ogrn, Ogrnip,... https://www.cyberforum.ru/ web-services-wcf/ thread1811299.html
C# WCF Сложные программы https://www.cyberforum.ru/ web-services-wcf/ thread1811224.html
В общем,есть 3 варианта по поводу курсача: 1) Автоматическая вёрстка сайта на основе PSD макета 2) Перевод офисных документов в WEB документы 3) Шифровка офисных документов Хотел бы спросить по...
C# WCF Локальное хранилище сессии в синглете Здравствуйте! Появилось небольшое надопонимание... Сервис у меня многопоточный и Синглет. Получается, что Любой статичный класс с полем под информацию будет общим для всех клинтов и не потеряет... https://www.cyberforum.ru/ web-services-wcf/ thread1811081.html
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
30.09.2016, 23:51 0

Динамическое обновление клиента и сервера

30.09.2016, 23:51. Показов 1571. Ответов 5
Метки (Все метки)

Лучший ответ Сообщение было отмечено Kertis138 как решение

Решение

Цитата Сообщение от bax_tang Посмотреть сообщение
клиент обязательно должен поддерживать все методы контракта сервиса, в противном случае при попытке вызова будет сгенерировано исключение типа "несовпадение контрактов между клиентом и сервисом".
Совершенно необязательно. Тестовый код ниже. В контракте сервиса два метода, а в контракте клиента один. И тем не менее код работает.
Цитата Сообщение от bax_tang Посмотреть сообщение
клиентов также придётся перевести на изменённый контракт и перекомпилировать.
Только в том случае, если используется svcutil.exe
Если же все пишется ручками, этого не потребуется.
Исходя из задумки ТС, как я ее понял, это делается так. Пишется набор контрактов, и служба предоставляет какой-то один. Клиент не знает, какой именно, запрашивает метаданные конечной точки, и ищет в своем наборе контрактов подходящие. Если нашел - динамически создает прокси и использует его.
PROFIT!
Тестовая служба:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Channels;
 
namespace DynamicContractService {
    class Program {
        static void Main(string[] args) {
            using (ServiceHost host = new ServiceHost(typeof(Service), new Uri("http://localhost:8090/Service"))) {
                host.AddServiceEndpoint(typeof(IContract), new BasicHttpBinding(), "");
                ServiceMetadataBehavior mexBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
                if (mexBehavior == null) {
                    mexBehavior = new ServiceMetadataBehavior { HttpGetEnabled = true };
                    host.Description.Behaviors.Add(mexBehavior);
                }
                host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
                host.Opening += new EventHandler(host_Opening);
                host.Opened += new EventHandler(host_Opened);
                host.Open();
                Console.ReadLine();
            }
        }
 
        static void host_Opened(object sender, EventArgs e) {
            Console.WriteLine("Service is ready...");
        }
 
        static void host_Opening(object sender, EventArgs e) {
            Console.WriteLine("Opening service...");
        }
    }
    [ServiceContract]
    public interface IContract {
        [OperationContract]
        void Method1();
        [OperationContract]
        void Method2();
    }
    public class Service : IContract {
        public void Method1() {
            Console.WriteLine("Calling Method1()!");
        }
 
        public void Method2() {
            Console.WriteLine("Calling Method2()!");
        }
    }
}
Тестовый клиент:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Channels;
 
namespace DynamicClient {
    class Program {
        static void Main(string[] args) {
            IContract proxy = ChannelFactory<IContract>.CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://localhost:8090/Service"));
            proxy.Method1();
            Console.ReadLine();
        }
    }
    [ServiceContract]
    public interface IContract {
        [OperationContract]
        void Method1();
    }
}


Вернуться к обсуждению:
Динамическое обновление клиента и сервера
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2016, 23:51

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Обновление игрового клиента
Есть игровой клиент, я для него пишу лаунчер. Подкиньте идею как правильно обновлять игровой...

С сервера вызвать клиента
очень очень нужно вызвать из процедуры в модуле объекта открыть форму нужно, т.е. совершить...

Синхронизация клиента и сервера
1. Сервер генерирует число double. Например 3.25. 2. Сервер посылает клиенту сообщение о старте....

Настройка клиента - сервера
Приветствую форумчане,помогите,пожалуйста,решить проблемку.. Имеется сервер: import...

Связь сервера и клиента
Всем привет. Вопрос не из жизни, а из обучения. У меня есть прилага - несколько jar файлов(8). В...

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

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.