none
计算机业余爱好者、SL初学者开发的SL应用,请大家有空看看提点意见。 RRS feed

  • 问题

  • 访问地址: http://tufei.jxagri.gov.cn/TFZjzx2010/

    省级管理员=> 用户名: shtf   密码:123456

    敬请不要删除我的数据。输入模拟数据是一件非常痛苦的事情,我宁愿写代码也不愿意输数据。

    说明:系统数据访问未采用WCF,采用本人书写的T4Data技术。

    1)速度快(正常网速下,从SL端读取服务器端数据库的的1万记录,80个字段,并且呈现到SL的DataGrid,不超过5秒),服务器配置要求底(安装.net 2.0, IIS 5.0就可)。经实验,传输10000条80个字段数据比WCF要快。

    2)高度集成,不需要在服务器端书写代码,哪怕是1行代码也不需要。当然更不要定义数据实体[Data Entity],你想要哪些字段就Select、Update哪些字段,全部在SL端采用类似ADO.net的方式访问后台数据库(我知道,这对SQL语句不熟悉的人有点不好,还有一点就是没有字段名称的智能提示也是个问题,就是没有字段的动态提示搞起来比WCF麻烦,其他是特别的方便)。当然我的这个T4Data解决方案支持SQL Server的存储过程。

    3)访问出来的数据以T4DataTable为载体,可以直接绑定到DataGrid。

    4)T4DataTable支持Linq, 支持SL的双向绑定, 支持.net常用数据类型(字节数组,数字,文本,日期,布尔等)。

    5)非OOB模式下,支持同步方式获取数据库数据,简化编程复杂度。

    因为计算机不是我的专业,不要靠编制程序吃饭,因此时间比较充裕,就折腾折腾,玩玩。

    该系统即将提交使用,请各位提出宝贵意见。谢谢!

     

    2010年9月8日 13:28

答案

  • 1)由于 xap 文件是在你的web发布目录下,他即使下载了,完全暴露源代码,关系也不大,因为他没办法把他破坏数据库的操作命令生成xap,再上传到你的服务器上去。xap里面的代码只能有你写,由你上传,别人该了,他没有办法上传,也就没有办法运行他写的命令。这个属于IIS要管理的范围,我不管。

    2)当然有些敏感信息,最好加密。省的人家看,以免他利用其他途径破坏数据库。

    2)T4DataTable是用SQL语句直接访问后台数据库。

    3)xap文件里面的DLL可以用fusion混淆,加大破解难度。

    4)T4DataTable 典型用法举例:

            private void GetListData()
            {
                var Sql = "SELECT * FROM Sys_ATUser WHERE UserId=@UserId";
                var Cn = new DT.T4DBConnection() { DatabaseId = "??", UserId = "??", UserPwd = "??" };  //也可以不指定任何东西,就访问默认的数据库。
                var Cm = new DT.T4DBCommandASync(Sql, Cn); //Aysnc(异步)模式, 也有Sync(同步)模式就不需要事件回调
                Cm.CommandType = DT.T4DBCommandType.Text;  //也可以是存储过程
                Cm.Parameters.AddWithValue("@UserId", "TFSoft"); //当然也可以没有参数
                Cm.ExecuteEnd += Cm_ExecuteEnd;

                Cm.Execute(DT.T4DBCommandExecuteType.Reader);
            }


            private void Cm_ExecuteEnd(object sender, DT.T4DBCommandExecuteResult e)
            {

                // if (e.ErrMsg !="") { MessageBox.Show(e.ErrMsg);} //可以检测是否有网络错误等
                // DgrList.ItemsSource = e.ReaderResult.Rows;     //直接绑定到DataGrid
                // var UserPwd = e.ReaderResult.Rows[0]["UserPwd"] + "";  //获取记录的某个字段
                // var UserPhoto = (byte[])e.ReaderResult.Rows[0]["UserPhoto"]; //获取记录的某个字段
            }

    优点:不要定义实体,不要学习新知识,用ado.net的老知识就可以了。还有就是不需要服务器端编写代码。速度比WCF快,我还准备优化,可以更快。支持在调试时捕获SQL语句的语法错误等。

    缺点:没有字段的智能提示。不是计算机专业、职业人士书写(我与计算机毫无关系),可能与计算机专业人士水平有差距,想法有不一样。

    • 已标记为答案 Mog Liang 2010年9月15日 7:52
    2010年9月9日 18:29

全部回复

  • 還不錯啊!
    2010年9月9日 3:42
  • I'm flattered.  i wanna some suggestions. thank u Ms./Mr. Leng Yue!

    2010年9月9日 9:18
  • 我也是外行,只想问问这个T4DataTable是用SQL语句访问数据库,然后用返回来的数据在客户端组装一个实体类,或者类似强类型数据集的东西,再绑定到客户端的吗? 说真的我并不觉得WCF RIA Service在服务器端用Domain Service过滤或者说封装EDM, Linq2SQL。。。等数据访问技术返回的数据(多加了一个层),然后再‘发布’到客户端是个笨方法。至少安全性角度上考虑,Domain Service决定着什么是客户端可以访问的,什么是不能访问的,什么是需要验证才能访问的等等。我是说假如某个黑客破解了楼主的客户端实现,他是不是有机会破坏数据库呢?

    2010年9月9日 16:45
  • 1)由于 xap 文件是在你的web发布目录下,他即使下载了,完全暴露源代码,关系也不大,因为他没办法把他破坏数据库的操作命令生成xap,再上传到你的服务器上去。xap里面的代码只能有你写,由你上传,别人该了,他没有办法上传,也就没有办法运行他写的命令。这个属于IIS要管理的范围,我不管。

    2)当然有些敏感信息,最好加密。省的人家看,以免他利用其他途径破坏数据库。

    2)T4DataTable是用SQL语句直接访问后台数据库。

    3)xap文件里面的DLL可以用fusion混淆,加大破解难度。

    4)T4DataTable 典型用法举例:

            private void GetListData()
            {
                var Sql = "SELECT * FROM Sys_ATUser WHERE UserId=@UserId";
                var Cn = new DT.T4DBConnection() { DatabaseId = "??", UserId = "??", UserPwd = "??" };  //也可以不指定任何东西,就访问默认的数据库。
                var Cm = new DT.T4DBCommandASync(Sql, Cn); //Aysnc(异步)模式, 也有Sync(同步)模式就不需要事件回调
                Cm.CommandType = DT.T4DBCommandType.Text;  //也可以是存储过程
                Cm.Parameters.AddWithValue("@UserId", "TFSoft"); //当然也可以没有参数
                Cm.ExecuteEnd += Cm_ExecuteEnd;

                Cm.Execute(DT.T4DBCommandExecuteType.Reader);
            }


            private void Cm_ExecuteEnd(object sender, DT.T4DBCommandExecuteResult e)
            {

                // if (e.ErrMsg !="") { MessageBox.Show(e.ErrMsg);} //可以检测是否有网络错误等
                // DgrList.ItemsSource = e.ReaderResult.Rows;     //直接绑定到DataGrid
                // var UserPwd = e.ReaderResult.Rows[0]["UserPwd"] + "";  //获取记录的某个字段
                // var UserPhoto = (byte[])e.ReaderResult.Rows[0]["UserPhoto"]; //获取记录的某个字段
            }

    优点:不要定义实体,不要学习新知识,用ado.net的老知识就可以了。还有就是不需要服务器端编写代码。速度比WCF快,我还准备优化,可以更快。支持在调试时捕获SQL语句的语法错误等。

    缺点:没有字段的智能提示。不是计算机专业、职业人士书写(我与计算机毫无关系),可能与计算机专业人士水平有差距,想法有不一样。

    • 已标记为答案 Mog Liang 2010年9月15日 7:52
    2010年9月9日 18:29
  • 我想问你这个登录系统是自己开发的吗,还是用的ASP.NET的membership
    2010年9月15日 0:54
  • 没有使用ASP.net 的membership,  自己建立的 Sys_ATUserInfo来管理系统用户。
    2010年9月15日 1:36
  • 请问一下你的T4Data 技术哪里有得下载使用啊!
    Andy
    2011年3月17日 9:10
  • T4Data是本人精心研制的。

    T=TFSoft

    4=Silverlight 4.0

    原来取名TFDat 

    2011年3月17日 14:39