首 页 | 产品介绍 | 免费下载 | 常见问题 | 技术资料 | 报价&购买 | 用户论坛 | 典型客户 | 关于我们 | 在线支持 | 二次开发
   
快速通道
» 安装与初始化
» 升级维护操作手册
» 网络及维护等相关工具
» 安装和升级常见问题
» 使用常见问题
» Webmail常见问题
» 购买相关问题

相关链接
» 与杀毒软件配合设置
» 垃圾邮件过滤
» 监控用户收发的邮件
» 网络防火墙相关设置
» 导入其他系统的帐号
» ADSL/NAT端口映射
» 动态域名情况下架设系统
» MuseMail架设应用实例
» 退信原因分析
» 邮件系统协议及原理
» MuseMail 更新历史
» MySQL数据库的基本操作

站内搜索
 
MuseMail Server SDK调用基本结构和方法  

适应版本: MuseMail V3.7
最新更新:2006-7-26

MuseMail Server整体结构

MuseMail Server采用分层模块化设计,从模块功能上可以划分为以下几个部分:

1.内核部分
MuseMail内核程序提供SMTP,POP3,IMAP,IPC,TIMER,Mailing等多种服务,是整体系统赖以运行的基础。内核程序通过开放的各种网络服务,进行各种处理,保证邮件收发,数据处理,前端远程过程调用请求等等。

2.SDK中间层部分
SDK中间层基于COM技术开发,使用时有两种模式,一种是COM组件,一种是COM+应用程序。将上层过程调用请求转化成网络指令提交给内核进行处理,并将内核处理后的结果返回给上层调用者。SDK通过基于SSL协议的TCP/IP协议与内核进行数据交换(默认端口为5988)。
SDK 中间层提供的功能接口包含了内核所能处理的任何一个过程,如用户管理,邮件读取,证书服务,加密、解密,邮件队列管理,系统参数管理等等。

3.Webmail和服务器管理器上层部分
SDK基于内核功能才得以实现,同样的,Webmail和服务器管理器也是基于SDK,功能才得以实现。Webmail和服务器管理器程序通过调用SDK中的方法和属性,构建了上层用户的操作面板。

4.数据库部分
数据库的访问和操作,由于系统内核都做了封装,在实际的二次开发中,并不需要开发者对数据库进行管理和操作。除非有特别需求,一般情况下,不建议开发者对数据库直接进行操作。

内核程序的数据库访问层基于 Microsoft ADO技术开发,具有良好的开放性和适用性,能支持 Mysql,MS Sql Server,Oracle,Informix等数据库,系统默认绑定Mysql数据库服务。

 

SDK功能实现调用的2种模式和方法

对于SDK的基本调用,任何一个动作和过程调用,都将产生对内核的远程过程调用请求。所以在调用SDK对象时,首先要建立并初始化好一个网络连接对象或者连接池对象,然后将该连接对象设置传递给具体的功能对象。

在实际应用中,对于通过SDK来构建上层应用,一般会产生2种需求,故SDK分为两种使用模式(Com组件和Com+应用程序):

1.基于C/S模式的单通道过程调用,类似 MuseMail的服务器管理器;

此种模式下调用SDK的COM组件模式,组件名为:MuseMail_Com。
任何基于C/S模式方式调用SDK实现应用,在调用的时候,SDK都会自动生成并建立与服务器内核的一个网络连接,如果有多个调用,则会生成多个网络连接。以满足上层功能的调用需要。

基本调用模式:

[ VB范例 ]

   
 

'建立MuseMail_com.ServerControl(连接对象)
Dim objConn As New ServerControl
'建立MuseMail_com.Users对象
Dim ObjUsers As New Users
Dim iRet As Integer

'初始化连接对象,如果初始化失败则退出
If objsvr.InitCommand < 0 Then
   set ObjUsers = nothing
   set objConn = nothing
end if

'将连接对象objConn与objUsers绑定
ObjUsers.InitLoad objConn

'用变量iRet取得操作结果
iRet = ObjUsers.AddUser("wailic", "12345", "cstv.com", "U")

'如果大于等于0则操作成功,否则操作失败
If iRet >= 0 Then
  MsgBox "用户添加成功"
Else
  MsgBox "用户添加失败"
End If

'释放对象
Set ObjUsers = Nothing
set objConn = nohting

   

 

2.基于B/S模式的高负载多通道过程调用,类似MuseMail的Webmail ;

基于B/S模式的SDK调用,以ASP为例,所有的过程都集中在IIS中实例化进行处理,当有多个用户通过前端WEB对Webmail进行访问时,如果也按照C/S模式来一个开一个网络连接来处理,显然不太可能。因为大量的用户请求可以在非常短的时间并发请求导致开启大量的网络连接,消耗大量的服务器资源,导致服务器崩溃。所以在这样的情况下,我们必须依赖于SDK所提供的连接池技术,在IIS启动的时候,就自动生成固定个数的网络连接,当上层功能要调用过程需要和服务器内核进行数据交换时,锁定某一个连接,使用完后再释放锁定,这样就能保证系统在最小开销的情况下实现高效调用和处理,为了提高连接池的性能和稳定性,经过多方测试,我们最后选定了Com+技术提供连接池服务,所以此种模式下必须调用SDK的COM+应用服务。

[ ASP范例 ]

在asp调用的情况下,必须先获得一个连接池对象,然后再将连接池对象与具体的业务处理组件绑定。所有的组件都共享同一个连接池。

其他的功能页面代码片断( Musemail\webmail\language\gb2312\seldisk.asp )
 

'建立连接池对象
set objConnPool = server.CreateObject("MuseMailPool.SSLNet")

'建立一个空连接对象
set varObj = server.CreateObject("MuseMail_30.ServerControl")

'将新建立的空连接与连接池中的一个连接对象进行绑定
varObj.ConnType = 1
varObj.iConned = true
varObj.Sock = objConnPool.hSock
varObj.ssl = objConnPool.hSSL
varObj.SslInfo = objConnPool.hSSLInfo

If objConnPool.FirstUse = 1 Then varObj.Connected = True:varObj.InitCommand

If objConnPool.FirstUse = 0 then objConnPool.FirstUse = 1


'建立一个网络硬盘的对象
set objNet = server.CreateObject("MuseMail_30.NetStore")
'将连接池对象与网络硬盘对象绑定
objNet.InitLoad varObj

objNet.Load strcurrdomain,strcurruser
varinfo = objNet.GetNetFolderList(50,1,0)

if not isnull(varinfo) then
    for inum = 1 to ubound(varinfo)
        Response.Write("<script language='javascript'>addfolder('"& varinfo(inum,2)                                         &"','"&varinfo(inum,1)&"');</script>")
        getallfolder varinfo(inum,1),varinfo(inum,2)
    next
    'Response.Write("<script language='javascript'>isfolderload.title='folder';</script>")
end if

...

   
 
  长沙海防科技有限公司,保留所有权利, © 2006 HIFO Tech Co.,LTD  
 服务专线: 0731 - 899 2815或899 2816转616    传 真: 0731 - 899 2815或899 2816转611   邮编:410 205
 地 址:湖南省长沙市河西高新技术开发区麓谷大道662号长沙软件园大楼321室
公司资质 | 法律申明