SAP接口编程之NCo3.0 系列(01) : RfcDestination

开始新的系列:.net connector 3.0,简称 Nco3.0。Nco3.0 是 SAP 针对 .net 平台提供的编程接口,由 NCo1.0/NCo2.0 演变而来,1.0 和 2.0 已经过时,不建议使用。3.0 版与之前1.0/2.0 版本比较,不管是 API 设计, 还是架构,都重新设计过,也借鉴了 JCo3.0 的设计,更加成熟,也为程序员提供更好的控制性和方便性。

NCo3.0 的优点

  • 更加稳定、健壮、安全。关于安全,后面会有相关介绍;
  • 重新设计了 SAP connection 的处理机制:开发者不需要自己来管理与 SAP 系统的的连接 (Connection):不需要打开连接、关闭连接、Connection 对象销毁等等,所有这一切由 .Net Connectior 3.0 管理;
  • 增强对大量交易数据(不是 big data,而是 mass transactions 或 heavy load scenario) 处理的能力;
  • 减少内存耗用;
  • 不绑定 Visual Studio 版本

.Net Connector 3.0 下载和安装

下载地址: https://service.sap.com/connectors。 安装比较简单,其实就是解压,解压出几个文件。我们在程序中主要使用 sapnco.dllsapnco_utils.dll 这两个动态链接库。以 Win7 (32位)为例,默认的安装路径是:C:\Program Files (x86)\SAP\SAP_DotNetConnector3。

NCo 3.0 环境准备

添加引用

添加对 sapnco.dllsapnco_utils.dll 的引用。

nco3-1-1.jpg

导入 NCo 3.0 的 namespace

NCo 3.0 只有一个 namespace:SAPP.Middleware.Connector,在需要用到 NCo 3.0 类的代码中导入这个 namespace

using SAP.Middleware.Connector;

通过 RfcDestination 连接到 SAP 系统

RfcDestination 代表后端 SAP 系统。前面我们说到,在 RFC 技术中, 一般通过 Connection 对象连接到 SAP 系统,NCo3.0 设计上一个重大改变就是开发者不用再关心与 SAP 的连接,由 RfcDestination 对象实例来管理与 SAP 连接的相关工作,比如连接池。NCo3.0 通过 RfcDestinationManager 类的 GetDestination()方法来创建 RfcDestination 对象实例,并且保证只有一个 RfcDestination 实例 (单例模式)。该方法有两个方法签名。

// 方法一 
public static RfcDestination GetDestination(RfcConfigParameters parameters);

// 方法二 
public static RfcDestination GetDestination(string destinationName);

方法 1 的参数为 RfcConfigParameters,直接创建 RfcConfigParameters 作为方法的参数。

方法 2 的参数是一个代表 SAP 连接的字符串,比如 ECC。使用 string 参数具有更高的灵活性,但 NCo 3.0 有一些规范。为什么这种方法更灵活呢,因为配置参数的位置可由开发人员来定义的,比如可以将配置写在专门的文件中。要点:

  • 自定义一个类,这个类必须实现 IDestinationConfiguration 接口,比如我们创建一个 DestinationConfig 类
  • 向 RfcDestinationManager 类注册刚创建 DestinationConfig 类
  • 调用 RfcDestinationManager 的 GetDestination() 方法得到 RfcDestination 对象实例。

代码设置 RfcConfigParameters 示例

在工程中创建 SAPService 类,编写如下代码:

RfcDestination 的 Ping() 方法可以用于测试是否可以连接到后端 SAP 系统。我们编写如下的单元测试代码:

方法二示例

定义一个类 DestinationConfig,实现 IDestinationConfiguration 接口,起始代码如下:

对代码进行改写,在 getParameters() 方法中,设置 logon parameters,并以字符串 ECC 为标识返回。

定义了配置类后,还需要进行注册。为了方便最终代码的调用,在 SAPService 类中创建一个新的方法:GetDestinationFromName() ,在该方法中封装调用的逻辑(方法二的第二步和第三步)。

有了 ECC 这个 destinationName,开发的时候就可以只关心 destination。单元测试的调用代码如下:

补充

NCo3.0 所需要的 dll 已经可以通过 NuGet 包的方式安装。在项目中通过菜单 【Tools】-> 【NuGet Packages Manager】,找到 SAPDotNetConnector3,即可以安装到工程。

源代码

01-nco3.0 hello world - 码云

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值