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

来源:互联网 发布:png软件图标 编辑:程序博客网 时间:2024/05/18 03:28

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

    具体的操作如下图:

   

图1 需要调用的服务

图2

图3

图4

图5

图6

图7

图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);            }        }    }}