Dynamics CRM 2011 编程系列(23):用插件调用WCF

    上篇博文介绍了用插件调用Web Service的方法,现在我们来试试用插件调用WCF吧。在.NET 4.0的体系结构里,已经把Web Service集成到WCF中了,在日常的开发中免不了需要用到这种方法来完成某些系统集成的开发。

    具体的操作如下图:

    Dynamics CRM 2011 编程系列(23):用插件调用WCF_第1张图片

图1 需要调用的服务

Dynamics CRM 2011 编程系列(23):用插件调用WCF_第2张图片

图2

Dynamics CRM 2011 编程系列(23):用插件调用WCF_第3张图片

图3

Dynamics CRM 2011 编程系列(23):用插件调用WCF_第4张图片

图4

Dynamics CRM 2011 编程系列(23):用插件调用WCF_第5张图片

图5

Dynamics CRM 2011 编程系列(23):用插件调用WCF_第6张图片

图6

Dynamics CRM 2011 编程系列(23):用插件调用WCF_第7张图片

图7

Dynamics CRM 2011 编程系列(23):用插件调用WCF_第8张图片

图8

 

插件代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;


namespace Plugin22
{
    public class CallWCF : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

            Entity curEntity = (Entity)context.InputParameters["Target"];
            int num1 = (int)curEntity["new_num1"];
            int num2 = (int)curEntity["new_num2"];
            int result = 0;
            OptionSetValue optType = (OptionSetValue)curEntity["new_opt_type"];

            var binding = new BasicHttpBinding();
            var address = new EndpointAddress("http://localhost:83/Calculator.svc");

            Plugin22.Service.CalculatorClient calculator = new Service.CalculatorClient(binding, address);

            switch (optType.Value)
            {
                case 100000000:
                    result = calculator.ADD(num1, num2);
                    break;
                case 100000001:
                    result = calculator.SUB(num1, num2);
                    break;
                case 100000002:
                    result = calculator.MUL(num1, num2);
                    break;
                case 100000003:
                    result = calculator.DIV(num1, num2);
                    break;
            }

            if (curEntity.Attributes.Contains("new_result"))
            {
                curEntity["new_result"] = result;
            }
            else
            {
                curEntity.Attributes.Add("new_result", result);
            }


        }
    }
}


 

你可能感兴趣的:(编程,Web,crm,service,WCF,binding)