zoukankan      html  css  js  c++  java
  • 项目中各子系统之间数据交互的方法总结与心得

    近期不是加班就是在家玩,自学进度又缓下来了,实在是难坚持啊,倒是减肥略有成效,现在最佳纪录是77.9 KG

    项目里经常要在某系统里提供一个接口给其它系统,做些数据交互,一般有这几种方式,都有用到,总结一下吧:

    1、数据库直接存取:

    如果各系统的数据库都在一台服务器上,或能通过链接服务器访问,那直接通过数据库存取数据也是可以的。

    系统里一般都有维护一张配置表,增加一个配置项,XX系统的链接服务器名和数据库名,如XXLinkServer.XXDb.dbo.

    要存取数据时,存储过程里先取出SELECT @LinkDb = XX FROM XXConfig(取出【XXLinkServer.XXDb.dbo.】),再拼接字符串,比如

    SET @SqlText = 'SELECT * FROM ''' + @LinkDb + '''XXTable;' 

    EXEC (@SqlText)

    如在同一台服务器上,则不用链接服务器,直接配置项为XXDb.dbo.,或配一台指向本机的链接服务器也可以(性能也能会受影响)

    直接存取数据库,速度快,效率高,要什么数据直接就有,各种表自已去关联

    但由于直接开放数据库,安全不好保证,取数据还好,乱写数据会影响其它系统。链接服务器为了方便都是用sa连,要配置相应用户权限的链接服务器很麻烦。而且要对表结构比较了解

    2、数据库存储过程接口

    提供一个XXInterface的存储过程,传一些ID、TYPE之类的参数进去,获取/提交数据。

    内部系统不对外开放,有点接口的意思了,但需要通过数据库后台调用。

    3、控制器方法

    增加一个开放的控制器,里面提供一些方法,传参数进来获取数据,返回字符串或Json

    和WebApi比较类似,但不如WebApi好

    4、WebApi

    其它同事推荐用这种方法,和普通控制器差不多,但一般控制器继承自Controller,WebApi继承自ApiController

    WebApi专门用来对接数据,更好控制HTTP返回码之类,对XML、JSON也支持的更好

    [FromUri]可以把URL中的参数解析成数据实体,强制不读Post的数据

    默认是[FromBody],从Post的Data中读数据

    使用过程中,如果只是基本的获取数据,感觉WebApi和普通的控制器方法区别不大,但WebApi更加通用和规范,还有很多特性可扩展(比如绑定IP、验证用户、异常获取等)

    WebApi有个巨坑的地方,如果你方法名是GetXX,那它默认就是只能用GET,哪怕加上[HTTPPOST]头也不行。。。

    方法名以Get开头,WebApi会自动默认这个请求就是get请求,而如果你以其他名称开头而又不标注方法的请求方式,那么这个时候服务器虽然找到了这个方法,但是由于请求方式不确定,所以直接返回给你405——方法不被允许的错误。
    
    所有的WebApi方法最好是加上请求的方式([HttpGet]/[HttpPost]/[HttpPut]/[HttpDelete]),不要偷懒,这样既能防止类似的错误,也有利于方法的维护,别人一看就知道这个方法是什么请求。

     

    5、WebService

    和其它公司的数据交换几乎都是通过WebService,但自已没搭建过,只用过别人的

  • 相关阅读:
    2015-05-06前端开发总结
    深入了解 Flexbox 伸缩盒模型
    Sublime text3 快捷方式(windows平台)
    移动web最简洁的滑动效果Swipe JS(适合初学者)
    谈响应式web设计代码实现
    经验分享:多屏复杂动画CSS技巧三则
    css3 animation动画效果解析
    移动H5前端性能优化指南
    php codeigniter (CI) oracle 数据库配置-宋正河整理
    jquery图片裁切+PHP文件上传
  • 原文地址:https://www.cnblogs.com/liuyouying/p/6505379.html
Copyright © 2011-2022 走看看