在 Dynamics CRM 编程中,我应该向我的应用程序提取数据还是推送通知?
In Dynamics CRM Programming, Should I pull for data or Push Notifications to my App?
大家好!
我为 Dynamics CRM 编写了一段时间的代码,现在我需要为其制作一个特殊的程序。我正在考虑利用工作流程和 windows 服务。
在我的架构中,
每当特定工作流程运行时,它都会在 CRM 中创建一条 "object creation request" 记录。
驻留在同一服务器上的 windows 服务必须收到此对象的通知,加载它,处理它并将结果放回 CRM。
问题留在这里。
每当创建记录时,我应该...
- 使用 wcf 从插件或工作流调用我的 windows 服务
或者
- 让我的 windows 服务每隔几秒提取一次新记录数据。
在任何一种选择中,任何想法都将受到热烈欢迎。
谢谢大家。
我不会使用这两种方法中的任何一种。
我会使用 Microsoft Message Queue (MSMQ) 来处理通信。 MSMQ 可用于 install on Windows Server。
插件应将消息放入队列中。
windows 服务应侦听队列中的消息并在收到消息时进行处理。
网上有大量关于通过 C# 使用 MSMQ 的文档,但 here is the bare minimum:
//Send Message
MessageQueue messageQueue = null;
if (MessageQueue.Exists(@".\Private$\SomeTestName"))
{
messageQueue = new MessageQueue(@".\Private$\SomeTestName");
messageQueue.Label = "Testing Queue";
}
else
{
// Create the Queue
MessageQueue.Create(@".\Private$\SomeTestName");
messageQueue = new MessageQueue(@".\Private$\SomeTestName");
messageQueue.Label = "Newly Created Queue";
}
messageQueue.Send("First ever Message is sent to MSMQ", "Title");
//Receive Message
MessageQueue messageQueue = new MessageQueue(@".\Private$\SomeTestName");
System.Messaging.Message[] messages = messageQueue.GetAllMessages();
foreach (System.Messaging.Message message in messages)
{
//Do something with the message.
}
// after all processing, delete all the messages
messageQueue.Purge();
这样做的原因是它分离了插件和 windows 服务,并且消除了不断轮询 CRM 以获取记录的需要。
大家好!
我为 Dynamics CRM 编写了一段时间的代码,现在我需要为其制作一个特殊的程序。我正在考虑利用工作流程和 windows 服务。
在我的架构中, 每当特定工作流程运行时,它都会在 CRM 中创建一条 "object creation request" 记录。 驻留在同一服务器上的 windows 服务必须收到此对象的通知,加载它,处理它并将结果放回 CRM。
问题留在这里。 每当创建记录时,我应该...
- 使用 wcf 从插件或工作流调用我的 windows 服务 或者
- 让我的 windows 服务每隔几秒提取一次新记录数据。
在任何一种选择中,任何想法都将受到热烈欢迎。 谢谢大家。
我不会使用这两种方法中的任何一种。
我会使用 Microsoft Message Queue (MSMQ) 来处理通信。 MSMQ 可用于 install on Windows Server。
插件应将消息放入队列中。
windows 服务应侦听队列中的消息并在收到消息时进行处理。
网上有大量关于通过 C# 使用 MSMQ 的文档,但 here is the bare minimum:
//Send Message
MessageQueue messageQueue = null;
if (MessageQueue.Exists(@".\Private$\SomeTestName"))
{
messageQueue = new MessageQueue(@".\Private$\SomeTestName");
messageQueue.Label = "Testing Queue";
}
else
{
// Create the Queue
MessageQueue.Create(@".\Private$\SomeTestName");
messageQueue = new MessageQueue(@".\Private$\SomeTestName");
messageQueue.Label = "Newly Created Queue";
}
messageQueue.Send("First ever Message is sent to MSMQ", "Title");
//Receive Message
MessageQueue messageQueue = new MessageQueue(@".\Private$\SomeTestName");
System.Messaging.Message[] messages = messageQueue.GetAllMessages();
foreach (System.Messaging.Message message in messages)
{
//Do something with the message.
}
// after all processing, delete all the messages
messageQueue.Purge();
这样做的原因是它分离了插件和 windows 服务,并且消除了不断轮询 CRM 以获取记录的需要。