随笔-129  评论-512  文章-0  trackbacks-12
  2008年8月3日
在BizTalk Server 2006 R2 中调用 WCF Services – Part 1
 
 
本篇文章演示如何在BizTalk Server 2006 R2 项目中通过新增的WCF Adapter调用WCF Services。(This post shows you how to consume WCF Services via new WCF Adapter in BizTalk Server 2006 R2)
 
示例应用方案:假定你已经设计、实现并部署了WCF Services。现在你想在BizTalk Orchestration 流程中发送/接收消息给WCF Services。BizTalk 通过WCF Adapter 与 WCF 应用程序通信,这些可以通过在BizTalk 中配置发送和接收端口。这篇文章主要演示如何通过BizTalk consume WCF 向导来简化端口的创建,尤其是建立WCF 方法和SOAP Actions之间的映射,或者是端口配置文件。
 
原文链接:在BizTalk Server 2006 R2 中调用 WCF Services – Part 1
 
首先,建立假设你已经建立、并部署好了WCF Services。这里,使用如下的WCF service(提供WCF 演示项目源代码下载!)



 
下面是通过C# Application 调用上述WCF Service 的运行情况:
 

 
1. 使用WCF Services Consume 向导调用WCF Services
通过这一向导,你可以基于WCF Services描述文件,创建Schema 文件和 Port binding configuration 文件,这些文件是BizTalk 项目所必须的。
在BizTalk 项目项目中,选择增加“Add Generated Items”,弹出如下窗口:
 


 
选择从正在运行的WCF Service 产生Metadata(http://forum.entlib.com BizTalk 小组注:需要启动WCF Services),窗口如下所示:



 
点击 Next 按钮,在接下来的窗口中,输入WCF Metadata Address,用来生成Metadata数据:
 


 
点击 Next 按钮,在接下来的窗口中,输入Namespace:



最后,点击Import 按钮,导入Schema 相应的端口绑定文件到BizTalk 项目中。Schema 文件是基于调用的WCF Services 元数据生成的,可以作为后续request/response servicesmultipart messages。下面是BizTalk 项目中生成的BizTalk Schema 文件:





 
现在,我们已经完成了在BizTalk 项目中导入WCF Services 相关的Schema 和WCF 端口绑定文件。
 
接下来的文章中,我们将演示如何构建BizTalk Orchestration,以及如何在Orchestration 流程中使用Schema 消息,如何与WCF Adapter 交互等等。
 
欢迎到http://forum.entlib.com BizTalk 论坛交流分享。

 

 

 

posted @ 2008-08-03 10:36 EntLib 阅读(894) 评论(1) 编辑

WCF 简单示例程序(源码下载)


本示例程序演示如何编写一个简单的WCF 示例程序。

示例WCF 项目源码下载

如何使用WCF 示例代码:
Server 端:Console 程序,WCF Service 承载在Console 程序中。

    [ServiceContract(Namespace = "http://microsoft.servicemodel.samples/")]
    public interface IBankService
    {
        [OperationContract]
        int AddAccount(string clientName, int clientAge);
        [OperationContract]
        bool RemoveAccount(int accountNumber);
        [OperationContract]
        List<String> GetAccounts();
    }

    class BankService: IBankService
    {
        private List<Account> _accounts = new List<Account>();
        private int _idGenerator = 0;

        public int AddAccount(string clientName, int clientAge)
        {
            Console.WriteLine(OperationContext.Current.SessionId);

            _idGenerator++;
            Account acc = new Account(_idGenerator, clientName, clientAge);
            _accounts.Add(acc);
            Console.WriteLine("ADD - " + acc.ToString());
            return _idGenerator;
        }
......

Client 端: 也是一个Console 程序,负责调用/测试 WCF Services。
            using (ChannelFactory<IBankService> bankFactory =
               new ChannelFactory<IBankService>("MyClient"))
            {
                IBankService bankProxy = bankFactory.CreateChannel();

                Console.WriteLine("Adding John , 20 years");
                bankProxy.AddAccount("John", 20);
                Console.WriteLine("Adding Peter , 21 years");
                bankProxy.AddAccount("Peter", 21);
                Console.WriteLine("Adding Andrew , 25 years");
                bankProxy.AddAccount("Andrew", 25);

                DisplayAccounts(bankProxy.GetAccounts());

                Console.WriteLine("Removing John");
                bankProxy.RemoveAccount(1);

                DisplayAccounts(bankProxy.GetAccounts());


                Console.WriteLine();
                Console.WriteLine("Press <Enter> to close");
                Console.ReadLine();
            }

运行WCF 示例项目:

启动WCF Server 端 Console 程序,运行界面如下:



下面是通过C# Application 调用上述WCF Service 的运行情况:




恭喜!你现在已经完成了一个WCF Service 程序!

posted @ 2008-08-03 08:16 EntLib 阅读(1499) 评论(0) 编辑