c#

位置:IT落伍者 >> c# >> 浏览文章

调用.net程序集中的方法


发布日期:2018年11月29日
 
调用.net程序集中的方法

虽然Biztalk Server提供了众多的内置功能然而在一些情况下可能还需要调用程序集中的函数因为在Net程序集中可以非常方便地调用Web Service访问数据库另一方面有些函数是程序集中已经写好的为了增加软件的复用便于软件版本的管理使用现有的程序集也在情理之中

本文通过一个简单实例介绍Biztalk应用中调用程序集的方法这个实例完成的功能在调用Web Services一文中实现过只不过实现的方式用所差别一个是调用Web Service一个是调程序集

首先我们创建一个MyFunction的项目其中只包括一个的类文件class我们要在Biztalk中调用该类的CheckUserId静态方法class的源程序如下

using System;

namespace MyFunction

{

public class UserManager

{

public UserManager()

{

}

public static string CheckUserId(string strUserId)

{

if (strUserId == fengfangfang)

{

return Administrator;

}

else

{

return User;

}

}

}

}

为程序集设置强名称和发布Net程序集到全局程序集缓存可参见将程序集安装到全局程序集缓存(GAC)中一文

然后创建一个Biztalk Server工程CallFunction添加一个UserInfoxsd其结点结构如下

UserInfo

UserId

RoleName

快速升级UserId和RoleName两个子字段元素具体步骤可参见调用Web Services一文

下面创建一个业务流程MainOrchodx在业务流程视图中创建两个消息InMsg和OutMsg这两个消息均使用CallFunctionUserInfo消息类型在业务流程中创建一个接收操作ReceiveInMsg一个发送操作SendOutMsg在二者之间创建一个消息赋值操作AssignOutMsg同时会产生一个构造消息操作命名为ConstructOutMsg构造的消息为OutMsg设置ReceiveInMsg激活为True

为工程CallFunction添加Net引用找到MyFunctiondll添加到引用中编写AssignOutMsg的表达式如下

OutMsg = InMsg;

OutMsg(CallFunctionPropertySchemaRoleName)= MyFunctionUserManagerCheckUserId(InMsg(CallFunctionPropertySchemaUserId));

创建一个接收端口InPort用于连接接收操作一个发端端口OutPort用于连接发送操作两个端口均使用MicrosoftBizTalkDefaultPipelinesXMLTransmit管道接收地址为c:\in\*xml发送地址为c:\out\%SourceFileName%

编译并布署Biztalk Server工程CallFunction启动CallFunctionMainOrch业务流程进行测试

测试文件fengfangfangxml

<ns:UserInfo xmlns:ns=>

<UserId>fengfangfang</UserId>

<RoleName></RoleName>

</ns:UserInfo>

输出为

<ns:UserInfo xmlns:ns=>

<UserId>fengfangfang</UserId>

<RoleName>Administrator</RoleName>

</ns:UserInfo>

测试文件fengffxml

<ns:UserInfo xmlns:ns=>

<UserId>fengff</UserId>

<RoleName></RoleName>

</ns:UserInfo>

输出为

<ns:UserInfo xmlns:ns=>

<UserId>fengff</UserId>

<RoleName>User</RoleName>

</ns:UserInfo>

参考文章

文章 调用Web Services sp;

文章 将程序集安装到全局程序集缓存(GAC)中

文章 架构和实例的验证 sp;

文章 如何快速创建架构 sp;

文章 需要强名称程序集

上一篇:深入理解C# 3.0的五项主要改进

下一篇:C#编程 忘记密码功能的实现方法