我写了第一个网络服务。我将Lotus脚本用于提供者和消费者。
Web服务提供者功能函数查找下一个序列号并将其提供给消费者,然后递增并保存下一个呼叫的值。
一切都很好,除非它很慢。从消费者那里调用该函数可能需要10秒钟而且很少超过7.
我们的服务器没有明显的性能问题。正在从工作站上运行的Notes客户端中的代理调用使用者代码。服务器和工作站都运行Notes 8.5.3。
由于担心查找数字的代码变慢,暂时修改了提供程序函数以返回一个值。
以下是具有修改功能的提供程序的代码。
Class SequenceNumberService
Function getNextSequenceNumberStandard(dbname As String, key As String) As Long
getNextSequenceNumberStandard = 100 'Temporary test
Exit Function 'Temporary test
getNextSequenceNumberStandard = GetNextSeqNumber(dbname+key)
End Function
End Class
以下是消费者的代码:
%INCLUDE "lsxsd.lss"
Class SequenceNumberService As PortTypeBase
Sub NEW
Call Service.Initialize ("UrnDefaultNamespaceSequenceNumberServiceService", _
"SequenceNumberServiceService.Domino", "http://pncpghd38 /ftg/sequence.nsf/GetNextSequenceNumber?OpenWebService" , _
"SequenceNumberService")
End Sub
Function GETNEXTSEQUENCENUMBERSTANDARD(DBNAME As String, KEY As String) As Long
Let GETNEXTSEQUENCENUMBERSTANDARD = Service.Invoke("GETNEXTSEQUENCENUMBERSTANDARD", DBNAME, KEY)
End Function
End Class
我将代理程序置于调试模式,看起来它是一直在调用的Invoke。
我们尝试使用SOAPUI来访问同一个Web服务,并且该调用几乎是即时的。