客户端请求——>服务器中转(webapi)——>服务器(webapi)——>访问数据库,难道我要在中转服务器的webpai里把所有控制器方法再写一遍来跟服务器的webapi一一对应?

解决方案 »

  1.   

    服务器webapi提供一个访问数据库的接口.常用的 也就那么几个 增删改查分页分组之类的..然后发布成web服务. 可以理解成数据访问服务dbapi.在中转的地方,写一个DLL针对 数据库的操作 做一个封装 去访问dbapi.泛型的用于封装dbapi的请求.然后在中转里添加引用这个dll 去执行数据库操作..大概就是
    客户端$.get("userinfo/5",function(){});中转[route("userinfo/{id}")]
    public ihttpactionresult(int id)
    {
        var user=webapi<userinfo>().getModel(id);
        return json(user);
    }
    dllpublic T getmodel(int id)
    {
        return new webclient().downloadstring("");.......
    }服务端public ihttp.....
        select * from .... where id .....
        return ...
    大概就是这个意思..
      

  2.   

    可以的,可以用反射            config.Routes.MapHttpRoute(
                    name: "RestQuery",
                    routeTemplate: "rest/{namespace}/{mod}/query/{pagesize}/{pageindex}/{where}/{order}",
                    defaults: new { controller = "Restful", action = "query", @namespace = "user", mod = "info", pagesize = 10, pageindex = 1, where = RouteParameter.Optional, order = RouteParameter.Optional }
                    );比如上面的配置,用参数namespace和mod得到具体的表或者视图 T_USER_INFO,控制器里就能用反射获取相应的SQLDAL,反射执行下就能返回相应的数据了
      

  3.   

    我可以理解为那就是一个代理么?如果需要加个代理,哪要什么webapi,直接用反向代理服务就行。
      

  4.   

    1 如果是验证的,那么aop就好了
    2 如果是分流的,那么nginx这种
    其他的,再说
      

  5.   


    就是为了安全多加了一个服务器,本来是客户端——>服务器——>访问数据库,现在服务器放到前置机上去了,所以还要一个云服务器中转一下
      

  6.   


    就是为了安全多加了一个服务器,本来是客户端——>服务器——>访问数据库,现在服务器放到前置机上去了,所以还要一个云服务器中转一下
      

  7.   


    就是为了安全多加了一个服务器,本来是客户端——>服务器——>访问数据库,现在服务器放到前置机上去了,所以还要一个云服务器中转一下
    那你直接nginx反向代理就好了。肯定不需要部署两套一样的服务