Это проверит имя службы вашей системы и имя нужного вам сервиса, которое вы можете указать в параметре
namespace ServiceName
{
using System;
using System.ServiceProcess;
class Service
{
public static bool IsServiceInstalled(string serviceName)
{
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController service in services)
{
if (service.ServiceName == serviceName)
return true;
}
return false;
}
}
}
Я предполагаю, что вы имеете в виду многоуровневую (логические единицы разделения), а не многоуровневую (физические единицы разделения / развертывания). Примером многоуровневой системы может быть веб-сервер (1 уровень), доставляющий веб-страницы (другой уровень), который использует данные из базы данных (3-й уровень).
Обычная цель многоуровневой архитектуры - разделить обязанности. У этого есть два ключевых преимущества (среди прочего).
Прежде всего, ваш дизайн будет более ясным, поскольку обязанности не будут запутаны, и, следовательно, код будет легче читать, понимать и поддерживать.
Во-вторых, скорее всего, вы »
Что ж, если у вас есть веб-сайт ... Вероятно, у вас есть какой-то код Javascript, так что это один раз, у вас есть бизнес-логика на сервере и у вас есть база данных для хранения вещей. На мой взгляд, это три уровня. Конечно, вы можете использовать сохраненные процессы в базе данных и пропустить уровень бизнес-логики, поэтому при желании можно создать веб-сайт с двумя уровнями, но если вы не хотите использовать сохраненные процессы, у вас будет три уровня.
Спасибо FinnNk, но позвольте мне дать вам пример того, что происходит, когда вы не разделяете свои уровни. Я уже много лет работаю над проектом, с которым плохо разошлись при рождении. Все три уровня - даже больше, если верить тому, что сказал Tuinstoel - объединены в отдельные страницы JSP. Я уверен, что в то время это казалось умным решением (быстрее писать код, когда вы только начинаете), но это чудовище росло и росло, и никто не нашел времени на рефакторинг.
Теперь у нас есть 2000+ JSP страниц, с разбросанным по всей площади повторяющимся кодом. Внесение изменения в схему требует тщательного поиска с возвратом, чтобы выяснить, какие страницы могут быть затронуты, и индивидуального тестирования каждой из этих страниц. Никто из руководителей не считает достаточно важным тратить время на то, чтобы исправить это - краткосрочные выгоды, долгосрочные убытки.
Делайте. Не. Идти. Эта. Маршрут.
Разделение уровней приводит к лучшему, более быстрому, более тестируемому и более модульному коду. Вы будете благодарить себя за это, и (что более важно) люди, которые придут после вас, будут вам благодарны за это.
Некоторые базы данных открывают интерфейс rest для внешнего мира, например базы данных NoSQL CouchDB и RavenDB. Это означает, что Javascript, работающий в вашем браузере, может обращаться к базе данных без промежуточного уровня.
См., например: http://www.infoq.com/news/2010/06/couchdb
«Хорошо работающий интерфейс HTTP/REST и API Чистый и простой двухуровневый приложения (html+javascript в браузер + диван + javascript в качестве сервера)"
Oracle имеет веб-сервер внутри, вы можете использовать хранимые процедуры, которые также открывают остальной интерфейс для внешнего мира. Таким образом, JavaScript в вашем браузере также может вызывать базу данных Oracle без промежуточного
Вам всегда нужен средний уровень, когда все, что вам нужно, это получить некоторые данные из базы данных? Я сомневаюсь в этом.
(TTT, ранее известный как Tuinstoel)