设为首页 收藏本站
查看: 1082|回复: 0

[经验分享] 在 Microsoft .NET 应用程序中使用 IBM Lotus Domino

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-3 13:11:09 | 显示全部楼层 |阅读模式
http://cnmaya.org/forums/thread/47.aspx


  每个开发人员都知道,要让完全不同的系统协调工作是一个常见的难题。不论部门大小,许多 IT 部门都没有标准化到一个开发平台上。公司并购经常会引进不同的元素和完全不同的系统,比如比较旧的应用程序与新的平台共存。虽然像 IBM Lotus Domino 这样的产品为开发企业应用程序提供了功能强大的平台,但是与许多企业级软件产品一样,它仍需要与其他系统进行互操作。
  本文学习在 Microsoft .NET 开发平台上集成 Lotus Domino;重点讨论 Lotus Domino 7、Microsoft .NET Framework V1.1 和 Microsoft Visual Studio .NET 2003。本文假设您是一名有经验的 Notes/Domino 应用程序开发人员,熟悉 LotusScript 和 Domino Web 服务设计元素,并了解 Microsoft .NET Framework。
  注意:本文描述的解决方法可以用于 Microsoft .NET Framework V2.0 和 V1.1。
  编程模型:.NET 和 COM
  Lotus Domino 是一个用于企业数据的优秀平台。可以通过简单的 Open Database Connectivity(ODBC)或者使用 IBM Lotus Enterprise Integrator 和 Domino Enterprise Connection Service 所提供的强大的功能很容易地访问非 Domino 数据源。可是,有时可能需要从其它的应用程序访问 Lotus Domino。所幸的是,可以向其它使用组件对象模型(Component Object Model,COM)的应用程序开放 Domino 环境,允许外部应用程序通过 COM 使用各种开放的对象和类很容易地与 Lotus Domino 协同工作。一个很好的例子是在使用 .NET Framework 构建的应用程序中集成 Lotus Domino 功能。

  COM 是一种相对比较旧的技术,但是 .NET 提供了可调用的包装器,允许 .NET 和 COM 进行互操作。通过执行时可调用的包装器,可以在 .NET 中使用 COM 组件。这听起来很复杂,但是使用开发工具(比如 Microsoft Visual Studio)是很简单的。虽然必须为 COM 组件创建包装器并在 .NET 应用程序中通过 interop 使用它们,但是当执行以下步骤时, Visual Studio .NET 会自动地创建包装器:

  • 在 Visual Studio 中,选择 Project —— Add Reference。
  • 选择 Add Reference 对话框的 COM 选项附签,然后双击所列出的合适的 Type Library 文件。
  • 单击 OK 添加 reference。
  
  至此,Visual Studio .NET 把 COM Type Library 文件的对象和成员转换成对等的 .NET 的集合。当生成 .NET 集合的时候,可以使用它们的类创建对象并调用成员,就像 COM 对象和成员是原生 .NET 的类和成员一样。也可以与这个过程相反,在基于 COM 的应用程序中使用 .NET 集合。
  注意:如果没有使用 Visual Studio .NET,那么 .NET Framework 软件开发包(SDK)提供了 Type Library Importer(tlbimp.exe)工具,这个命令行工具可以把 COM Type Library 包含的类和接口转换成元数据。这个工具为类型信息自动地创建一个 interop 集合和命名空间。
  说明这个步骤的一个好方法是在 Visual Studio 解决方案中产生可用的 Lotus Domino 对象。图 1 显示了 Add Reference 对话框,并突出显示了 Lotus Domino Objects。


图 1. Add Reference 对话框

  Lotus Domino Objects
  从 Lotus Notes 和 Domino 5.02b 开始,可以使用 Lotus Domino Objects 通过 COM 来访问 Domino 对象,在 Domino 服务器或者任何一个 Notes 客户机(IBM Lotus Domino Designer、Lotus Domino Administrator 或者 Lotus Notes)的安装中都包括 Lotus Domino Objects。在基本安装目录中可以找到 domobj.tlb。Lotus Domino 6.x 包括 Lotus Domino Objects 版本 1.1;Lotus Domino 7 包括版本 1.2。
  虽然必须安装 Lotus Domino,但是它不必运行。另一个关键点是通过 COM 访问 Lotus Domino 时只有 backend 类可用,因此没有可以访问的用户接口(UI)类。
  Domino 邮件应用程序
  通过 COM 访问 Lotus Domino 资源类似于在 Lotus Domino Designer 中使用 Java 或者 LotusScript 编程语言;任何与 Lotus Domino 的交互都开始于一个会话。Lotus Domino Objects 包括所有通过 COM 使用 Lotus Domino 所必需的类,而且 COM 对象对于任何使用 LotusScript 或者 Java 语言开发 Domino 对象模型的开发人员来说都是很熟悉的。
  包含在 Visual Studio 集成开发环境(IDE)中的是 IntelliSense 特性,它通过在键入的时候提供上下文敏感的帮助和自动完成代码来帮助使用 COM 对象,也因此减少拼写错误。

  第一个例子构建了一个 .NET Windows 应用程序,从 Domino Directory 获取数据并使用 Lotus Domino 发送电子邮件消息(参见图 2)。.NET Windows 应用程序使用了以下 .NET 元素:

  • ComboBox 控件用于选择邮件接收者,并用来自 Domino Directory 视图的值填充字段
  • TextBox 控件用于输入邮件消息的主题
  • RichTextBox 控件用于邮件消息的主体
  • Label 控件用于通知消息被发送还是遇到错误
  • Button 控件用于发送或者尝试发送目前的邮件消息
  


图 2. 使用 .NET Windows 应用程序从 Lotus Domino 发送电子邮件


  清单 1 显示了大部分的应用程序代码(省略了为应用程序生成的 Visual Studio 代码)。单击 Send 按钮时调用 btnSend_Click 方法。这个方法创建 NotesSession、NotesDatabase、NotesView 和 NotesDocument 对象,依次用于创建和发送消息。
  应用程序加载时调用 Form_Load 方法。它使用 NotesSession、NotesDatabase、NotesView 和 NotesDocument 对象填充 ComboBox。在视图中把文档的单独值添加到 ComboBox 控件中。附加域名到选定的人名来协助消息分发。
  清单 1. .NET Windows 应用程序

Private Sub btnSend_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)Handles btnSend.Click
Try
Dim ns As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
If Not (ns Is Nothing) Then
ns.Initialize("password")
db = ns.GetDatabase("ServerName//Domain", "names.nsf", False)
If Not (db Is Nothing) Then
doc = db.CreateDocument()
doc.ReplaceItemValue("Form", "Memo")
doc.ReplaceItemValue("SendTo", cboNames.SelectedText + "//Domain")
doc.ReplaceItemValue("Subject", txtSubject.Text)
Dim rt As NotesRichTextItem
rt = doc.CreateRichTextItem("Body")
rt.AppendText(rtbBody.Text)
doc.Send(False)
rt = Nothing
doc = Nothing
lblMessage.Text = "Message Sent."
End If
db = Nothing
ns = Nothing
End If
Catch ex As Exception
lblMessage.Text = "Error: " + ex.Message.ToString()
End Try
End Sub





Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs)Handles MyBase.Load
Dim s As New NotesSession
s.Initialize()
Dim db As NotesDatabase
Dim vw As NotesView
Dim doc As NotesDocument
db = s.GetDatabase("ServerName//Domain", "names.nsf", False)
If Not (db Is Nothing) Then
vw = db.GetView("_People")
doc = vw.GetFirstDocument()
While Not (doc Is Nothing)
cboNames.Items.Add(doc.GetFirstItem("FirstName").Text + " " +
doc.GetFirstItem("LastName").Text)
doc = vw.GetNextDocument(doc)
End While
End If
End Sub



  要发送电子邮件消息,应用程序完成如下步骤:

  • 实例化 NotesSession 对象。
  • 使用指定的服务器数据库实例化 NotesDatabase 对象。
  • 使用 NotesDatabase 对象创建一个新的 NotesDocument 对象。
  • 使用窗体中的值填充文档中的字段。
  • 使用 NotesDocument 对象为邮件消息主体创建一个新的 NotesRichTextItem 对象。
  • 把窗体中的文本添加到 NotesRichTextItem。
  • 使用 NotesDocument Send 方法发送电子邮件消息。
  • 设置 Label 控件根据消息是否被发送来显示信息。(另外,如果出现异常则显示出错消息。所有的操作都封装在一个 try 块中。)
  
  使用 COM 不仅仅局限在 Windows 应用程序中。还可以在 Web 或者其它的应用程序类型中使用。
  下面,我们学习使用其它的方法与 Lotus Domino 通信,比如 Web 服务和 XML。









  Domino Web 服务
  Lotus Domino Objects 提供了一种非常好的在非 Domino 应用程序中访问 Domino 资源的方法,而这并不是惟一可用的方法。另一种集成两个系统的方法涉及到 Web 标准和在 .NET 代码中使用 Domino Web 服务。
  Lotus Domino 7 中添加了一个Web 服务设计元素。基于 Domino 的 Web 服务与其他标准的 Web 服务一样被使用。利用 Web 服务描述语言(Web Services Description Language,WSDL)可以找到 Web 服务中的可用方法。通过带有 ?wsdl 命令的 Web 服务 URL 可以使用基于 Domino 的 Web 服务的 WSDL。例如,下面的 URL 获取名为 testws 的 Web 服务的 WSDL:

http://localhost/dominodatabase.nsf/testws?wsdl

**  Visual Studio .NET IDE 使得在项目中使用 Web 服务变得很容易。为此,要为项目添加一个 Web Reference,先右键单击项目,然后选择 Add Web Reference,如图 3 所示。


图 3. 为项目添加一个 Web Reference









  Domino XML 支持
  在集成中可以使用的 Domino 的另一个特性是 XML。访问普通 Domino 元素的 XML 比较容易。一个很好的例子是使用 Domino 视图。使用视图的 URL 和 ?ReadViewEntries 命令可以很容易地访问视图的 XML。例如,使用下面的 URL,可以在 Domino Directory 7 中访问 _People 视图的 XML:

http://domain/names.nsf/_People?ReadViewEntries

  清单 2 提供了一个在 Lotus Domino 7 服务器的目录中使用 ?ReadViewEntries 命令生成 XML 的示例。
  清单 2. 使用 ?ReadViewEntries 命令生成的 XML

<?xml version="1.0" encoding="UTF-8" ?>
<viewentries toplevelentries="3">
<viewentry position="1" unid="A819181402AC862F85257199007D02BC"
noteid="1342" siblings="3">
<entrydata columnnumber="0" name="$18">
<number>0</number>
</entrydata>
<entrydata columnnumber="1" name="$17">
<text>Patton , Tony</text>
</entrydata>
<entrydata columnnumber="2" name="$12">
<text />
</entrydata>
<entrydata columnnumber="3" name="CompanyName">
<text />
</entrydata>
<entrydata columnnumber="4" name="$16">
<text>Tony Patton/Patton@Test</text>
</entrydata>
<entrydata columnnumber="5" name="$21">
<text>TestServer/Test</text>
</entrydata>
</viewentry>
</viewentries>



  可以将生成的 XML 与 .NET 的 XML 支持相结合,交换或者使用 Domino 数据。例如,可以把生成的 XML 与 Microsoft ASP.NET 数据控件结合。如清单 3 所示的 ASP.NET 页面使用 _People 视图的 XML 填充 DropDownList 控件。
  清单 3. 使用 _People 视图中的 XML 的 ASP.NET 页面

<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.XML" %>
<%@ Page Language="vb" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Populate DropDownList via XML</title>
<script language="vb" runat="server">
Private Sub Page_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs)
If Not (IsPostBack) Then
Try
GetData()
Catch ex As Exception
Response.Write(ex.ToString())
End Try
End If
End Sub
Public Sub GetData()
Dim strResult As String
Dim objResponse As WebResponse
Dim objRequest As WebRequest
objRequest = _
HttpWebRequest.Create("http://192.168.1.103/names.nsf/
_People?ReadViewEntries")
objResponse = objRequest.GetResponse()
Dim sr As StreamReader
sr = New StreamReader(objResponse.GetResponseStream())
strResult = sr.ReadToEnd()
Dim doc As New XmlDocument
sr.Close()
doc.LoadXml(strResult)
Dim nodes As XmlNodeList
nodes = _
doc.SelectNodes("viewentries/viewentry/entrydata
_[@columnnumber=""1""]")
ddlNames.DataSource = nodes
ddlNames.DataTextField = "innertext"
ddlNames.DataValueField = "innertext"
ddlNames.DataBind()
End Sub
</script>
</head>
<body>
<form id="frmPopulateControlViaXML" method="post" runat="server">
<asp:DropDownList id="ddlNames" runat="server" Width="336px" />
</form>
</body>
</html>




  这段代码是使用 Microsoft Visual Basic .NET 的标准的 ASP.NET 页面(没有 codebehind)。这段代码做了如下工作:

  • 把来自 Domino 视图 URL 和 ?ReadViewEntries 命令的 XML 加载到 .NET XmlDocument 对象(来自 System.XML 的命名空间)。
  • 实例化来自 XmlDocument 和 XPath 表达式的 XmlNodeList 对象,以选择来自 XML 的确定的实体。(这段代码只关心第一列中的 entrydata 元素,即 columnnumber=1 的属性。)
  • 使用 XmlNodeList 作为 DropDownList 控件的数据源。
  • 调用 DropDownList 控件的 databind 方法把数据绑定到控件中。
  
  在 Web 页面上显示结果,并可以从列表中选择一个名字。
  第一步使用 .NET System.Net 和 System.IO 命名空间,用于网络(Internet)请求和返回的数据。这个页面使用 WebRequest 对象调用合适的 URL,用 WebResponse 对象获得响应。
  结合 WebResponse 对象的 ResponseStream 属性,使用 StreamReader 对象读取 Web 请求返回的 XML。然后,使用 XML 填充并实例化 XMLDocument 对象。从 XMLDocument 对象中选中单独的节点并存储在 XMLNodeList 对象中。使用 XPath 表达式,可以选择合适的节点。
  使用选中的节点集填充数据控件,填充通过指定用于在控件中显示值及当用户选中一个单独的条目时返回的值的单独列(innertext)实现。所有操作都和获取 XML 并填充 GetData 方法的数据控件有关,并在 ASP.NET Web 窗体的 Page_Load 事件中调用。要想仅当页面最初被请求时填充控件,需要使用页面的 IsPostBack 属性,以确保页面只加载一次,而不是页面刷新或者重载。最后,页面使用 try 块捕获任何不可预见的错误,并在页面上显示错误描述。图 4 显示了 ASP.NET 页面。


图 4. 从 Domino 视图的 XML 填充 ASP.NET DropDownList 控件


  为了演示说明,把 Domino 邮件应用程序的例子与 Domino Web 服务相结合,通过 Web 服务调用获取并显示 Domino 数据。但是,在介绍 .NET 应用程序中使用 Web 服务之前,必须首先介绍一下 Domino Web 服务。









  Lotus Domino Web 服务获取 Domino 数据


Lotus Domino Web 服务的新特性是什么?
如果您刚开始学习 Domino Web 服务,请参考 developerWorks Lotus 文章 &#8220;Lotus Notes/Domino 7 Web Services&#8221;。这篇文章很好地说明了背景,包括以下使用 LotusScript 编写 Domino Web 服务代码的基础知识:

  • 实现代码的类定义。(这个类必须成为 PortType 类,在属性窗口的 Basics 选项附签上命名,而且它必须是公共的。)
  • 在类中,在 Web 服务中每个操作的进程(函数、子进程或者方法)定义。(这些进程必须是公共的。)
  • 包含 lsxsd.lss。
  • 如果访问 Lotus Domino Objects,就要初始化 NotesSession。(在新块中,最容易实现。)


  Web 服务很简单。它接受一个用户名称(格式就像姓后面跟着名,中间用逗号分开 —— 在前面的例子中使用过的格式)并从 Domino Directory 获取与该用户相关联的值。服务在 LotusScript 中编写。
  示例的服务位于一个名为 GetUserInfo 的类,它包括以下公有方法:
GetPhoneNumber:为用户返回办公室电话号码
GetAddress:为用户返回办公室地址
GetCity:为用户返回办公室所在城市名称
GetState:为用户返回办公室所在州名称
GetZip:为用户返回办公室所属邮政编码
GetCountry:为用户返回办公室所在国家名称
  所有方法都接受一个字符串参数(用户名称)并返回一个字符串值。NotesSession、NotesDatabase 和 NotesView 对象用类的新块中发生的初始化定义。清单 4 显示了 Web 服务代码。
  清单 4. Domino Web 服务

%INCLUDE "lsxsd.lss"
Dim session As NotesSession
Dim db As NotesDatabase
Dim vw As NotesView
Dim doc As NotesDocument
Public Class GetUserInfo
Sub New
Set s = New NotesSession
Set db = s.CurrentDatabase
Set vw = db.GetView("(PeopleLookup)")
End Sub
Public Function GetPhoneNumber(uName As String) As String
Set doc = vw.GetDocumentByKey(uName)
If Not (doc Is Nothing) Then
GetPhoneNumber = doc.GetItemValue("OfficePhoneNumber")(0)
Else
GetPhoneNumber = ""
End If
End Function
Public Function GetCity(uName As String) As String
Set doc = vw.GetDocumentByKey(uName)
If Not (doc Is Nothing) Then
GetCity = doc.GetItemValue("OfficeCity")(0)
Else
GetCity = ""
End If
End Function
Public Function GetState(uName As String) As String
Set doc = vw.GetDocumentByKey(uName)
If Not (doc Is Nothing) Then
GetState = doc.GetItemValue("OfficeState")(0)
Else
GetState = ""
End If
End Function
Public Function GetAddress(uName As String) As String
Set doc = vw.GetDocumentByKey(uName)
If Not (doc Is Nothing) Then
GetAddress = doc.GetItemValue("OfficeStreetAddress")(0)
Else
GetAddress = ""
End If
End Function
Public function GetZip(uName As String) As String
Set doc = vw.GetDocumentByKey(uName)
If Not (doc Is Nothing) Then
GetZip = doc.GetItemValue("OfficeZip")(0)
Else
GetZip = ""
End If
End Function
Public function GetCountry(uName As String) As String
Set doc = vw.GetDocumentByKey(uName)
If Not (doc Is Nothing) Then
GetCountry = doc.GetItemValue("OfficeCountry")(0)
Else
GetCountry = ""
End If
End Function
Public Function GetFullName(uName As String) As String
Set doc = vw.GetDocumentByKey(uName)
If Not (doc Is Nothing) Then
GetFullName = doc.GetItemValue("FirstName")(0) + " " + _
doc.GetItemValue("LastName")(0)
Else
GetFullName = ""
End If
End Function
End Class



  可以在浏览器中键入 URL http://dominoserver/names.nsf/GerUserInfo?wsdl,很容易地查看到这个 Web 服务的 WSDL。
  注意:每个方法查找都会添加要用到的一个新的视图。这个隐藏视图称为 PeopleLookup,只显示 Person 窗体创建的文档,包含用以下公式填充的一列:

@Trim(@Subset(LastName;1))+@If(Firstname !="";" , "+@Trim(@Subset(FirstName;1));"")+@If(MiddleInitial !="";" "+@Trim(@Subset(MiddleInitial;1));"")






  ASP.NET 应用程序
  可以在 ASP.NET 应用程序中使用这个 Web 服务来将 Web 服务调用获取的数值填充到 Web 页面的字段中。首先,在 .NET 应用程序中向 Web 服务添加 reference。图 5 显示了添加的 Web reference,以及用户输入服务地址并单击 Go 之后所列出的方法。


图 5. 向 .NET 应用程序添加 Web 服务 reference


  在 Add Web Reference 对话框的 Web reference 名字字段中键入在代码中访问 Web 服务所使用的名字。在添加 Web reference 之后,代码就会简单易懂。清单 5 显示了后面跟着 codebehind 文件的 ASP.NET 页面的代码。
  清单 5. 使用 Domino Web 服务的 ASP.NET Web 窗体

<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="DominoTest.aspx.vb" Inherits="DominoIntegration.Test2"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Domino Web Service Demo</title>
</head>
<body>
<form id="frmDominoIntegration" method="post" runat="server">
<asp:Label id="lblSelect" runat="server" Width="144px">
Select Name:</asp:Label>
<asp:DropDownList id="ddlNames" runat="server"
OnSelectedIndexChanged="ddlNames_SelectedIndexChanged"
AutoPostBack="True" Width="336px"></asp:DropDownList><br>
<asp:Label id="lblName" runat="server" Width="144px">
Address:</asp:Label>
<asp:TextBox id="txtFullName" runat="server" Width="360px" /><br>
<asp:Label id="lblAddress" runat="server" width="144px">
Address:</asp:Label>
<asp:TextBox id="txtAddress" runat="server" Width="360px" /><br>
<asp:Label id="lblCityState" runat="server" width="144px">
City, State</asp:Label>
<asp:TextBox id="txtCity" runat="server" Width="264px" /><br>
<asp:Label id="lblComma" runat="server" Width="8px" Font-Bold="True">
,</asp:Label>
<asp:TextBox id="txtState" runat="server" Width="80px" /><br>
<asp:Label id="lblZip" runat="server" Width="144px">
Zip Code:</asp:Label>
<asp:TextBox id="txtZip" runat="server" Width="200px" /><br>
<asp:Label id="lblCountry" runat="server" Width="144px">
Country:</asp:Label>
<asp:TextBox id="txtCountry" runat="server" Width="200px" /><br>
<asp:Label id="lblPhone" runat="server" Width="144px">
Phone:</asp:Label>
<asp:TextBox id="txtPhoneNumber" runat="server" Width="200px" /><br>
</form>
</body>
</html>



  清单 6 显示了用 Visual Basic 写的 ASP.NET Web 窗体的 codebehind 文件。
  清单 6. ASP.NET Web 窗体的 Visual Basic. NET 代码

Imports System.Net
Imports System.IO
Imports System.Xml
Public Class DominoIntegration
Inherits System.Web.UI.Page
Protected WithEvents ddlNames As DropDownList
Protected WithEvents lblSelect As Label
Protected WithEvents txtFullName As TextBox
Protected WithEvents lblName As Label
Protected WithEvents lblPhone As Label
Protected WithEvents lblCountry As Label
Protected WithEvents txtCountry As TextBox
Protected WithEvents lblZip As Label
Protected WithEvents lblCityState As Label
Protected WithEvents txtZip As TextBox
Protected WithEvents txtState As TextBox
Protected WithEvents txtCity As TextBox
Protected WithEvents txtPhoneNumber As TextBox
Protected WithEvents txtAddress As TextBox
Protected WithEvents lblAddress As Label
Protected WithEvents lblComma As Label
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Init
InitializeComponent()
End Sub
Public Sub Page_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs)Handles MyBase.Load
If Not (Me.IsPostBack) Then
Try
GetData()
Catch ex As Exception
Response.Write(ex.ToString())
End Try
End If
End Sub
Public Sub GetData()
Dim strResult As String
Dim objResponse As WebResponse
Dim objRequest As WebRequest
objRequest = System.Net.HttpWebRequest.Create(
"http://192.168.1.103/names.nsf/_People?ReadViewEntries")
objResponse = objRequest.GetResponse()
Dim sr As System.IO.StreamReader
sr = New StreamReader(objResponse.GetResponseStream())
strResult = sr.ReadToEnd()
Dim doc As New XmlDocument
sr.Close()
doc.LoadXml(strResult)
Dim nodes As XmlNodeList
nodes = doc.SelectNodes("viewentries/viewentry/entrydata
_[@columnnumber=""1""]")
ddlNames.DataSource = nodes
ddlNames.DataTextField = "innertext"
ddlNames.DataValueField = "innertext"
ddlNames.DataBind()
End Sub
Public Sub ddlNames_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Dim ws As New WebReference.GetUserInfoService
txtFullName.Text = ws.GETFULLNAME(ddlNames.SelectedValue.ToString())
txtAddress.Text = ws.GETADDRESS(ddlNames.SelectedValue.ToString())
txtCity.Text = ws.GETCITY(ddlNames.SelectedValue.ToString())
txtState.Text = ws.GETSTATE(ddlNames.SelectedValue.ToString())
txtZip.Text = ws.GETZIP(ddlNames.SelectedValue.ToString())
txtCountry.Text = ws.GETCOUNTRY(ddlNames.SelectedValue.ToString())
txtPhoneNumber.Text =
ws.GETPHONENUMBER(ddlNames.SelectedValue.ToString())
End Sub
End Class



  Web 窗体包括一个清单 3 所描述的 GetData 方法,但是它现在能够使用文本字段接收通过 Web 服务调用获取的数据。在 DropDownList 控件中执行选择的时候,调用 Web 服务。用户从列表中选择一个值时,自动调用控件的 SelectedIndex 事件(控件的 AutoPostBack 属性设置为 True)。
  在控件中选中的值传递到 Web 服务,以获取单独调用得到的每一个数据(比如地址和城市)。这段代码使用在 Add Web Reference 对话框添加的 WebReference 对象访问 Web 服务。




  结束语
  集成完全不同的系统对于企业开发人员来说是一项常见的开发任务。完成这个工作的一种方法是将 Microsoft .NET 平台与 Lotus Domino 结合,还可以使用其它方法来实现这种集成,例如使用 COM 技术以及已经可用的 XML 和 Web 服务。这些方法使得为了满足业务需求而整合各种 IT 资源变得十分容易。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-122149-1-1.html 上篇帖子: IBM System x3400 怎么启动到可以安装? 下篇帖子: IBM Lotus Notes/Domino技术知识文档汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表