IIS сервисный хостинг WCF по сравнению со службой Windows

Попробуйте присоединиться к подзапросу MyPrice, чтобы получить MAX(PriceDate):

SELECT a.*, MyPriceDate.Price, MyPriceDate.PriceDate
FROM MyParts a
INNER JOIN (
    SELECT Partid, MAX(PriceDate) AS MaxPriceDate 
    FROM MyPrice 
    GROUP BY Partid
) dt ON a.Partid = dt.Partid
INNER JOIN MyPrice ON dt.Partid = MyPrice.Partid 
                   AND a.PriceDate = dt.MaxPriceDate
45
задан Community 23 May 2017 в 11:46
поделиться

4 ответа

Чтобы ответить на этот вопрос:

Мы провели несколько тестов и обнаружили что когда мы добавляем привязки в IIS, он не обновляет файл конфигурации наш сервис. Это означает, что мы необходимо сохранить конфигурацию в два разных места. Это не логика, правильно?

Когда вы используете IIS для размещения своей службы, вы должны настроить файл App.config или файл web.config, чтобы позволить IIS предоставлять некоторую привязку, поэтому в файле конфигурации вы поместите все свои привязки, которые вы разрешаете ваш сервис wcf. Http, net.tcp и т. Д.

В вашей привязке вы не укажете адрес, потому что вы укажете этот адрес напрямую в IIS.

В IIS вы должны разрешить привязку, доступную в дополнительных настройках вашего веб-сайта . После этого вы установите новую привязку для своего веб-сайта «веб-сервис» и добавите все привязки, которые хотите прослушивать, и укажите адрес.

Вы укажете адрес непосредственно в IIS.

Вот пример.

Ваш файл конфигурации:

<services>
    <service name="ServiceName">                    
        <endpoint address=""
            binding="basicHttpBinding"
            bindingConfiguration="httpMode"
            contract="IContract" />                 
        <endpoint address=""
            binding="netTcpBinding"
            contract="IContract" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
</services>

В ваших настройках IIS advenced вы поместите

http, net.tcp в Enabled Protocols

После этого вы войдете в свою привязку к IIS.

11
ответ дан 26 November 2019 в 20:52
поделиться

IIS предоставляет множество готовых функций, таких как перезагрузка домена приложения, мониторинг и т. Д.

Вот почему вы должны сначала ответить на следующие вопросы: делать вам нужны все эти возможности или нет? Если нет - можно рассмотреть службу Windows.

5
ответ дан 26 November 2019 в 20:52
поделиться

Хостинг в IIS имеет много плюсов и минусов.

Да, IIS дает вам загрузку по запросу - это может быть плюс или минус. Когда поступает запрос, создается ServiceHost, затем создается экземпляр класса обслуживания, и запрос обрабатывается. Ничего не нужно делать круглосуточно. Но в то же время эта настройка требует больше времени и усилий каждый раз, когда приходит сообщение, и вы, как программист, на самом деле не имеете большого контроля над своим хостом службы.

И да, в IIS виртуальный каталог, в котором находится файл * .svc, определяет ваш адрес - любые базовые адреса или явно определенные адреса в вашей конфигурации игнорируются. И без особых усилий вы не можете изменить расположение служебных адресов - они всегда будут http: // servername / virtualdirectory / YourService. svc (включая расширение .svc).

Самостоятельный хостинг часто выполняется в разы быстрее, так как ваш ServiceHost уже запущен и работает - но вы должны убедиться, что он действительно запущен и работает, нет " "по требованию" загрузка всякий раз, когда приходит сообщение - либо оно готово и может обслуживать запрос, либо нет. Но у вас есть гораздо больший контроль над хостом службы - когда и как он создается и т. Д., И вы можете выбирать и определять адреса своих служб по своему усмотрению.

Лично я почти всегда предпочитаю использовать самостоятельный хостинг - в консольном приложении для тестирования, в службе NT для производства. Для меня это просто кажется более подходящим и более контролируемым способом. Вам нужно сделать больше работы, но вы точно знаете, что делаете.

Marc

Самостоятельный хостинг часто выполняется в разы быстрее, поскольку ваш ServiceHost уже запущен и работает - но вы должны убедиться, что он действительно запущен и работает, нет загрузки «по требованию» всякий раз, когда приходит сообщение - либо он работает и может обслуживать запрос или нет. Но у вас есть гораздо больший контроль над хостом службы - когда и как он создается и т. Д., И вы можете выбирать и определять адреса своих служб по своему усмотрению.

Лично я почти всегда предпочитаю использовать собственный хостинг - в консольном приложении для тестирования, в службе NT для производства. Для меня это просто кажется более подходящим и более контролируемым способом. Вам нужно делать больше работы, но вы точно знаете, что делаете.

Marc

Самостоятельный хостинг часто выполняется в разы быстрее, поскольку ваш ServiceHost уже запущен и работает - но вы должны убедиться, что он действительно запущен и работает, нет загрузки «по требованию» всякий раз, когда приходит сообщение - либо он работает и может обслуживать запрос, или нет. Но у вас есть гораздо больший контроль над хостом службы - когда и как он создается и т. Д., И вы можете выбирать и определять адреса своих служб по своему усмотрению.

Лично я почти всегда предпочитаю использовать самостоятельный хостинг - в консольном приложении для тестирования, в службе NT для производства. Для меня это просто кажется более подходящим и более контролируемым способом. Вам нужно сделать больше работы, но вы точно знаете, что делаете.

Marc

Вам решать, чтобы убедиться, что он действительно запущен и работает, нет никакой загрузки «по запросу» всякий раз, когда приходит сообщение - оно либо готово и может обслуживать запрос, либо нет. Но у вас есть гораздо больший контроль над хостом службы - когда и как он создается и т. Д., И вы можете выбирать и определять адреса своих служб по своему усмотрению.

Лично я почти всегда предпочитаю использовать самостоятельный хостинг - в консольном приложении для тестирования, в службе NT для производства. Для меня это просто кажется более подходящим и более контролируемым способом. Вам нужно сделать больше работы, но вы точно знаете, что делаете.

Marc

Вам решать, чтобы убедиться, что он действительно запущен и работает, нет никакой загрузки «по запросу» всякий раз, когда приходит сообщение - либо оно работает и может обслуживать запрос, либо нет. Но у вас есть гораздо больший контроль над хостом службы - когда и как он создается и т. Д., И вы можете выбирать и определять адреса своих служб по своему усмотрению.

Лично я почти всегда предпочитаю использовать самостоятельный хостинг - в консольном приложении для тестирования, в службе NT для производства. Для меня это просто кажется более подходящим и более контролируемым способом. Вам нужно делать больше работы, но вы точно знаете, что делаете.

Marc

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

Лично я почти всегда предпочитаю использовать самостоятельный хостинг - в консольном приложении для тестирования, в службе NT для производства. Для меня это просто кажется более подходящим и более контролируемым способом. Вам нужно сделать больше работы, но вы точно знаете, что делаете.

Marc

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

Лично я почти всегда предпочитаю использовать самостоятельный хостинг - в консольном приложении для тестирования, в службе NT для производства. Для меня это просто кажется более подходящим и более контролируемым способом. Вам нужно сделать больше работы, но вы точно знаете, что делаете.

Marc

76
ответ дан 26 November 2019 в 20:52
поделиться

marc_s обычно дает отличные ответы, с которыми я полностью согласен, но в этом случае я нет.
Самостоятельный хостинг WCF - не лучшая идея, особенно с учетом технологий Dublin, которые вскоре будут выпущены Microsoft. Управление приложениями WCF (и WF) и управление ими намного проще, если они размещены внутри IIS.

Вдобавок вы получаете загрузку по запросу.

Для IIS7.5 (WS2008 R2) существует опция постоянного включения.

И вы можете легко перезаписать URL, чтобы опустить .svc, если вас это беспокоит.

26
ответ дан 26 November 2019 в 20:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: