65.9K
CodeProject 正在变化。 阅读更多。
Home

BizTalk 2006 使用 Web 服务并将编排发布为 Web 服务并从 ASPX 调用

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.30/5 (8投票s)

2007 年 10 月 23 日

CPOL
viewsIcon

42520

downloadIcon

559

本示例演示了 BizTalk 2006 消费 Web 服务,然后将编排发布为 Web 服务,并从 ASPX 调用它。

引言

我们其中一个客户的项目包括访问不同 Web 服务中的数据。他们希望将所有这些服务集成起来以执行他们的业务流程。他们不希望单独调用所有 Web 服务,而是希望使用某种机制来集成它们到一个中心位置,从而执行他们的业务逻辑。

为了为他们提供集成不同服务的机制,BizTalk 出现了,它将提供一个解决方案来集中化业务流程,以便在它们之间进行通信和访问数据。

背景

在实际场景中,我将消费一个第三方 Web 服务,但在这里为了演示,我正在创建我自己的 Web 服务。

使用代码

在这里,我们在编排中消费了两个 Web 服务,GetAdvtGetWidget,并将它们的输出保存到 SQL Server 表中,然后通过调用已发布的编排将其渲染到 ASPX 页面。

以下是在 ASPX 上调用已发布编排的代码

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.Web.Caching;
using System.Data.SqlClient;

//using SKCV_GetPage; //Add Web service
public partial class LandingPage : System.Web.UI.Page
{
    private string ContentMetaData4 = "";
    private static XslCompiledTransform transform = new XslCompiledTransform();
    private string lReqOn = "", lOrchCompleted = "", 
            lDataInsert = "", lOrchInvok="";

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void cmdGetPage_Click(object sender, EventArgs e)
    {
        try
        {
            lReqOn = System.DateTime.Now.ToString();
            CallBizTalkWS();//Call BizTalk Published Orchestration WS
            lOrchCompleted = System.DateTime.Now.ToString();
            System.Threading.Thread.Sleep(2000);//delay for 2 Sec.
            //Geting Data From PublishContents Table
            DoTransformation(Convert.ToInt16(txtpageId.Text), 3, 2);
            Xml1.DocumentContent = ContentMetaData4.Replace("xmlns", "xmlns:xsl");
            //Geting Data From PublishContents Table
            DoTransformation(Convert.ToInt16(txtpageId.Text), 99, 2);
            Xml2.DocumentContent = ContentMetaData4.Replace("xmlns", "xmlns:xsl");

            //Diaplying Times
            labUserId.Text = txtuserId.Text;
            labReqOn.Text = lReqOn;
            labOrchInvok.Text = lOrchInvok;
            labOrchCompleted.Text = lOrchCompleted;
            labDataInsert.Text = lDataInsert;
            labRender.Text = System.DateTime.Now.ToString();
        }
        catch (Exception lException)
        {
            Response.Write(lException.Message.ToString());
        }
    }

# region "Private Functions"
    private void CallBizTalkWS()
    {
        SKCV_GetPage.InPara lInPara = new SKCV_GetPage.InPara();
        lInPara.userId = txtuserId.Text;
        lInPara.pageId = txtpageId.Text;
        SKCV_GetPage.WebService_SKCV_GetPage lGetPage = new SKCV_GetPage.WebService_SKCV_GetPage();
        IAsyncResult lIAsyncResult;

        // Begin the Async call to WS
        lIAsyncResult = lGetPage.BeginOperation_1(lInPara,null, null);

        // Wait for the asynchronous operation to complete.
        lIAsyncResult.AsyncWaitHandle.WaitOne();

        lGetPage.EndOperation_1(lIAsyncResult);

        if (lIAsyncResult.IsCompleted)
        {
            //labMsg.Text = "WS Completed" ;
            //Geting Data From PublishContents Table
            //DoTransformation(Convert.ToInt16(txtpageId.Text), 3, 2);
            //Xml1.DocumentContent = ContentMetaData4.Replace("xmlns", "xmlns:xsl");
            //Geting Data From PublishContents Table
            //DoTransformation(Convert.ToInt16(txtpageId.Text), 99, 2);
            //Xml2.DocumentContent = ContentMetaData4.Replace("xmlns", "xmlns:xsl");
        }
    }

    private void DoTransformation(int PageId, int PositionId, int ContentId)
    {
        //int PageId = 0, PositionId, ContentId;
        string Content = "", ContentMetaData1 = "", 
               ContentMetaData2 = "", ContentMetaData3 = "";
        SqlConnection lCon = new SqlConnection(
          ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
        lCon.Open();

        using (lCon)
        {
            SqlCommand lCmd = lCon.CreateCommand();
            lCmd.CommandType = CommandType.StoredProcedure;
            lCmd.CommandText = "SelectPublishContents";
            SqlDataAdapter lAdp = new SqlDataAdapter();
            lAdp.SelectCommand = lCmd;
            SqlParameter lPageId = new SqlParameter("@PageId", SqlDbType.Int);
            lPageId.Value = PageId;//Convert.ToInt16(txtpageId.Text);
            SqlParameter lPositionId = new SqlParameter("@PositionID", SqlDbType.Int);
            lPositionId.Value = PositionId ;
            SqlParameter lContentId = new SqlParameter("@ContentId", SqlDbType.Int);
            lContentId.Value = ContentId ;

            lCmd.Parameters.Add(lPageId);
            lCmd.Parameters.Add(lPositionId);
            lCmd.Parameters.Add(lContentId);
            SqlDataReader lReder;
            lReder = lCmd.ExecuteReader();

            if (lReder.HasRows)
            {
                while (lReder.Read())
                {
                    PageId = Convert.ToInt16(lReder["PageId"].ToString());
                    PositionId = Convert.ToInt16(lReder["PositionId"].ToString());
                    ContentId = Convert.ToInt16(lReder["ContentId"].ToString());
                    Content = lReder["Content"].ToString();
                    ContentMetaData1 = lReder["ContentMetaData1"].ToString();
                    ContentMetaData2 = lReder["ContentMetaData2"].ToString();
                    ContentMetaData3 = lReder["ContentMetaData3"].ToString();
                    ContentMetaData4 = lReder["ContentMetaData4"].ToString();
                    lDataInsert = lReder["CreatedOn"].ToString();
                    lOrchInvok = lReder["ContentMetaData2"].ToString();
                }
            }
        }
    }
#endregion
}

关注点

我使用“CallBizTalkWS()”异步调用 Web 服务。在这里,您还可以找到 SOAP 和 SQL Adapter 的示例。

© . All rights reserved.