DataAccess -- WebServices
用WebServices作数据访问层小结:
本小结所有工程:

公共工程: Demo.Common
服务工程: Demo.WebServices
访问工程: Demo.DataAccess
测试工程: Demo.Test
具体实现方法:
一. 新建"类库"工程: Demo.Common
在该工程中新建类: DemoUtils.vb ,并在该类中添加两个方法: Serialize 和 Deserialize ,具体如下:
二. 新建"ASP.NET Web服务"工程: Demo.WebServices
1.添加引用: Demo.Common
2.将services.asmx 改名为 DemoService.asmx
3.在App_Code/Service.vb 中添加方法: MyWebServicesTest 方法, 具体如下:
三. 新建"类库"工程: Demo.DataAccess
1.添加web引用(>>此解决方法中的web服务>>DemoService), 并命名为: DA_WebServices
2.新建类: Class_DataAccess.vb, 并在该类中添加方法: GetServices() ,具体如下:
四.新建"windows应用程序"工程: Demo
1.添加引用: Demo.Common 和 Demo.DataAccess
2.在Form1.vb 窗体中添加 button 和 label 控件, 在"代码设计器"中写入单击事件,具体如下:
单击后,出现如下画面:

(将"myWebServicesTest_OK"调出) 测试成功!
本小结所有工程:

公共工程: Demo.Common
服务工程: Demo.WebServices
访问工程: Demo.DataAccess
测试工程: Demo.Test
具体实现方法:
一. 新建"类库"工程: Demo.Common
在该工程中新建类: DemoUtils.vb ,并在该类中添加两个方法: Serialize 和 Deserialize ,具体如下:
1
Public Class DemoUtils
2
3
'object --> byte()
4
Public Shared Function Serialize(ByVal obj As Object) As Byte()
5
Dim objMS As New IO.MemoryStream
6
Dim objBF As New Runtime.Serialization.Formatters.Binary.BinaryFormatter
7
Try
8
objBF.Serialize(objMS, obj)
9
Return objMS.GetBuffer()
10
Catch ex As Exception
11
Return New Byte() {}
12
Finally
13
objMS.Dispose()
14
objMS = Nothing
15
End Try
16
End Function
17
18
'byte() --> object
19
Public Shared Function Deserialize(ByVal obj As Byte()) As Object
20
Dim objMS As New IO.MemoryStream(obj)
21
Dim objBF As New Runtime.Serialization.Formatters.Binary.BinaryFormatter
22
Try
23
Return objBF.Deserialize(objMS)
24
Finally
25
objMS.Close()
26
End Try
27
End Function
28
29
End Class
Public Class DemoUtils2

3
'object --> byte()4
Public Shared Function Serialize(ByVal obj As Object) As Byte()5
Dim objMS As New IO.MemoryStream6
Dim objBF As New Runtime.Serialization.Formatters.Binary.BinaryFormatter7
Try8
objBF.Serialize(objMS, obj)9
Return objMS.GetBuffer()10
Catch ex As Exception11
Return New Byte() {}12
Finally13
objMS.Dispose()14
objMS = Nothing15
End Try16
End Function17

18
'byte() --> object19
Public Shared Function Deserialize(ByVal obj As Byte()) As Object20
Dim objMS As New IO.MemoryStream(obj)21
Dim objBF As New Runtime.Serialization.Formatters.Binary.BinaryFormatter22
Try23
Return objBF.Deserialize(objMS)24
Finally25
objMS.Close()26
End Try27
End Function28

29
End Class二. 新建"ASP.NET Web服务"工程: Demo.WebServices
1.添加引用: Demo.Common
2.将services.asmx 改名为 DemoService.asmx
3.在App_Code/Service.vb 中添加方法: MyWebServicesTest 方法, 具体如下:
1
Imports System.Web
2
Imports System.Web.Services
3
Imports System.Web.Services.Protocols
4
Imports Demo.Common
5
6
<WebService(Namespace:="http://tempuri.org/")> _
7
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
8
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
9
Public Class Service
10
Inherits System.Web.Services.WebService
11
12
<WebMethod()> _
13
Public Function HelloWorld() As String
14
Return "Hello World"
15
End Function
16
17
<WebMethod()> _
18
Public Function MyWebServicesTest() As Byte()
19
Return Demo.Common.DemoUtils.Serialize("myWebServicesTest_OK")
20
End Function
21
22
End Class
Imports System.Web2
Imports System.Web.Services3
Imports System.Web.Services.Protocols4
Imports Demo.Common5

6
<WebService(Namespace:="http://tempuri.org/")> _7
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _8
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _9
Public Class Service10
Inherits System.Web.Services.WebService11

12
<WebMethod()> _13
Public Function HelloWorld() As String14
Return "Hello World"15
End Function16

17
<WebMethod()> _18
Public Function MyWebServicesTest() As Byte()19
Return Demo.Common.DemoUtils.Serialize("myWebServicesTest_OK")20
End Function21

22
End Class三. 新建"类库"工程: Demo.DataAccess
1.添加web引用(>>此解决方法中的web服务>>DemoService), 并命名为: DA_WebServices
2.新建类: Class_DataAccess.vb, 并在该类中添加方法: GetServices() ,具体如下:
1
Public Class Class_DataAccess
2
Private Shared m_ws As DA_WebServices.Service
3
4
Public Shared Function GetServices() As DA_WebServices.Service
5
If IsNothing(m_ws) Then
6
m_ws = New Demo.DataAccess.DA_WebServices.Service
7
End If
8
Return m_ws
9
End Function
10
End Class
11
Public Class Class_DataAccess2
Private Shared m_ws As DA_WebServices.Service3

4
Public Shared Function GetServices() As DA_WebServices.Service5
If IsNothing(m_ws) Then6
m_ws = New Demo.DataAccess.DA_WebServices.Service7
End If8
Return m_ws9
End Function10
End Class11

四.新建"windows应用程序"工程: Demo
1.添加引用: Demo.Common 和 Demo.DataAccess
2.在Form1.vb 窗体中添加 button 和 label 控件, 在"代码设计器"中写入单击事件,具体如下:
1
Public Class Form1
2
3
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
4
Me.Label1.Text = Demo.Common.DemoUtils.Deserialize(Demo.DataAccess.Class_DataAccess.GetServices().MyWebServicesTest())
5
End Sub
6
End Class
Public Class Form12

3
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click4
Me.Label1.Text = Demo.Common.DemoUtils.Deserialize(Demo.DataAccess.Class_DataAccess.GetServices().MyWebServicesTest())5
End Sub6
End Class单击后,出现如下画面:

(将"myWebServicesTest_OK"调出) 测试成功!


浙公网安备 33010602011771号