ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器

时间:2022-09-12 18:22:29

ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器
一:闲谈一下:
1.现在任务跟踪管理系统已经开发快要结束了,抽一点时间来写一下,想一想自己就有成就感啊!! 
2.关于任务跟踪管理系统项目中遇到的Windows服务以及Webservice的综合应用的问题。

大家好这是我第二次写博客 ,写的不好请大家多多谅解, 希望大家可以多多指正。

二:我稍微的整理了一下关于这个分布式定时器需求:
1.根据任务跟踪管理系统中的数据库的AnswerSheet 表格中找到客户编号(CustomerID 为空) ,电话号码不为空的记录
2.第一种情况:根据不为空的电话号码(从内部的过河兵系统的数据库Customer表中查询数据当然过河兵系统中要进行维护Phone电话号码)则调用Webservice API 查询客户的CustomerGUID/CustomerID 并将这个字符串返回到任务跟踪管理系统如果两个不为空则调用AnswerSheetEdit()方法更新对应的任务跟踪管理系统的AnswerSheet中的CustomerGUID/CustomerID

3.第二种情况:根据不为空的电话号码则Webservice API 查询不到客户的CustomerGUID/CustomerID那么需要在过河兵系统的Survey表格中插入AnswerSheetID 和SurveyID  
并进行更新过河兵对应的Customer表中的CustomerGUID/CustomerID 数据

4.每天夜里23:30 定时更新任务跟踪管理系统的数据以及添加删除过河兵系统的数据

5.分布式定时器的作用是定时更新任务跟踪管理系统和过河兵系统的用户以及问卷的数据。

6.Windows 定时器的源代码

 private static readonly SurveyHandle _surveyHandle = new SurveyHandle();
private static readonly WebServerInterFaceHandle _webServerInterFaceHandle = new WebServerInterFaceHandle();
public ServiceTime()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
//定义定时器
Timer myTimer = new Timer(1000);
myTimer.Elapsed += new ElapsedEventHandler(TaskTimeAction.ServiceTime);
myTimer.Enabled = true;
myTimer.AutoReset = true;
using (StreamWriter sw = new StreamWriter("D:\\任务跟踪管理定时器日志.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "定时器服务启动");
}
}
protected override void OnStop()
{
using (StreamWriter sw = new StreamWriter("D:\\任务跟踪管理定时器日志.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Stop.");
}
} /// <summary>
/// 定时器委托任务 调用的方法
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
public static void ServiceTime(object source, ElapsedEventArgs e)
{
SurveyController surveyController = new SurveyController();
if (DateTime.Now.ToString("HH:mm:ss") == "23:30:00")
{ Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss" + "夜里23:30");
List<AnswerSheet> answerSheetList = _surveyHandle.GetAnswerGuidList();
SurveyAndAnswerSheet surveyAndAnswer = new SurveyAndAnswerSheet();
foreach (var items in answerSheetList)
{
#region 定时同步更新任务跟踪管理系统以及过河兵系统的用户以及问卷的数据
AnswerSheet answerSheet = _surveyHandle.GetAnswerSheet(items.ID);
Survey survey = _surveyHandle.GetSurvey(answerSheet.SurveyID);
//进行查询AnswerIndex中的详细的内容
//AnswerSheet answerSheetModel= _surveyHandle.GetAnswerSheetDetail(items.ID);
string model = _webServerInterFaceHandle.GetCustomerJson(items.CustomerID, items.CustomerPhone);
using (StreamWriter sw = new StreamWriter("D:\\任务跟踪管理系统定时器日志.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "答卷编号:" + items.ID + "客户编号:" + model);
}
if (model != null)
{
string[] getCustomerID = model.Split('|');
string Image = null;
if (answerSheet.AttachList != null)
{
foreach (var image in answerSheet.AttachList)
{
Image += image.imgURL.Split('|').Last();
}
}
answerSheet.CustomerGUID = getCustomerID[0];
answerSheet.CustomerID = getCustomerID[1];
surveyAndAnswer.AnswerSheet = answerSheet;
surveyAndAnswer.Survey = survey;
surveyController.AnswerSheetEdit(surveyAndAnswer, "/Uploads/" + Image);
}
#endregion
}
using (StreamWriter sw = new StreamWriter("D:\\任务跟踪管理系统定时器日志.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + ":" + "结束时间");
}
}
} private SelectCusutomer.WebUseSevrices webServices = new SelectCusutomer.JieChuDianUseSevrices();//真实环境
private SelectCustomer2.WebUseSevrices _webServices = new SelectCustomer2.JieChuDianUseSevrices();//测试环境

  

三:为什么要写Windows服务和Webservice 服务
1.通过产品经理和客户的最终的确定,最后让我将这个新的功能添加进去,所以我也就积极的去做了。
用了半天的时间将定时器开发完成,最终放在ASP.NET MVC 的Global.asax 的文件中。
2.下一步我新建了一个项目Webservice API当我写这个API 的时候老大让我用Webservice而不是WCF!WCF 多好啊!!通过又是半天的学习开始写Webservice API 的服务经过调试和最后发布到测试的服务器上最终没有问题了。
3.于是两者开始进行对接通过在任务跟踪管理系统中进行调试完全没有问题对接也成功了,两边的数据库中的数据也就行更新了。
4.通过最后我将任务跟踪管理系统发布到IIS 7.0上去到了指定的时间数据没有更新找到了通过IIS闲置超时的时间为1440分钟以及修改应用程序池的配置搞了一天最终还是没有达到两边的系统的数据同步,
最终还是应用程序池回收了内存资源以及上网查了一下关于IIS具有的不稳定性。
5.最后我决定用Windows 服务进行开发定时器原因稳定性以及性能都非常好。
四:关于Windows服务的创建以及调用Webservice服务
五:通过修改Windows服务下面的
App.config:来进行修改数据库的配置的文件连接数据库字符串。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="ContactPoint" value="server=;database=TaskTrackData;uid=sa;password=sa;multipleactiveresultsets=True" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="" />
</providers>
</roleManager>
</system.web>
</configuration>
六:安装服务通过命令

CMD 以管理员身份打开然后执行就可以了。
C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe D:\WindowsService\WindowsService.exe
C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe -u D:\WindowsService\WindowsService.exe

以上内容均属于原创,转载请标明。谢谢!

ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器的更多相关文章

  1. windows server 证书的颁发与IIS证书的使用 Dapper入门使用,代替你的DbSQLhelper Asp&period;Net MVC中Action跳转(转载)

    windows server 证书的颁发与IIS证书的使用   最近工作业务要是用服务器证书验证,在这里记录下一. 1.添加服务器角色 [证书服务] 2.一路下一步直到证书服务安装完成; 3.选择圈选 ...

  2. 在Asp&period;net MVC中使用Authorization Manager &lpar;AzMan&rpar;进行Windows用户身份认证

    背景 创建需要通过Windows用户进行身份认证的Asp.net MVC应用 要点 在Asp.net MVC应用基于Windows用户进行身份认证的方法有很多,如MVC自带的Windows认证就经常被 ...

  3. Asp&period;net mvc 中View 的呈现&lpar;二&rpar;

    [toc] 上一节介绍了 Asp.net mvc 中除 ViewResult 外的所有的 ActionResult,这一节介绍 ViewResult. ViewResultBase ViewResul ...

  4. ASP&period;NET MVC中的Session设置

    最近在ASP.NET MVC项目中碰到这样的情况:在一个controller中设置了Session,但在另一个controller的构造函数中无法获取该Session,会报"System.N ...

  5. ASP&period;NET MVC中的Session以及处理方式

    最近在ASP.NET MVC项目中碰到这样的情况:在一个controller中设置了Session,但在另一个controller的构造函数中无法获取该Session,会报"System.N ...

  6. 转载ASP&period;NET MVC中Session的处理机制

    本文章转载自 http://www.cnblogs.com/darrenji/p/3951065.html ASP.NET MVC中的Session以及处理方式   最近在ASP.NET MVC项目中 ...

  7. 如何在 ASP&period;NET MVC 中集成 AngularJS(3)

    今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...

  8. 如何在 ASP&period;NET MVC 中集成 AngularJS(2)

    在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...

  9. 在 ASP&period;NET MVC 中充分利用 WebGrid &lpar;microsoft 官方示例&rpar;

    在 ASP.NET MVC 中充分利用 WebGrid https://msdn.microsoft.com/zh-cn/magazine/hh288075.aspx Stuart Leeks 下载代 ...

随机推荐

  1. 关于JS 沙箱(转)

    javascript中的沙箱并非传统意义上的沙箱,只是一种语法上的hack写法而已,javascript中处理模块依赖关系的闭包被称之为沙箱,和 ajax一样,这种sandbox coding风格是一 ...

  2. ssh环境搭建并实现登录功能

    参照了这篇博客,但是里面有些地方进行了更改 http://wenku.baidu.com/link?url=edeegTquV2eR3CJ5-zvNcJbyuq11Afp-lD2Fz2jfmuHhV1 ...

  3. Json for Java API学习

    首先声明:本文来个非常多网友的博客,我通过參考了他们的博客,大致的了解了一些项目中经常使用的Json in java 类和方法,以及关于json的个人理解 个人对json的一些简单理解 在近期的学习中 ...

  4. 简析TCP的三次握手与四次分手【转】

    转自 简析TCP的三次握手与四次分手 | 果冻想http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文 ...

  5. Xcode旧项目引入CocoaPod遇到的问题与解决

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  6. 花了一年时间开发出来的EZNest 自动套料软件

    随着国内钢结构制造业的迅猛发展,市场竞争也愈演愈烈.近来钢材价格的大幅攀升,节约用材已成为企制胜的戈键,提高钢材的利用车自然就成了目前许多企业十分关心的一件事.对十大型钢结构生产制造商来说,如留在传统 ...

  7. H5学习之旅-H5的样式(5)

    样式的引入方式 外部样式表 link rel = "stylesheet" type = "text/css" href = "mystyle.css ...

  8. MySQL 列出存储过程

    MySQL  列出存储过程 接下来介绍如何列出MySQL数据库中的所有存储过程,并显示存储过程源代码的一些非常有用的语句. MySQL为提供了一些有用的语句,可以更有效地管理存储过程.这些语句包括列出 ...

  9. Vue音乐项目笔记(一)

    看到一位小可爱的手记,这里记录一下自己需要注意的地方的链接 1.手写轮播图(上) https://blog.csdn.net/weixin_40814356/article/details/80298 ...

  10. C&num;实现在注册表中保存信息

    C#实现在注册表中保存信息 最近做的项目需要在注册表中记录一些用户设置,方便在程序下次启动时读取设置,应用上次用户保存的设置,挺简单的. 写出来,方便记忆,以后要用,可以直接改改就能用. 1 usin ...