首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是我的任务的最佳选择(wcf,web-service,)?

什么是我的任务的最佳选择(wcf,web-service,)?
EN

Stack Overflow用户
提问于 2012-05-27 04:29:10
回答 1查看 615关注 0票数 1

现在,我有一个ASP.NET MVC应用程序。在ASP.NET MVC应用程序中,我有几种方法可以从外部windows桌面(而不是我的)应用程序(通过tcp/ip)检索数据。现在,我想将这个方法移到外部服务(程序),以及其他方法(发送电子邮件消息和其他进程,现在运行在单独的线程中)。这是我第一次体验web服务/wcf。那么,更好的方法是: wcf,web服务,win服务?

谢谢

详细信息:

在TCP应用程序中,我从外部桌面(而不是我的)应用程序(通过ASP.NET /IP)获取各种信息。例如,在这个程序中创建事件:电影,体育,剧院,和他们的日程安排。另外,某一届会议还有多少个席位,还有许多其他席位。

不同类型的信息可以以不同的方式获得。有时,我会检查每一分钟是否有更新(事件列表、分配器)。有时候,我需要每一分钟的时间去获取其他的信息(还有多少个座位可以供会议使用)。因此,我有许多任务都是在一个单独的线程和方法中进行描述的。

对于来自外部win程序的更新,请使用以下方法:

代码语言:javascript
复制
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
}

另外,在一个单独的线程中发送所有的电子邮件(注册,反馈,其他信息):

代码语言:javascript
复制
ThreadPool.QueueUserWorkItem(new WaitCallback(SendEmailInSeparateThread), senderInfo);

而且,我想将这个功能转移到其他应用程序中: wcf、web服务或win服务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-27 06:41:44

您应该在避免执行反复出现的后台任务应用程序中使用ASP.NET。Windows服务是实现此功能的更好选择。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10771658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档