关闭

WebService服务重写

878人阅读 评论(0) 收藏 举报

今天终于把WebService服务重写了;并且做一下简单性能与数据传送稳定性测试;
我重写WebServer的原因有以下几个:
1、不支持服务器事件(服务器不能望客户端主动发消息)
2、调WebServer方法不方便(必须进行WebServer引用;WebServer引用的目的就是生成一些客户端代码)
3、不能发送对象(不是完全不能;是不方便)
4、必须与IIS集成
5、服务端维护不方便
6、所有服务的调用都是PUBLIC的,不能进行权限控制(在方法内可以实现)

7、方法的异常返回不方便;

以上问题我已经解决了
1、用异步实现服务器事件
2、使用简单唯一接口调用;我实现了一个名字为POST的唯一接口;定义如下:
Public Function POST(ByVal MethodFullPath As String, ByVal MethodName As String, ByVal Parameters() As Object, ByRef ReturnValue As Object) As Boolean
MethodFullPath:方法的相对虚拟路径如:system/user
MethodName:     方法名称如:Login
Parameters() : 参数数组;能自动识别参数的类型;能自动把非简单类型进行序列化
ReturnValue  :返回值
3、使用序列化实现对象的发送与接收
4、使用HttpWebRequest:HttpWebResponse:HttpListener来实现服务器与客户端的通讯;并且完全兼容IIS;也就是说服务器端可以用HttpListener服务来做服务器;也可以用IIS做服务器;能够完全的嵌入ASP.Net中;单独实现了HttpWebRequest:HttpWebResponse:HttpListener;因为HttpWebRequest:HttpWebResponse:HttpListener在windows XP SP2 或windosw 2003 SP1前不能使用
5、服务器上的所有方法都使用插件模式;在不需要修改主程序的情况下任意修改加减类、方法
6、所有服务进行统一管理;设置权限。

7、把插件中的异常进行序列化;返回到客户端。

性能与数据传送稳定性测试:
1、从服务器上提取一个表:30个字段、6万条数据共计45M;10秒搞定
2、把从服务器上提起的表发送到服务器;再返回来;40秒
3、从服务器上提取一个表:30个字段、1000条数据,2秒搞定

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9783次
    • 积分:145
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:9条
    文章存档
    最新评论