散分:独立于微软的WebService、小型IIS,将BS通信模式搬进CS

codingfunny 2009-07-16 05:07:37
重发,这次加了分,但是,抱歉,好像我只能散到100分。。。
很少上CSDN。用户名和密码老忘记,上一个用户名(zhou138168...)怎么也登陆不上去,无奈,只能重新注册一个马甲,上一次发了个帖子,标题是《代码自动生成、Com开发、串行化反串行化、UI等太多了》 也许有人还记得呵呵。

最近花了十天时间,写了个库,旨在将BS的优秀通信模式搬进CS,初步实现了HTTP1.1的常用,如Get ,Head,Post,支持文件的上传下载,支持Redirect。可做简单的Web 服务器。出发点是为了在CS模式下,通信更方便。最关键的是,有了这些,程序员可以很方便的在CS模式下,按照HTTP协议去完成通信工作。参考的标准是.net 2.0 相关类及JavaServlet,写了Vb6下的实现。
如下:
HTTPContent
HTTPContentDetail
HTTPContentDetails
HTTPFileCollection
HTTPPostedFile
HTTPRequest
HTTPRequestClient
HTTPRequestHeader
HTTPResponse
HTTPResponseHeader
HTTPServer
HTTPServlet
IHTTPServerEventListener
KeysCollection
NameValueCollection
Uri
WebServiceInvoke
WebServiceInvokeArg
WebServiceInvokeArgs
SoapClient
等,其中HTTPRequestClient,完全兼容微软XMLHttpRequest,这个可是Ajax的核心呀,当然了,我改进了同步调用的弊端。
另外的亮点,是基于此的WebService,如,一台服务器负责各客户端的登陆,注销,IP地址位192.168.1.2,另一个服务器提供图片的业务,如图片的下载现实和上传更新等。IP地址为 192.168.1.3,两个地方分别建立和注册两个WebService,如下:
服务端搭建WebServcie很简单:

Call RegisterWebService(New Server,"Server")
'//192.168.1.2
Call RegisterWebService(New PicService,"PicService")
'//192.168.1.3
'//这样,WebService就被搭建了。


关于Webservice Server 客户端登陆,代码如下:

Dim oServer As Object
Dim intRet As Integer
Set oServer = NewSoapClient("http://192.168.1.2:80/", "Server")
intRet =oServer.Login(sUser,sPwd)
if intRet = 0 then
msgbox "登陆成功"
elseif intRet =1 then
msgbox "用户名不存在"
elseif intRet =2 then
msgbox "密码错误"
end if
'//仅示例用,具体逻辑可以自己定义。这样登陆的业务逻辑,就放到了
'//192.168.1.2 上执行,结果返回给客户端。根据同样的道理。您也可以写出
'//注销的代码。如果按照这样的逻辑,一个局域网聊天,或是文件共享的程序(飞鸽传书?),不用费多少代码,就可以实现了。


关于Webservice PicService 客户端,代码如下:

Dim oPicService As Object
Dim oPic As StdPicture
Dim bSucceed As Boolean
Set oPicService= NewSoapClient("http://192.168.1.3:80/", "PicService")
set oPic =oPicService.GetPic("MyName") '//检索并返回 MyName 的照片
Set Me.Picture=oPic
bSucceed = oPicService.UpLoad("MyName","C:\1.bmp")
'//将 "C:\1.bmp" 图片上传到服务器,并覆盖 MyName 位置,
'//并且返回操作的结果。


总结我的WebService有以下几个特点:
1、纯绿色,部署WebService的一端不需要部署IIS。
2、提供 WebService 服务的就是任意一个普通类,也可以是一个窗口,在服务端实例化后,调用RegisterWebService 注册即可。
3、参数和返回值支持大部分数据类型(除了结构,VB下的结构,是个很变态的东西。),对象支持实现了Persistable接口的类(ActiveX Dll 工程下,类的属性的最后一个),比如StdPicture,Recordset等等。
4、全程可捕捉错误,包括客户端捕捉服务器执行的错误,比如 调用oPicService.UpLoad,真正执行的是在服务端的 PicService类的UpLoad函数,如果 在执行UpLoad函数发生了错误,可以返回给客户端,并触发。
5、WebService 的调用,可以设这TimeOut,也可以异步调用,这个在VB6下调用过WebService的人知道,如果远程服务器连接不上,整个连接过程是进程挂起的。
6、服务器接收到WebService 调用,根据自己的业务负荷,可以分流给其他服务器。比如 192.168.1.3 上的图片服务比较忙碌,可以Redirect给其他机器。
7、完全为VB6设计,跟Vb6会结合更紧密。

...全文
200 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyzqqq 2011-03-22
  • 打赏
  • 举报
回复
challenge1 2009-09-06
  • 打赏
  • 举报
回复
支一下啊,有创意的帖子多发点

----------------------------------------------------------------------------
人脑潜能开发,潜能开发音乐下载 潜能21网www.qn21.com
codingfunny 2009-08-29
  • 打赏
  • 举报
回复
没人看了?
threenewbee 2009-07-16
  • 打赏
  • 举报
回复
顶了。
贝隆 2009-07-16
  • 打赏
  • 举报
回复
帮顶
codingfunny 2009-07-16
  • 打赏
  • 举报
回复
TO:lyserver
呵呵。我的几篇不多的帖子,你基本都看了呵呵。
lyserver 2009-07-16
  • 打赏
  • 举报
回复
不错,顶!
codingfunny 2009-07-16
  • 打赏
  • 举报
回复
数据传输的标准,是自己定义的的标准,未来,会支持SOAP,如果我想它跟第三方通信的话。
话说回来,就是目前不支持MSSoap的远程调用。
我只是想在Vb6下,在CS模式下,可以实现类似WebService的应用。
TechnoFantasy 2009-07-16
  • 打赏
  • 举报
回复
支持。
LZ所说的webservice是自己定义的标准还是支持SOAP的?
codingfunny 2009-07-16
  • 打赏
  • 举报
回复
看以下有关WebService的应用,就了解了呵呵。
yangao 2009-07-16
  • 打赏
  • 举报
回复
嘛意思
波导终结者 2009-07-16
  • 打赏
  • 举报
回复
接分来了

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧