1 什么是服务
我们知道,C++代码可以通过编译,生成一个可执行的程序文件,可在windows上运行的,表现为一个exe文件;可以在linux上运行,则不需要后缀名。
1.1 服务是一个可执行程序
一个最简单的C++程序,是经典的“Hello world!”。
这段代码,可以编译为一个可执行文件,其执行结果是在控制台上打印一行文字“Hello world!”。
服务首先是一个可执行程序,它可以在操作系统上运行,执行相应的任务。
那是不是所有的可执行程序都可以称为服务呢?如果不是的话,服务和普通的可执行程序有什么区别?
1.2 服务是一个可长时间运行的程序
上面的“Hello World!”程序,执行速度很快,如果是windows版本的exe程序,双击执行的话,可能只看到黑框一闪,连输出的内容都来不及看清楚。
服务一般可以长时间运行,我们对上面的程序进行简单修改。
这个程序执行后,可以每隔10秒输出一次Hello world,并打印时间信息。
这已经有一个服务的雏形了,它可以定时向外输出时间信息,我们可以把定时输出时间信息,认为是一种对外的服务。
1.3 服务对外部提供特定的价值输出
上面的程序通过定时调用time函数,从系统中获取时间信息,并将其输出到控制台。这已经可以称为一个本地服务了。
我们可以很容易的将输出位置,改为一个文件。
如果增加了网络访问能力,可以将其改写为一个网络服务。
增加网络通信功能,可以改写为定时发送邮件的服务。
增加一个监听端口,响应客户端的请求,回复客户端当前服务器时间,就是一个简单的网络时间查询服务了。
综上所述,我们可以给服务一个定义:
服务是一个可以长时间运行的可执行程序,它通过处理输入信息,对外提供特定的价值输出。
当然,服务一般还具有以下特征:
可以在后台静默执行,不需要显示控制台或其他UI界面
可以注册到操作系统,由操作系统管理其启动、停止等行为
可以通过日志输出服务运行状态
可以接受用户请求,并给出符合预期的响应
后面的章节,我们将会逐步实现一个简单的服务框架
Last updated