windows服务中对外提供API接口
public class SendMqService
{
private static bool isExcute = true;
private static HttpListener listener = new HttpListener();
public static void Start()
{
System.Threading.ThreadPool.QueueUserWorkItem(w => Excute());//单独开启一个线程执行监听消息
} private static void Excute()
{
if (HttpListener.IsSupported)
{
if (!listener.IsListening)
{
listener.Prefixes.Add(AppSetingHelper.GetValue("SendMqAddress")); //添加需要监听的url,如:http://192.016.0.1:8888
listener.Start(); //开始监听端口,接收客户端请求
}
while (isExcute)
{
try
{
//阻塞主函数至接收到一个客户端请求为止
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response; var reader = new StreamReader(request.InputStream);
var mqMsg = reader.ReadToEnd();
var responseString = string.Empty; // 执行其他业务逻辑
//***************** responseString = JsonConvert.SerializeObject(new { code = , msg = "发送成功" });
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
//对客户端输出相应信息.
response.ContentLength64 = buffer.Length;
using (System.IO.Stream output = response.OutputStream)
{
output.Write(buffer, , buffer.Length);
}
}
catch (Exception exceotion)
{
Logger.Error("处理消息异常", exceotion);
}
}
}
else
{
Logger.Info("系统不支持HttpListener");
}
} public static void Stop()
{
isExcute = false;
if (listener.IsListening)
listener.Stop();
}
}
}
服务启动时需要启动监听,服务停止时需要停止监听
protected override void OnStart(string[] args)
{
SendMqService.Start();
} protected override void OnStop()
{
//停止监听
SendMqService.Stop();
}
windows服务中对外提供API接口的更多相关文章
- 亿级用户下的新浪微博平台架构 前端机(提供 API 接口服务),队列机(处理上行业务逻辑,主要是数据写入),存储(mc、mysql、mcq、redis 、HBase等)
https://mp.weixin.qq.com/s/f319mm6QsetwxntvSXpKxg 亿级用户下的新浪微博平台架构 炼数成金前沿推荐 2014-12-04 序言 新浪微博在2014年3月 ...
- 将WCF寄宿在托管的Windows服务中
在我之前的一篇博客中我介绍了如何发布WCF服务并将该服务寄宿于IIS上,今天我再来介绍一种方式,就是将WCF服务寄宿在Windows服务中,这样做有什么好处呢?当然可以省去部署IIS等一系列的问题,能 ...
- 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
在某国外大型汽车公司BI项目中,有一个子项目,需要通过大屏幕展示销售报表,程序需要自动启动和关闭.开发人员在开发过程中,发现在Win7的service中不能直接操作UI进程,调查过程中,发现如 ...
- windows 服务中托管asp.net core
在windows 服务中托管asp.net core SDK 2.1.300 官方示例 1.添加运行标识符 xml <PropertyGroup> <TargetFramework& ...
- c# 在windows服务中 使用定时器
由于最近做自动执行的程序,开始做windows服务程序, 在windows服务中如何使用定时器的时候一直失效, 以前是直接拖入timer控件,但是不能直接运行,后来在网上找了一段程序,好使了. //开 ...
- 添加 MySql 服务、Tomcat服务到windows服务中
添加 MySql 服务到windows服务中: cmd --> F:\MySql\MySqlServer5.1\bin\mysqld --install 这样用默认的 MySQL 为名称添加一个 ...
- 在windows服务中使用定时器
在windows服务中,利用winform中直接拖动timer控件的方式使用定时器是不可以的,启动服务后会发现定时器并没有执行.那么在windows服务中如何使用定时器呢? 不使用直接拖动控件的方式 ...
- 在 Windows 服务中托管 ASP.NET Core
众所周知,ASP.NET Core采用了和传统ASP.NET不同的托管和HTTP处理方式,即把服务器和托管环境完全解耦.ASP.NET Core内置了两个HTTP服务器实现,一个是基于libuv实现的 ...
- 创建寄宿在Windows服务中的WCF服务
1.创建Windows服务项目 2.Server1改名为你想要的名称,比如WinServer 3.在项目中新建一个WCF文件夹,用于存放wcf服务文件. 注:在WcfServer类的上面还要添加 [S ...
随机推荐
- Units in Android
一般使用dp,不使用px.sp啥时候用呢?给TextView设置文字大小的时候用.
- Rxjava学习(二操作符)
操作符是为了解决对Observable对象的变换的问题,操作符用于在Observable和最终的Subscriber之间修改Observable发出的事件 1.filter filter()操作符是可 ...
- Cookie的HttpOnly、secure、domain属性
Cookie主要属性 Cookie主要属性: path domain max-age expires:是expires的补充,现阶段有兼容性问题:IE低版本不支持,所以一般不单独使用 secure h ...
- Fiddler查看接口响应时间
有时候,某些接口访问过慢,我们需要测试接口查看响应时间,从而进行优化.(由于fiddler自带的没有进行响应时间的统计,所以我们需要给他添加新的规则) 首先打开Fiddler,在菜单栏上面找到Rule ...
- 洗礼灵魂,修炼python(61)--爬虫篇—【转载】requests模块
requests 1.简介 Requests 是用Python语言编写的第三方库,所以你需要pip安装,安装过程就略过了.它基于urllib,采用 Apache2 Licensed 开源协议的 HTT ...
- Python面试题(一)【转】
注:本面试题来源于网络,转载自http://www.cnblogs.com/goodhacker/p/3366618.html. 1. (1)python下多线程的限制以及多进程中传递参数的方式 py ...
- 【PAT】B1032 挖掘机技术哪家强(20 分)
#include<cstdio> const int maxx= 100010; int school[maxx]={0}; int main() { int n,schid,schsco ...
- banner图片全屏显示
<script> $(function () { function reinitSize() { var window_h = $(window).height(); var window ...
- [Eclipse+PyDev]ImportError: DLL load failed:找不到指定的模块 解决方案
1. 环境 Eclipse 4.4.2 Python 3.5 Window 8.1 2. 问题 在代码中import numpy时,提示 " ImportError: DLL load fa ...
- Python数据分析实例操作
import pandas as pd #导入pandas import matplotlib.pyplot as plt #导入matplotlib from pylab import * mpl. ...