C#, Как инициализировать WebService

При использовании.NET 3.5, можно сделать это в остроте с LINQ:

int count = source.Count(f => f == '/');

, Если Вы не хотите использовать LINQ, можно сделать это с:

int count = source.Split('/').Length - 1;

Вы могли бы быть удивлены узнать, что Ваша исходная техника, кажется, приблизительно на 30% быстрее, чем любой из них! Я только что сделал быстрый сравнительный тест с "/once/upon/a/time /" и результаты следующие:

Ваш оригинал = 12
источник. Количество = 19
источник. Разделение = 17
foreach ( из ответа bobwienholt ) = 10-е

(Времена для 50 000 000 повторений, таким образом, Вы вряд ли заметите много различия в реальном мире.)

9
задан Darqer 25 August 2009 в 14:29
поделиться

4 ответа

Если вам требуется «инициализация» при первом подключении данного клиента к веб-службе :

Имейте метод Initialise , который возвращает токен, например GUID, который затем требуется при каждом обращении к фактическому методу "выполняет работу" вашего веб-сервиса. Затем вы можете гарантировать, что для этого клиента служба всегда инициализируется.

Если вам это нужно при первом вызове веб-службы :

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

18
ответ дан 4 December 2019 в 08:01
поделиться

Если вы пытаетесь инициализировать ресурс, который используется веб-службой, и хотите инициализировать его только один раз для каждого приложения, вы можете использовать событие Application_Start в Global.asax. Имейте в виду, что IIS будет перерабатывать пул приложений всякий раз, когда пул приложений потребляет слишком много ресурсов.

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

Если вам нужен единственный ресурс, доступный один раз во всем приложении, я бы порекомендовал вам изучить шаблон singleton.

5
ответ дан 4 December 2019 в 08:01
поделиться

Что ж, нет эквивалента инициализации J2EE, если это то, что вам нужно ... Однако каждое веб-приложение размещается в домене приложения. Время от времени приложение может быть переработано, и может быть создан новый домен приложения ...

0
ответ дан 4 December 2019 в 08:01
поделиться

Когда вы создаете приложение WebService в Visual Studio, по умолчанию будет добавлен класс с именем «Service». Когда вы посмотрите на код этого класса (Service.cs), вы увидите конструктор («public Service ()») с двумя закомментированными строками. Вы можете поместить сюда свой код инициализации или вызвать частный метод, который вы определили внутри класса Service. Этот конструктор будет вызываться только тогда, когда ваш клиент сделает свой первый вызов любого WebMethod в классе Service.

4
ответ дан 4 December 2019 в 08:01
поделиться
Другие вопросы по тегам:

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