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,但自已没搭建过,只用过别人的

  • 相关阅读:
    H3C Comware V5、V7平台交换机分类
    如何从症状上区别风寒感冒与过敏性鼻炎
    rdp3389mstsc使用剪贴板重定向通过远程桌面服务或终端服务会话复制大于 2 GB 的文件 (复制) 会以静默方式失败
    小区光纤PON接入组网方式与案例
    Esxi6.7网络trunk端口设置和vlan端口设置访问
    安装VCenter 6.7的系统要求
    win10自定义时间服务器
    fabric基础设施管理-(四)多机-动态新增组织节点
    fabric基础设施管理-(三)单机-动态新增组织节点
    fabric基础设施管理-(二)基础网络搭建
  • 原文地址:https://www.cnblogs.com/liuyouying/p/6505379.html
Copyright © 2011-2022 走看看