兄弟我在研究wcf,整理了一个思路,不知道是否有可行性。请教老师1.首先定义一个消息体''' <summary>
''' 数据传输消息格式
''' </summary>
<Serializable()> _
Public Class Info Public Property URL() As String' 路由信息 Public Property Code() As String'错误信息 Public Property [Error]() As String'用户编码 Public Property UserID() As String Public Property DataSet() As DataSet'DataSet数据 Public Property OBJ() As Byte()'传递的对象(实体、泛型集合、其他ObjectEnd Class说明:
URL用于反射定位该消息的处理方法
URL的格式类似于 【WinMis://UserManage/Users@GetList】
UserManage是DLL类库的名称
Users是UserManage中的一个实现类
GetList是Users中的一个实现方法
通过解析这个URL,就可以反射相关的类库动态调用相关方法2.流程
[客户端]
客户端Winform收集数据整理成消息格式
1)设置消息体OBJ()属性.
因为wcf不能直接传输Object,所以要把相关的业务实体类/泛型集合序列化成byte()类型来传输
2)设置消息体URL()属性.类似于WinMis://UserManage/Users@GetList
3)设置消息体DataSet()属性,如果服务器端业务逻辑处理的是dataset,那么就设置dataset属性来存储数据
填充消息体后调用wcf的方法
[wcf]
wcf接收到消息体后,根据消息体的url路由反射UserManage程序集中的Users类中的GetList方法.类似于
Namespace UserManage Public Class Users Public Function GetList(ByVal info As Info) As Info
'反序列化info中obj()
'处理相关业务流程
'返回处理完毕的info
Return info
End Function End ClassEnd Namespace
4)wcf将处理的结果(Info)返回给客户端.客户端部分接收处理完毕的数据这个方案的优缺点
优点:实现业务逻辑和前端数据展示彻底分离.客户端和服务端都可以采用插架式开发.当系统需要扩展时候只需要部署相关的dll到服务器端和客户端即可.中间的wcf不需要重新编译.wcf也无需编写大量的接口和实现方法.
缺点:客户端和服务器端业务逻辑的相关处理方法传递的参数都必须是Info类.无形中加大了开发成本。虚心请教老师:这个方案是否可行,如果可行还需要注意哪些问题。奉上200分。谢谢。
''' 数据传输消息格式
''' </summary>
<Serializable()> _
Public Class Info Public Property URL() As String' 路由信息 Public Property Code() As String'错误信息 Public Property [Error]() As String'用户编码 Public Property UserID() As String Public Property DataSet() As DataSet'DataSet数据 Public Property OBJ() As Byte()'传递的对象(实体、泛型集合、其他ObjectEnd Class说明:
URL用于反射定位该消息的处理方法
URL的格式类似于 【WinMis://UserManage/Users@GetList】
UserManage是DLL类库的名称
Users是UserManage中的一个实现类
GetList是Users中的一个实现方法
通过解析这个URL,就可以反射相关的类库动态调用相关方法2.流程
[客户端]
客户端Winform收集数据整理成消息格式
1)设置消息体OBJ()属性.
因为wcf不能直接传输Object,所以要把相关的业务实体类/泛型集合序列化成byte()类型来传输
2)设置消息体URL()属性.类似于WinMis://UserManage/Users@GetList
3)设置消息体DataSet()属性,如果服务器端业务逻辑处理的是dataset,那么就设置dataset属性来存储数据
填充消息体后调用wcf的方法
[wcf]
wcf接收到消息体后,根据消息体的url路由反射UserManage程序集中的Users类中的GetList方法.类似于
Namespace UserManage Public Class Users Public Function GetList(ByVal info As Info) As Info
'反序列化info中obj()
'处理相关业务流程
'返回处理完毕的info
Return info
End Function End ClassEnd Namespace
4)wcf将处理的结果(Info)返回给客户端.客户端部分接收处理完毕的数据这个方案的优缺点
优点:实现业务逻辑和前端数据展示彻底分离.客户端和服务端都可以采用插架式开发.当系统需要扩展时候只需要部署相关的dll到服务器端和客户端即可.中间的wcf不需要重新编译.wcf也无需编写大量的接口和实现方法.
缺点:客户端和服务器端业务逻辑的相关处理方法传递的参数都必须是Info类.无形中加大了开发成本。虚心请教老师:这个方案是否可行,如果可行还需要注意哪些问题。奉上200分。谢谢。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货