最近在做一个仓库的程序,需要在通过互联网运行,自己又没有b/s的经验。客户的数据库服务器,又不会公布到公网上。我现在准备建一个wcf提供相当于sqlhelper的方法,让客户端调用执行返回数据。大家没有朋友这样做的吗?这样最大的问题是直接传递sql字符串安全问题及多传sql字符串效率问题吧?还没有其它更好的解决方案。定义接口来实现的话,太复杂了,时间上又来不及!谢谢!

解决方案 »

  1.   

    WCF Data Services
    http://msdn.microsoft.com/en-us/library/cc668792(v=vs.100).aspx使用的时候注意安全。
      

  2.   

    这里有个中文的简单介绍:
    WCF Data Service QuickStart
    http://www.cnblogs.com/shanyou/archive/2010/02/14/1668210.html
      

  3.   


    谢谢,网上搜索看到了,因为我现在是要布署,客户端。如果采用这种试,我以前积累的代码,基本上都不可以用。我相信估计没有人让wcf来直接执行sql吧。
      

  4.   

    WCF操作数据库都是有风险的,传sql语句也没有什么不可以的。
    就是要在风险,性能,开发效率上找个平衡点罢了。如果你的网站已经是以sql语句方式调用数据库,说明存在漏洞的几率已经很大了。改成WCF也不会更糟糕,只要保证 只有你的网站,也就是WCF客户端能访问WCF,就可以了。
      

  5.   


    我的不是网站,是客户端。之前我自己写了一个关于界面、权限、查询、orm等的c/s客户端框架,最近需要做一个在互联网上运行的程序,企业管理程序。因此不想重新做,只需要数据操作替换就行了。经过一晚上研究,现在采用sql字符串的方式,基本测试成功了达到了我的要求,之前框架代码全部都可以用。但是在实际使用过程,现在发现一个问题就是,我在生成sql语句与参数对象集合,总是提示不成功,参数达到四十多个。自己使用XmlSerializer又能序列化成功。发现不好找原因。
      

  6.   

    没有必要使用什么又大又慢的WCF。例如普通人都知道的支持ajax类似的轻量级http请求就可以,返回数据集合数据使用标准的Json Array格式表示。这样做的问题是,不论谁都能胡乱修改数据了。因为你没有业务逻辑层,而是在表现层直接去操作DAL。
    其实那些根本不接受基本的分层开发方式的人,都找这个借口。一旦这样的借口成立了,往往就更懒得去改变了。关键是,如果你已经有了几十个BLL服务需要客户端调用,你就不会找这种借口。而很多人没有一个开放的业务逻辑系统,“为了三层而三层”地空谈按照业务接口开发,那么自然就会总是背弃自己的主张
      

  7.   

    比如你看例如淘宝api、腾讯api之类的系统,它们也许不能像网页或者QQ一样直接地看上去获得什么利润,但是这是一个控制各种客户端的接口层。有了这个层,那么可以让更多的客户端开发人员、软件公司不要去自己发明什么服务器端,而是在自己的平台上开发流行的应用。并且自己的通过服务来保证业务逻辑上的一致、高效和安全。而不是提供一个任何人都可以随便浏览和修改数据记录的数据库作为api!
      

  8.   


    1、请问除了wcf,我还可以使用什么方式,自己实现socket吗?2、业务逻辑层 我目前是已实现,但是之前一直都是在局域网,这次要放在互联网上用。所以我的业务逻辑层在客户端了。3、分层借口,但是实际上很多项目,没有时间去做这个,很短的周期,又要看到效果。也许这是也垃圾项目越来越多的原因。又经过半天的测试,现在的项目,也可以支持使用传递sql正常运行,放在云主机上。
      

  9.   

    wcf无疑是最简单的实现远程调用和中间件的方式。