2015-06-02 2 views
2

Мне нужно создать службу WCF на работе, которая будет обрабатывать запрос от разных клиентов на одном компьютере и, возможно, от клиентов с другого компьютера, но в сети компании (с компьютера программиста - для целей отладки). Мне нужны некоторые предложения о том, как создать службу, потому что я довольно новичок, когда дело доходит до WCF.Правильное создание службы WCF

Служба получит запросы от клиентов для выполнения различных операций с h/w-устройствами, расположенными на главной машине. Служба должна содержать несколько модулей для поддержки всех видов h/w-устройств. Программисты, записывающие код клиента, будут использовать эти объекты модулей для выполнения операций. Каждый модуль должен поддерживать события по отношению к клиентам и бросать исключения.

Я хотел бы знать несколько вещей:

  1. Можно ли как-то экспортировать методы документации к клиентов? потому что было бы лучше, когда код клиента будет написан, программист сможет увидеть, что именно делает метод , какие исключения выбрасываются и так далее. Я видел, что существует способ использования DLL API для клиентов (помните, что большинство из клиентов будут запускаться (и закодированы) на одном компьютере с использованием .NET.
  2. Можно ли просто исключать исключения из службы методов реализации? Я хочу использовать большинство способностей .NET , а исключения являются одним из них:
  3. Служба обрабатывает запросы из разных потоков в каждом клиентах, можно ли использовать информацию о потоках (как нить Id) или любым другим способом для выполнения блокировочного механизма? например, для , если два потока одного и того же клиента используют один и тот же канал устройства h/w , второй будет заблокирован до завершения первого .
  4. Наконец, я хотел знать, какие будут лучшие конечные точки и конфигурации для этой услуги?

Я знаю, что это ЛОТЬ, но я читаю основы, и я не могу решить, что является правильным способом для достижения этих требований.

Заранее спасибо.

+0

Я рекомендую изучить использование IErrorHandler для обработки глобальных исключений в службе. –

ответ

4

1 - Да. Так же, как вы сказали, вы можете поделиться DLL API, а также вы можете использовать Mex конечной предоставить документацию на службу: https://social.msdn.microsoft.com/Forums/vstudio/en-US/3def9d4f-ae3e-468b-90e6-3a069bac6376/when-to-use-wcf-mex-endpoint

2 - Да. WCF бросает и отправляет FaultException клиенту всякий раз, когда что-то идет не так и не попадает в его собственное приложение.

3 - Клиенты работают в своих потоках или в пуле потоков (я точно не помню, но это ни в коем случае не имеет значения). Вы все равно можете использовать функции многопоточности для клиентов без проблем. WCF сам по себе поточно-безопасный, клиент мудрый. Он в основном абстрагирует все, чтобы он выглядел так, как будто он запускает цельное специальное приложение для каждого пользователя.

4 - Является ли это приложение будет веб или рабочего стола?Если вы идете с web, я рекомендую использовать nethttpbinding для надежной работы. В случае, если вы собираетесь с рабочий стол, у вас могут быть лучшие результаты с nettcpbinding.

+2

Одно важное замечание для пункта 2. Если вы разрешаете любое исключение, которое ** не **, 'FaultException' или' FaultException ', где' T' был указан в 'FaultContractAttribute' на интерфейсе, чтобы пузыриться до клиент, клиентское соединение с сервером будет автоматически закрыто и настроено на состояние '' fault '. Разрешить поднятие 'FaultException' не закрывает соединение. –

+1

В-третьих, это по-настоящему верно, но изменение экземпляра InstanceContextMode и ConcurrencyMode службы может вызвать некоторые проблемы. Но все зависит от того, какой сервис WCF строится. –

+1

4 - основано на мнениях, и вы не дали никаких аргументов, чтобы поддержать ваше мнение. –

Смежные вопросы