Соответствующий шаблон разработки для синтаксического анализатора журнала событий?

ASP.NET Core с .NetCore - это кросс-платформенная платформа (она может работать на Windows, Linux или других платформах), высокопроизводительная платформа с открытым исходным кодом для создания современных приложений с облачным подключением к Интернету. Он имеет возможность размещать в IIS, Nginx, Apache, Docker или самообслуживании в вашем собственном процессе.

ASP.NET Core поставляется полностью как пакеты NuGet. Это позволяет оптимизировать ваше приложение, чтобы включить только необходимые пакеты NuGet. На самом деле для приложений ASP.NET Core 2.x, ориентированных на .NET Core, требуется только один пакет NuGet. Преимущества меньшей площади поверхности приложения включают в себя более жесткую защиту, снижение обслуживания и улучшенную производительность.

Не требуется установка .Net framework для запуска ядра asp.net с использованием основного приложения .net. Основное приложение ASP.NET с ядром .net - консольное приложение, которое создает веб-сервер в основном методе. Он использует веб-сервер Kestrel для запуска приложения.

Мы также можем использовать такие редакторы, такие как Visual Studio Code, Atom для запуска приложения.

Он не поддерживает Aspx, WPF, WCF и WebServices, как сейчас. Он поддерживает встроенную инъекцию зависимостей. Использует coreclr, который является средой выполнения в ядре asp.net с ядром .net.

Asp.Core с .Net framework .Net framework, с другой стороны, начался задолго до 2005 года, и он продолжал добавлять новые функции, немного сложная структура и более тяжелая. Это не перекрестная платформа. Он поддерживает Aspx, WPF, WCF и WebServices

. План использования Net Framework

. План расширения ядра ядра

6
задан Josh 20 October 2008 в 20:46
поделиться

5 ответов

Хорошо..., с одной стороны, а не единственный класс событий с объединением всех свойств или 61 класс событий (1 основа, 60 нижних индексов), в сценарии с так большим изменением, я испытал бы желание иметь единственный класс событий, который использует набор свойств (словарь, хеш-таблица, w/e пускает в ход Вашу лодку) сохранить информацию о событии. Тип события является просто еще одним значением свойства, которое помещается в сумку. Главная причина я склонился бы тот путь, состоит просто в том, потому что я был бы, ненавидят для поддержания 60 производных классов чего-либо.

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

Это предназначено, чтобы быть после совершения синтаксический анализатор или обработчик событий в реальном времени? Я имею в виду, Вы контролируете журнал, поскольку события входят, или просто анализирующий файлы журнала на следующий день?

3
ответ дан 17 December 2019 в 00:17
поделиться

Рассмотрите фабрику В наилегчайшем весе объектов Стратегии, один в 'классе' события.

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

2
ответ дан 17 December 2019 в 00:17
поделиться

Возможно Хешированные Объекты Адаптера (если можно найти хорошее объяснение его в сети - им, кажется, недостает.)

1
ответ дан 17 December 2019 в 00:17
поделиться

Рядом с вершиной:

Мне нравится предложение в принятом ответе о наличии только одного класса с картой свойств. Я также думаю, что behvavior может быть собран этот путь также:

class Event
{
    // maps property name to property value
    private Map<String, String> properties;

    // maps property name to model updater
    private Map<String, ModelUpdater> updaters; 

    public void update(Model modelToUpdate)
    {
        foreach(String key in this.properties.keys)
        {
            ModelUpdater updater = this.updaters[key];
            String propertyValue = this.properties[key];

            updaters.updateModelUsingValue(model, propertyValue);
        }
    }

}

Класс ModelUpdater не изображается. Это обновляет Ваше основанное на модели на свойстве. Я составил цикл; это может или не может быть, каков Ваш алгоритм на самом деле. Я, вероятно, сделал бы ModelUpdater большим количеством интерфейса. Каждый реализатор был бы на свойство и обновит модель.

Затем мой "основной цикл" был бы:

Model someModel;

foreach(line in logFile)
{
    Event e = EventFactory.createFrom(line);
    e.update(someModel);
}

EventFactory создает события из файла. Это заполняет две карты на основе свойств события. Это подразумевает, что существует некоторый способ для соответствия свойству его связанной модели updater.

У меня нет необычных имен шаблона Вас. Если у Вас есть некоторые сложные правила как то, если Событие имеет свойства A, B, и C, то проигнорируйте модель updater для B, то этот подход должен быть расширен так или иначе. Скорее всего, Вы, возможно, должны были бы ввести некоторые правила в EventFactory так или иначе с помощью Шаблона Объекта Правила. Там Вы идете, существует имя шаблона Вас!

1
ответ дан 17 December 2019 в 00:17
поделиться

Я не уверен, что понимаю проблему правильно. Я предполагаю, что существует сложная 'модель, обновляющая логику'. Не распределяйте это через 60 классов, сохраняйте его в одном месте, перемещайте его из классов событий (Шаблон посредника, вид).

Ваш Посредник будет работать с классами событий (я не вижу, как Вы могли использовать Боксера наилегчайшего веса здесь), события могут проанализировать себя.

Если правила обновления очень сложны, Вы не можете действительно заняться проблемой с языком программирования общего назначения. Рассмотрите использование основанного на правиле механизма или чего-то вроде этого.

0
ответ дан 17 December 2019 в 00:17
поделиться
Другие вопросы по тегам:

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