監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
重慶OA行業(yè)資訊

當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 重慶OA系統(tǒng) > 重慶OA行業(yè)資訊

透視和調(diào)整你的企業(yè)和商務(wù)系統(tǒng)(Ⅳ:WebService、dotNET)

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

AMTeam.org

透視和調(diào)整你的企業(yè)和商務(wù)系統(tǒng)(Ⅳ:WebService、dotNET)

到上一篇為止,我們已經(jīng)完成了在第一篇(Analyzing、Requirement)所說(shuō)的三個(gè)過程中的第二步了,這一篇開始我們可以用dotNET的WebService方式來(lái)重新考慮以前的Authors WebService,技術(shù)上我傾向于MS的建議,那就是在實(shí)現(xiàn)和設(shè)計(jì)Web Services時(shí)將ASP.NET的WebService作為首選。所以這一篇我們將主要考察ASP.NET的WebService.

這要從第二篇的分析開始,原來(lái)當(dāng)我用SOAP Toolkit生成了WebService后,我就在Dereksvr機(jī)器上用VS.NET的Add Web Reference...輸入http://henrysvr/Authors/Authors.wsdl,VS.NET也是可以發(fā)現(xiàn)這個(gè)WebService,但是由于ADODB.Recordset的問題,它無(wú)法生成Proxy類,當(dāng)時(shí)我以為SOAP Toolkit生成的WSDL并不完全兼容很快放棄了繼續(xù)向下實(shí)驗(yàn)了。幾天之后我又做了另外一種嘗試:我用SOAP Toolkit重新生成了WebService的WSDL文件,這次我沒有把返回ADODB.Recordset的函數(shù)放到里面,也就是全部都是在第二篇說(shuō)的標(biāo)志類型,然后我又在VS.NET中重復(fù)了上述的步驟,這一次OK了,VS.NET成功的生成了Proxy類,我生成了一個(gè)小例子測(cè)試,結(jié)果是成功的。那么結(jié)論是:對(duì)于第二類返回特殊類型的(也就是第二篇中用CTM的類型)我們要另外處理,對(duì)于第一種類型的我們只要用MS SOAP Toolkit生成WSDL文件,然后在IIS中設(shè)置好,就可以成為一個(gè)WebService,在消費(fèi)這種WebService上我們不用特殊處理。不僅VS.NET可以直接使用,其他支持WebService規(guī)范的也是可以使用的(只能說(shuō)估計(jì)。Java?Delphi?抱歉我沒有試過)下面是我測(cè)試成功的例子的拷圖,感覺還不錯(cuò),連中文也不用什么特殊處理。
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim obj As henrysvr.Authors
Dim retString As String

Dim SendStr As String
SendStr = echoTxt.Text

obj = New henrysvr.Authors()
retString = obj.Echo(SendStr)
MessageBox.Show(retString)

End Sub

好了,剩下的又是ADODB.Recordset的問題,如果處理這個(gè)COM對(duì)象呢?之前我們已經(jīng)用了一種方法,dotNET作為Client,這次我換一種方式,生成一個(gè)ASP.NET方式的WebService,然后引用bus_Authors組件,對(duì)那些返回記錄集的函數(shù)在這個(gè)WebService中做一個(gè)封裝。比如:

<WebMethod()> Public Function Version() As String
Dim obj As bus_Authors.Authors
obj = New bus_Authors.Authors()
Version = obj.Version
End Function

<WebMethod()> Public Function GetAuthors() As DataSet

Dim obj As bus_Authors.Authors
Dim rst As ADODB.Recordset

Dim myDataAdapter As OleDb.OleDbDataAdapter
Dim retDataset As DataSet

obj = New bus_Authors.Authors()
rst = New ADODB.Recordset()

myDataAdapter = New OleDb.OleDbDataAdapter()
retDataset = New DataSet()

rst = obj.GetAuthors()
myDataAdapter.Fill(retDataset, rst, "GetAuthors")
GetAuthors = retDataset
End Function

看的出來(lái),就是簡(jiǎn)單的調(diào)用Biz組件,然后將ADODB.Recordset轉(zhuǎn)換成DataSet。

有關(guān)引用Bus_Authors,你可以在目前的這部機(jī)器上安裝我們?cè)诘谝黄狤xport出來(lái)的Server或Proxy都可以,我為了方便,直接使用了Server包。剩下來(lái)的就十分簡(jiǎn)單了,需要生成一個(gè)測(cè)試程序,這個(gè)就簡(jiǎn)單了,參照Carl Franklin的錄像就可以了。算是也自己練習(xí)一次haha。

(具體參見http://www.csdn.net/develop/read_article.asp?id=10816 )

下面是運(yùn)行的代碼和拷圖:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
Dim rs As DataSet
Dim obj As New localhost.Authors()

rs = obj.GetAuthors()
DataGrid1.DataSource = rs
DataGrid1.DataBind()
End Sub

至于VB版本的客戶端也是可以的,你可以在另外一部機(jī)器上用下面的代碼進(jìn)行測(cè)試:

Dim RetXML as Object
Dim SoapClient As MSSOAPLib.SoapClient
Set SoapClient = New MSSOAPLib.SoapClient

Call SoapClient.mssoapinit("http://Dereksvr/Authors/Authors.asmx?WSDL")

Set RetXML = SoapClient.GetAuthors()

如果成功返回的應(yīng)當(dāng)是一個(gè)IXMLDOMNodeList 里面包括整個(gè)的Dataset結(jié)構(gòu)和23條數(shù)據(jù),至于具體的顯示這個(gè)結(jié)果集的VB程序就不再說(shuō)了,以后也許會(huì)專門有文章論述如何將dotNET的DataSet轉(zhuǎn)化成VB可以識(shí)別的問題,比如會(huì)有FillListView( lstv As Control , obj as Object)之類的函數(shù)將這個(gè)XML結(jié)構(gòu)填充到VB6 ListView或Grid控件中,這里我就不詳細(xì)說(shuō)了。具體的你還可以在其他機(jī)器上使用http://Dereksvr/Authors/Authors.asmx 然后選取GetAuthors然后點(diǎn)擊調(diào)用獲得結(jié)果,也可以直接點(diǎn):http://Dereksvr/Authors/Authors.asmx/GetAuthors? 你在IE窗口上可以明顯的看到這個(gè)返回結(jié)果的XML文檔(從中你可以看到DataSet最原始的構(gòu)造haha)。

掌握不同返回類型分別處理的原則,無(wú)論是MS SOAP Toolkit 還是ASP.NET WebService都是可以被我們所用??雌饋?lái)使用dotNET會(huì)簡(jiǎn)單和省力許多。我想隨著dotNET技術(shù)的推進(jìn),越來(lái)越多的人會(huì)考慮用dotNET技術(shù)實(shí)現(xiàn)一些新的商務(wù)或企業(yè)應(yīng)用系統(tǒng),至少我會(huì)這樣。也許這些例子是想說(shuō)明從現(xiàn)在的Windows DNA構(gòu)架切換到新的dotNET體系結(jié)構(gòu)下,是可行也是可以被你控制的。并不是像一些人以為的那樣,認(rèn)為只用VS.NET重新編譯一遍原來(lái)的應(yīng)用就OK,也不能像另外一些人以為的那樣,認(rèn)為dotNET根本是市場(chǎng)的策略,而且真正實(shí)施起來(lái)很麻煩很困難,還要等個(gè)3-5年。

 

發(fā)布:2007-03-25 10:28    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章: