2015-08-17 9 views
0

У меня есть сайт Umbraco (v4.7), установленный на localhost.Взаимодействие с консольным приложением от Umbraco

Мне нужно сделать действие (скажем, журнал на консоль или файл) каждый раз, когда публикуется узел umbraco.

Так что мне нужно взаимодействовать с внешним приложением (например, консоли или службы Windows) с сайта Umbraco ...

мне не нужно манипулировать Umbraco сайта с помощью консольного приложения, а реагировать на Umbraco события с приложением приложения консоли (или Windos servie).

Я

public class ContentEvents : umbraco.BusinessLogic.ApplicationBase 
{ 

    void PlumbEvents() 
    { 
     // ... 
     Document.AfterPublish += new Document.PublishEventHandler(
                 Document_AfterPublish); 
     // ... 
    } 

    void Document_AfterPublish(Document sender, PublishEventArgs e) 
    { 
     // HERE I NEEDD TO CALL BY EG 
     // "MyExternalApplication" + "sender" as parameter 
     // where "MyExternalApplication" could be 
     // a ConsoleApplication or a WindowsService 
    } 

    // ... 

} 

это можно назвать что-то внешнее от этого кода?

+0

Я не знаю Umbraco, но первое, что приходит мне на ум при работе с обменом между процессами, называется pipe. Понятия не имею, если это выполнимо с веб-сайтом. – Kilazur

ответ

1

То, что вы пытаетесь сделать, на самом деле невозможно. Вместо этого вы создадите свое отдельное приложение с каким-то слушателем, который вы можете вызвать из приложения umbraco.

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

Однако, если вам действительно нужно сделать что-то более продвинутое, что невозможно сделать из вашего процесса umbraco, я бы предложил кодировать приложение, которое прослушивает события, а затем подключается к этому приложению/запускающим событиям, ударяя веб-службу внутри app (или что-то похожее на это), используя обработчики событий umbraco.

Возможно, вы сможете совершать некоторые вызовы между процессами, чтобы фактически достичь того, что вы изначально просили, но я бы сказал, что это больше проблем, чем того стоит. Решение веб-службы/http-прослушивателя также позволит вам отделить приложение от веб-сервера, запускающего экземпляр umbraco, в случае, если вам нужно запустить его на двух отдельных компьютерах.

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

+0

Я принял решение messageQueue. Большое спасибо. – Serge