现在,我有一个ASP.NET MVC应用程序。在ASP.NET MVC应用程序中,我有几种方法可以从外部windows桌面(而不是我的)应用程序(通过tcp/ip)检索数据。现在,我想将这个方法移到外部服务(程序),以及其他方法(发送电子邮件消息和其他进程,现在运行在单独的线程中)。这是我第一次体验web服务/wcf。那么,更好的方法是: wcf,web服务,win服务?
谢谢
详细信息:
在TCP应用程序中,我从外部桌面(而不是我的)应用程序(通过ASP.NET /IP)获取各种信息。例如,在这个程序中创建事件:电影,体育,剧院,和他们的日程安排。另外,某一届会议还有多少个席位,还有许多其他席位。
不同类型的信息可以以不同的方式获得。有时,我会检查每一分钟是否有更新(事件列表、分配器)。有时候,我需要每一分钟的时间去获取其他的信息(还有多少个座位可以供会议使用)。因此,我有许多任务都是在一个单独的线程和方法中进行描述的。
对于来自外部win程序的更新,请使用以下方法:
protected void Application_Start()
{
AddTask("UpdateFromExternalProgram", "60", 60);
}
private static CacheItemRemovedCallback _onCacheRemove = null;
public static void AddTask(string name, string value,int seconds)
{
_onCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
HttpRuntime.Cache.Insert(name, value, null,
DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
CacheItemPriority.NotRemovable, _onCacheRemove);
}
private static void CacheItemRemoved(string key, object value, CacheItemRemovedReason reason)
{
if (reason == CacheItemRemovedReason.Expired)
{
AddTask(key, value.ToString(), Convert.ToInt32(value));
GetUpdatesFromExternalProgram();
}
}
private static void GetUpdatesFromPremiera()
{
//creates TCP/IP client, send request, and parse response
}另外,在一个单独的线程中发送所有的电子邮件(注册,反馈,其他信息):
ThreadPool.QueueUserWorkItem(new WaitCallback(SendEmailInSeparateThread), senderInfo);而且,我想将这个功能转移到其他应用程序中: wcf、web服务或win服务。
发布于 2012-05-27 06:41:44
您应该在避免执行反复出现的后台任务应用程序中使用ASP.NET。Windows服务是实现此功能的更好选择。
https://stackoverflow.com/questions/10771658
复制相似问题