`
zeroliu
  • 浏览: 195923 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UMP编程比赛:封装TCP连接池和DAL客户端接口库。(7.27更新)

阅读更多
UMP编程比赛:封装TCP连接池和DAL客户端接口库。(更新)
题目:封装TCP连接池和DAL客户端接口库。(共100分)
链接:http://nikeliu.goodluckwith.us/wp/archives/254
链接:http://zeroliu.iteye.com/admin/blogs/1596159
参考:\\10.10.38.134\common\53-MPSP框架库\ 目录,『umpay_bs3_v4.1531.110818-demo.jar』中dal部分Dalet4Test和DalClientsTest2等测试及样例代码。
参考:\\10.10.38.134\common\53-MPSP框架库\ 目录,『bs4dal-run-0719.zip』文件,针对win32服务端运行包。(建议jdk6环境)
参考:\\10.10.38.134\common\53-MPSP框架库\ 目录,『bs4dal_run_0727.tar.gz』文件,针对win32/linux的服务端运行包。(建议jdk6环境)
更新:\\10.10.38.134\common\53-MPSP框架库\umpay_bs3_v4.1990.120821.jar 【如将EC字段当SEQ使用,则可支持异步长连接模式

(一)功能性需求:(共50分)
1)定义DAL客户端的interface接口类。(5分)
2)实现通用TCP连接池管理,包括链路数控制、自动重连控制,链路状态检测和维护等。(10分)
3)实现两个Dalet测试服务,并部署在DalServer中用于测试。(5分)
3.1)服务有效性验证:无需认证身份即可访问(Dalet4TestNoAuth)
GET http://localhost:8080/dal/testnoauth.xml 执行doList()返回List<String>类型
GET http://localhost:8080/dal/testnoauth.txt 执行doList()返回List<String>类型
POST http://localhost:8080/dal/testnoauth.xml 执行doCreate()返回Boolean类型
GET http://localhost:8080/dal/testnoauth.xml?METHOD=POST (同上,仅针对HTTP协议,执行POST操作)
GET http://localhost:8080/dal/testnoauth/fcode.xml 执行doSelect()返回Map<String,String>类型
PUT http://localhost:8080/dal/testnoauth/fcode.xml 执行doUpdate()返回Boolean类型
GET http://localhost:8080/dal/testnoauth/fcode.xml?METHOD=PUT (同上,仅针对HTTP协议,执行PUT操作)
DELETE http://localhost:8080/dal/testnoauth/fcode.xml 执行doDelete()返回Integer类型
GET http://localhost:8080/dal/testnoauth/fcode.xml?METHOD=DELETE (同上,仅针对HTTP协议,执行DELETE操作)
3.2)服务有效性验证:需要认证身份才能访问(Dalet4TestAuth:假设用户lius的密码为liuspwd,允许访问Dalet4TestAuth服务。也可定义其他用户。)
GET http://localhost:8080/dal/testauth.xml?Auth-Path=/dal/auth/lius.xml?nonce=123&Auth-From=127.0.0.1&Auth-Value=47A8E037277997B232E262E106CA2477  执行doList()返回List<String>类型
3)通过CM20协议访问DAL服务,无身份认证信息(参考附录1:报文协议CM20定义)。(5分)
4)通过CM20协议访问DAL服务,含身份认证信息(参考附录2:DAL认证算法定义)(10分)
5)完成客户端接口性能自测(输出类似apache/ab的测试指标)(15分)

(二)功非功能性需求:(共50分)
1)(10分)易用性,可配置,易测试。
2)(10分)安全性,健壮性(如,身份认证、IP校验、防重放攻击等)
3)(10分)高可用,高可靠
4)(10分)高性能,易扩展(如,支持多IP负载均衡)
5)(10分)多功能,易扩展(如,连接池支持其它协议)

(三)功其它要求:
1)依赖较少,尽量独立。(尽量少使用BS3中相关类)
2)不限编程语言。(可使用Java,C,C++,PHP,Ruby,Python等)
3)不限模式(推或拉)。
4)不限BIO或NIO模式。

(四)功评分标准:
采用专家评审方式,由至少5个专家,分别对功能性需求和非功能需求实现情况打分,总分100分,取平均值。

(附录1)报文协议CM20定义,为固定包头加不定长包体模式。
包头字段均为定长字符串类型。
请求包体为一个序列化的Map<String,String>对象。包体必须包含URI和METHOD两项内容,前者为资源uri确定的path路径,后者为操作方法,如GET、PUT、POST、DELETE等
响应包体可能是序列化的List,Map,Boolean,Integer等任意对象。
VER Char(4) 【=CM20】
FMT Char(4) 【=JAVA|J2GZ|GSON|...】
EC Char(2) 【=00】
CS Char(2) 【=GB】
LEN Char(8) 【报文总长度,含包头20字节】
BODY Byte[] 【序列化的任意数据对象,长度=(LEN-20)】

补充:具体序列化算法有多种,根据包头的FMT来定义。
FMT=JAVA时,直接使用Java自带的序列化方式,将整个对象序列化为byte[]类型。
FMT=J2GZ时,直接使用Java自带的序列化方式,将整个对象序列化为byte[]类型后,再做gzip压缩处理。
FMT=GSON时,采用Google定制的gson-1.4.jar库,将整个对象序列化一个JSON文本,在转为byte[]类型。【客户端用gson无法解析List<Map>等复杂对象,可以用Jackson包来解析。

补充:服务端支持4种字符集,客户端至少需要支持GB,也可都支持。
CS=GB {GB2312,GBK,GB18030}
CS=U1 {UTF-8}
CS=U2 {UTF-16LE}
CS=B5 {BIG5}

补充:
链路检测报文(心跳报文):请求:FMT=NULL(无操作),LEN=20(无包体)。响应和请求相同。
链路检测报文(心跳报文):CM20NULL00GB00000020,CM20NULL22GB00000020,CM20NULL33GB00000020,CM20NULL99GB00000020

(附录2)DAL认证算法定义。
认证参数名:Auth-Path,Auth-From,Auth-Value,Auth-Nonce
认证算法一:Auth-Value = bcd(md5(Auth-Path|pass|Auth-From|Auth-Nonce))
认证算法二:Auth-Value = bcd(md5(Auth-Path?nonce=x|pass|Auth-From|null))
补充:Auth-From支持多IP地址,用逗号分隔
例子:假设用户lius的密码为liuspwd
- 认证算法1原始数据 = /dal/auth/lius.xml|liuspwd|127.0.0.1|123
- 认证算法1相关参数 = {Auth-Path=/dal/auth/lius.xml, Auth-Nonce=123, Auth-From=127.0.0.1, Auth-Value=2D16B05EEFBBFCD59BEF15489091C31F}
- 认证算法2原始数据 = /dal/auth/lius.xml?nonce=123|liuspwd|127.0.0.1|null
- 认证算法2相关参数 = {Auth-Path=/dal/auth/lius.xml?nonce=123, Auth-From=127.0.0.1, Auth-Value=47A8E037277997B232E262E106CA2477}
分享到:
评论
1 楼 zeroliu 2012-09-03  
测试评论。。。

相关推荐

    libJavascript-DAL:用于 JavaScript 的 DAL 客户端库

    用于 JavaScript 的 DAL 客户端库 文件src/main/dal-client.js包含整个库。 src/demo一个简单的使用src/demo 。 lib目录包含所需的库: lodash.js(首选)或 underscore.js sha1.js jquery-1.9.1.js(其他版本...

    对DAL数据访问层的封装,一个泛型接口,一个实现泛型接口的父类

    在.NET开发领域,数据访问层(DAL)是应用程序与数据库交互的重要组成部分,它负责处理所有与数据相关的操作,如查询、插入、更新和删除记录。在这个特定的案例中,我们看到的是一个使用了Entity Framework(EF)...

    ProE Quick Reference

    - `DAL`:视图更新; - `DAL`:图纸样式设置; - `DAL`:图纸背景设置; - `DAL`:图纸边界设置; - `DAL`:图纸标题栏设置。 - **分析工具**: - `DAL`:应力分析; - `DAL`:应变分析; - `DAL`:变形...

    DAL.zip_E9A_SQLHelper_dal库_dbhelper_oracle

    在这个压缩包中,DAL库可能是由一系列类组成,这些类封装了各种数据库操作,如查询、插入、更新和删除等,以简化对Oracle数据库的访问。 SQLHelper类是.NET框架中一个非常有用的工具,它提供了一种简便的方式来执行...

    通用Bll 通用Dal

    - `BaseBll`和`BaseDal`类:这是BLL和DAL层的基类,提供了通用的方法和属性,如数据访问的接口、事务处理等。 - `ReflectionHelper`类:封装了反射相关的操作,方便其他类使用。 - `AutoMapping`:可能包含了一个...

    DAL.rar_AutoCoder_DAL_数据库接口_数据访问层

    DAL是一个抽象层,它封装了对数据库的低级操作,如查询、插入、更新和删除数据,使得应用程序无需直接与数据库API交互,降低了耦合度,提高了代码的可维护性和可复用性。在C++中,实现这样的接口通常涉及到数据库...

    携程开源DAL代码生成器

    整个框架包括代码生成器和客户端。工作模式是使用代码生成器在线生成代码,通过DAL客户端完成数据库操作。生成器具有丰富的向导指引,操作简单清晰,即可以批量生成标准DAO,也可以在方法级别定制数据库访问。客户端...

    基于.net sql server的连接池管理(支持事务管理)类库

    基于.net sql server的连接池管理(支持事务管理)类库 轻松实现事务, 示例: public SqlTransaction Transaction { get { return this._transaction; } set { this._transaction = value; userdal....

    c# asp.net DAL数据访问层通用库源码

    数据访问层(DAL)的主要职责是为上层应用提供透明的数据操作接口,包括数据的查询、插入、更新和删除等基本操作。在C# ASP.NET项目中,DAL通常会使用ADO.NET、Entity Framework、Dapper或其他ORM框架来实现。这些库...

    ASP WEB应用DAL层类封装源程序

    3. **连接池**:ASP.NET默认使用ADO.NET的连接池技术,以优化数据库连接的创建和释放,提高系统性能。 4. **事务管理**:如果`Database`类支持事务,那么会包含开始、提交和回滚事务的方法,用于执行原子性操作。 5....

    ground_js:Node.js的地面DAL库

    《Node.js的地面DAL库——Ground JS》 在Node.js的开发环境中,数据访问层(Data Access Layer,简称DAL)是应用程序与数据库交互的核心部分。Ground JS,作为一个专门为Node.js设计的地面DAL库,旨在提供高效、...

    C#封装很完美的数据访问类

    在C#编程中,数据访问类(Data Access Layer,DAL)是软件架构中非常重要的一层,主要用于处理数据库交互。一个“封装很完美的数据访问类”应该是高效、灵活、可复用且易于维护的。以下将详细阐述C#中创建这样一个...

    后台存储过程及DAL代码模板

    6. **连接池管理**:为了提高性能,通常使用连接池来管理数据库连接,确保资源的有效利用。 模板化DAL代码可以进一步提高开发效率,例如,可以使用代码生成工具自动生成基础的DAL代码,然后根据项目需求进行定制。...

    DLL接口封装三层数据库

    在Delphi编程环境中,开发者经常使用DLL(动态链接库)来实现不同层之间的接口封装,以便于组件的独立开发和复用。 标题中的"DLL接口封装三层数据库"意味着我们将探讨如何在Delphi中利用DLL来封装数据库操作,并...

    自动生成DAL. 和Model层的代码工具,源码,CodeGen

    DAL层通常包含了对数据库的操作,如查询、插入、更新和删除等,而Model层则用于封装业务对象,使得业务逻辑与数据结构相分离。通过使用CodeGen,开发者可以避免手动编写这些重复性高的代码,大大提高了开发速度和...

    很有用的DAL文件(C#方面的)

    本资源提供的“DAL文件”很可能包含了一些预封装好的C#数据访问组件,旨在简化数据库操作,减少开发者编写重复代码的工作量。 C#语言是Microsoft公司推出的一种面向对象的编程语言,广泛应用于Windows平台上的各种...

    DAL.rar_DAL

    `SqlDatabase`类可能会封装了与SQL Server数据库进行通信的所有逻辑,包括打开和关闭连接、执行SQL语句、处理事务等。它可能使用ADO.NET组件如SqlConnection、SqlCommand等来实现这些功能。例如,该类可能包含方法如...

    在ASP.NET 2.0中操作数据:处理BLL和DAL的异常(源码)

    在ASP.NET 2.0中操作数据:处理BLL和DAL的异常(源码)

    在ASP.NET 2.0中操作数据:处理BLL和DAL的异常

    在ASP.NET 2.0中操作数据:处理BLL和DAL的异常

Global site tag (gtag.js) - Google Analytics