HTML5技术

微服务--webapi实现,脱离iis,脱离tomcat - 失足程序员

字号+ 作者:H5之家 来源:H5之家 2017-03-30 11:00 我要评论( )

前言 微服务,顾名思义就是微小的单一的服务程序,单一流程,单一发布,开发和部署都可独立; 这是我的理解; 但基于web的服务,不管是webservice还是webapi等类似的服务都需要基于iis或者tomcat, 本文介绍重点绕过iis或tomc部署基于http服务明文程序; 所谓

前言

微服务,顾名思义就是微小的单一的服务程序,单一流程,单一发布,开发和部署都可独立;

这是我的理解;

但基于web的服务,不管是webservice还是webapi等类似的服务都需要基于iis或者tomcat,

本文介绍重点绕过iis或tomc部署基于http服务明文程序;

所谓明文程序就是源码发布;当然你也可以不必是源码发布,这个可以个人需求;

序言

请不要问我为什么不直接使用web现成的架构,进行开发部署,

第一:我的项目有这样的需求;原本就是一个服务程序,提供socket tcp协议数据服务;并且需要提供socket http协议服务;

第二:梳理自己的知识;

第三:对微服务和webapi概念进行强化和模拟实现;

正文开始

在阅读这篇文字之前建议优先查看之前文章,比如线程,脚本,socket 服务等;

本文先从java版本开始讲解;稍后依然会写上C#,但是代码机制都是一样的;本程序习惯作风,java和C#双版本共存;

 本人代码风格习惯,:

项目主包下面包含功能块实现;功能块里面包含单例管理器,如果需要有脚本接口处理iscript里面包含接口的处理形式

我们优先创建文件IWebApiScript

1 package net.sz.game.test.webapi.iscript; net.sz.game.engine.nio.nettys.http.NioHttpRequest; 4 import net.sz.game.engine.scripts.IBaseScript; * 8 * <br> 9 * author 失足程序员<br> <br> 11 * mail 492794628@qq.com<br> 12 * phone 13882122019<br> IWebApiScript extends IBaseScript { * 获取路由设置。自动注册版 18 * String getRoute(); action(String url, NioHttpRequest request); 24 25 }

View Code

 

 创建WebApiManager

1 package net.sz.game.test.webapi; java.util.ArrayList; 4 import net.sz.game.engine.nio.nettys.NettyPool; 5 import net.sz.game.engine.nio.nettys.http.NettyHttpServer; 6 import net.sz.game.engine.nio.nettys.http.NioHttpRequest; 7 import net.sz.game.engine.nio.nettys.http.handler.IHttpHandler; 8 import net.sz.game.engine.scripts.IBaseScript; 9 import net.sz.game.engine.scripts.manager.ScriptManager; 10 import net.sz.game.engine.szlog.SzLogger; 11 import net.sz.game.test.webapi.iscript.IWebApiScript; * 15 * <br> 16 * author 失足程序员<br> <br> 18 * mail 492794628@qq.com<br> 19 * phone 13882122019<br> WebApiManager { SzLogger log = SzLogger.getLogger(); WebApiManager IN_ME = new WebApiManager(); WebApiManager getInstance() { 27 return IN_ME; 28 } init() { NettyHttpServer addBindHttpServer = NettyPool.getInstance().addBindHttpServer("127.0.0.1", 9527); addBindHttpServer.addHttpBind( @Override run(String url, NioHttpRequest request) { ArrayList<IBaseScript> evts = ScriptManager.getInstance().getBaseScriptEntry().getEvts(IWebApiScript.class.getName()); 44 if (evts != null && !evts.isEmpty()) { 45 for (int i = 0; i < evts.size(); i++) { 46 IWebApiScript iWebApiScript = (IWebApiScript) evts.get(i); (iWebApiScript.getRoute().equalsIgnoreCase(url)) { action = iWebApiScript.action(url, request); ; 53 } 54 } 55 } request.respons(); 58 } , 10, "*"); addBindHttpServer.start(4); 62 } 63 }

 

当前我们并没有实现路由注册,

我们看看效果将会是怎么样的;

 

当我们在浏览器输入的时候,不会有任何回复产生;

接下来我们试试明文脚本的路由自动注册效果来回复请求;

我们新建项目,保持项目路径一直;

net.sz.game.test.scripts

我们在webapi的脚本目录下创建index路由监听

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • canvas实现黑客帝国矩形阵 - 风雨后见彩虹

    canvas实现黑客帝国矩形阵 - 风雨后见彩虹

    2017-03-30 09:00

  • 期待微软平台即服务技术Service Fabric 开源 - 张善友

    期待微软平台即服务技术Service Fabric 开源 - 张善友

    2017-03-27 18:00

  • 记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池 - 彩色铅笔

    记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池

    2017-03-21 09:00

  • 如何使用Vue2做服务端渲染 - 莫扬的天空

    如何使用Vue2做服务端渲染 - 莫扬的天空

    2017-03-18 15:00

网友点评
a