F # скрипт для приложения - PullRequest
1 голос
/ 12 июня 2010

Я написал два небольших сценария,

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

Второй периодически считывает цену акций некоторой ценной бумаги из кэша цен первой программы и выполняет расчет прихода.

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

Может ли кто-нибудь указать мне правильное направление?

Спасибо, -Sudaly

Ответы [ 2 ]

3 голосов
/ 12 июня 2010

Должны ли они быть отдельными программами / скриптами?

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

Вот стартер-блог для этой стратегии:

http://blogs.msdn.com/b/dsyme/archive/2010/02/15/async-and-parallel-design-patterns-in-f-part-3-agents.aspx

В основном один агент просто сидит в цикле: асинхронное чтение из канала, цена обновления

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

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

На самом деле, вам даже не нужен агент, может быть только асинхронная работа в фоновом режиме.Что-то вроде

// first script
let mutable lastPrice = 0.0
async {
    while true do
        let! nextval = namedPipe.AsyncRead()
        lastPrice <- nextVal
} |> Async.Start 
// second script
while true do
    System.Threading.Thread.Sleep(1000)
    printfn "%f" (calc lastPrice)

, если это поможет.

2 голосов
/ 12 июня 2010

Есть много способов.

  1. .Net Remoting
  2. Трубы
  3. Текстовые файлы на диске
  4. посредническая служба (веб или локальная)
  5. wcf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...