Развертывание службы WCF без IIS

#asp.net #wcf

#asp.net #wcf

Вопрос:

Есть ли какой-либо способ развернуть ее без IIS после создания службы WCF? Созданная мной служба будет использоваться только в локальной сети, и я бы предпочел, чтобы хост не запускал ASP.NET сервер только для размещения службы WCF.

Другая причина, по которой мне нужно иметь возможность делать это, заключается в том, что одна из библиотек DLL, которые я буду использовать, на самом деле плохо работает с ASP.NET .

Ответ №1:

Комментарии:

1. Смогут ли другие компьютеры в той же локальной сети по-прежнему получать доступ к службе WCF, если я размещу ее в службе Windows?

2. Да, разрешения (и привязка), позволяющие

Ответ №2:

Службу WCF можно разместить в любом EXE-файле, а не только в службе Windows. Вам нужно написать некоторый код для host, но это тривиально:

 using System;
using System.ServiceModel;
using System.ServiceProcess;

namespace MyService.Hosts
{
    public partial class MyWindowsService : ServiceBase
    {
        ServiceHost host;

        public MyWindowsService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            Type serviceType = typeof(MyWcfService);
            host = new ServiceHost(serviceType);
            host.Open();
        }

        protected override void OnStop()
        {
            if(host != null)
               host.Close();
        }
    }
}
  

Кстати, при развертывании с использованием IIS вы получаете все дополнительные возможности, предлагаемые IIS, бесплатно, включая простое веб-развертывание, интегрированную безопасность и ASP.NET модель событий.