| 
 | 
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Есть WCF сервис, в котором хостится три сервиса. Он работает, как ConsoleHost, Windows Service Host и под IIS. В консольном варианте запускются так Код: c# 1. 2. 3. Хочу добавить свой сервис, он работает чисто как tcp сервис и не зависит от этих. Вопрос: Можно ли его добавить, чтобы он стартовал и останавливался так же как и существующие и под консолью, и под IIS? По аналогии типа такого Код: c# 1. И как это сделать? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 16.12.2015, 11:42 | 
  
  
  
   | 
||
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  WinnipuhМожно ли его добавить, чтобы он стартовал и останавливался так же как и существующие и под консолью, и под IIS? Конечно. WinnipuhИ как это сделать? Точно так же, как и для дргих сервисов. Отличаться он будет только настройками биндингов. Т.е. вам нужно, создать ваш сервис а затем... 1. Для Self-hosting: - прописать ему биндинги в app.config (или сделать настройку в коде - смотря как вы делаете), и запустить через ServiceHost (как вы и написали) 2. Для IIS: - убедиться, что установлены такие компоненты Windows как TCP Activation и TCP Port Sharing (в клиентской Windows это делается в компоненте Turn Windows features on or off) - прописать в IIS manager для того сайта, на котором будете хостить сервисы, TCP-биндинг с нужными настройками (обычно Default Site уже всё прописано, можно взять его за образец) - создать обычны .svc файл для сервиса - в web.config указать, что у вас для сервиса используется TCP биндинг Т.е. всё как и для сервисов под HTTP, только биндинг другой. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 16.12.2015, 12:23 | 
  
  
  
   | 
||
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А какие биндинги писать, если этот сервис живет своей жизнью, не связанной с WCF ? Может есть примеры аналогичных решений? Грубо говоря, я с переделками пытаюсь всунуть серверную часть этого в свой сервис: https://github.com/sailro/Bdtunnel ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 16.12.2015, 12:53 | 
  
  
  
   | 
||
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Winnipuh, Т.е. это не WCF-сервис? Ну тогда, надо смотреть как настраивается и запускается тот сервис. Тут я ничего не могу сказать. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 16.12.2015, 14:32 | 
  
  
  
   | 
||
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  МихаилРWinnipuh, Т.е. это не WCF-сервис? Ну тогда, надо смотреть как настраивается и запускается тот сервис. Тут я ничего не могу сказать. Нет, в том-то и вопрос. Я уже прикрутил в нулевом приближении, типа такого срабатывает serviceTcpHost = new ServiceHost(typeof(TcpService)); Но вопросы есть Start, Stop: 1. windows service hosting: Мой сервис стартует один раз, я добавил в конструктор класса запуск Код: c# 1. 2. 3. 4. 5. 6. Но не останавливается. То есть хост закрываю, но сервис где-то внутри там живет Код: c# 1. Как бы сделать так, чтобы по закрытии хоста вызвать остановку потоков сервиса? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 16.12.2015, 14:50 | 
  
  
  
   | 
||
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Winnipuh, Откровенно говоря, я всё равно не очень понимаю, что вы хотите добиться. Вы хотите прикрутить инфраструктуру WCF к не-WCF библиотеке. Так? А какой смысл? Наверняка ведь у той библиотеки есть свои средства управления соединением, прослушкой каналов и т.д. Почему бы просто не использовать их? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.12.2015, 08:16 | 
  
  
  
   | 
||
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  МихаилРWinnipuh, Откровенно говоря, я всё равно не очень понимаю, что вы хотите добиться. Вы хотите прикрутить инфраструктуру WCF к не-WCF библиотеке. Так? А какой смысл? Наверняка ведь у той библиотеки есть свои средства управления соединением, прослушкой каналов и т.д. Почему бы просто не использовать их? Я их и использую, мне нужно, чтобы старт и стоп делался как и у wcf, поскольку этот сервис хостится в консольном приложении, в win сервисе и под IIS. Скажем, еще остается вопрос, как мне стартовать мой субсервис под IIS. Кстати, я прикрутил: Я поместил в конструктор сервиса запуск прикладного потока и он стартует при таком запуске Код: c# 1. Так же в Dispose() добавил вызов StopMyService() и он вроде бы останавливается, надо проверять. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.12.2015, 12:16 | 
  
  
  
   | 
||
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Сделал так: 1. консольный и виндоуз хост работаеют ок 2. IIS: создал по правилам простейший сервис с одни методом, а в конструкторе он создает и запускает поток и т.д.. Все ок. Остается одна фигня: конструктор вызывается при первом вызове метода, а до того нет. Как бы проще всего его активизировать при старте IIS, чтобы не ждал первого вызова? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.12.2015, 15:11 | 
  
  
  
   | 
||
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  WinnipuhСделал так: Как-то у вас всё хитро... Ну да ладно - раз так вам удобнее, пусть так и будет. WinnipuhОстается одна фигня: конструктор вызывается при первом вызове метода, а до того нет. Как бы проще всего его активизировать при старте IIS, чтобы не ждал первого вызова? Так это особенность работы IIS - он создает экземпляр Application только если пришел вызов. И останавливает, когда последний не нужен. Microsoft добавляла возможность инициализировать приложение при старте IIS, но в IIS 7 делалось это через установку стороннего пакета - AppFabric (судьба которого ныне не ясна от слова "совсем". Похоже, все-таки он умер). В 7.5 делали специальный модуль , а в 8.0 это ввели в базовый функционал . Я сам никогда не использовал, поэтому рекомендаций не дам, но может вам помогут приведенные ссылки. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.12.2015, 16:33 | 
  
  
  
   | 
||
| 
 
WCF: как добавить свой сервис? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  МихаилРWinnipuhСделал так: Как-то у вас всё хитро... Ну да ладно - раз так вам удобнее, пусть так и будет. WinnipuhОстается одна фигня: конструктор вызывается при первом вызове метода, а до того нет. Как бы проще всего его активизировать при старте IIS, чтобы не ждал первого вызова? Так это особенность работы IIS - он создает экземпляр Application только если пришел вызов. И останавливает, когда последний не нужен. Microsoft добавляла возможность инициализировать приложение при старте IIS, но в IIS 7 делалось это через установку стороннего пакета - AppFabric (судьба которого ныне не ясна от слова "совсем". Похоже, все-таки он умер). В 7.5 делали специальный модуль , а в 8.0 это ввели в базовый функционал . Я сам никогда не использовал, поэтому рекомендаций не дам, но может вам помогут приведенные ссылки. спасибо, буду смотреть. А почему хитро? как раз наоборот, я пошел бесхитростно, сделал формально, собственно, как вы и рекомендовали выше. А уже внутри сервиса делаю свои прикладные фукции. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.12.2015, 20:00 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=19&tid=1396811]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    39ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    38ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 10ms | 
| total: | 130ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.