为多个用户创建适用于 SAP B1 的 WCF/WebAPI 服务

本文关键字:WCF WebAPI 服务 B1 SAP 用户 创建 适用于 | 更新日期: 2023-09-27 18:33:01

我们有一个自制的销售工具,它被开发为通过DI服务器使用SAP Business One系统。我们有大约 40 名员工,他们通过远程桌面登录到与自己的用户相同的计算机。所有用户都有我们销售工具的桌面快捷方式。现在我们不能使用 DIAPI,因为 SAP 是按 CPU 授予许可的。因此,如果所有员工(销售人员(都通过远程桌面登录到同一台计算机,则会出现许可证问题。

老实说,我们的解决方案非常肮脏。我们开发了一个cmd工具,可以在我们家的服务器上运行。此 cmd 工具正在侦听客户端并从客户端接收 XML。在收到一些 xml 后,它将 XML 发送到 DI 服务器并等待响应并将结果发送回客户端。我们在这种架构上存在巨大的性能问题,就像我之前说的,这是一个非常肮脏的解决方案。

现在,我准备为客户端和SAP B1之间的通信找到另一种解决方案。我正在考虑使用 WCF 或 WebAPI(也许有什么建议我如何决定哪一个更适合我?

因此,当我决定构建 WCF 或 WebAPI 解决方案时,如何使用干净的体系结构解决许可证问题?我的意思是,我们为所有员工(用户(提供了SAP B1许可证。每个用户的用户名和密码都保存在LDAP中。因此,我可以从LDAP读取用户和密码,以使用正确的许可证将它们记录到SAP中。

我希望将所有业务逻辑都放在 WCF/WebAPI 中。现在,完整的业务逻辑在销售工具中。

所以我的想法是这样的:我的 WCF/WebAPI 服务包含业务逻辑。用户启动该工具(通过远程桌面登录(。LDAP 获取用户的 SAP 用户名和密码,并通过服务登录 SAP。用户登录后,他可以使用该工具,而多个用户可以并行工作。我认为多个用户的事务逻辑是由DIServer/DIAPI给出的,我什至不知道我必须使用其中的哪一个。我希望有人可以告诉我我的解决方案需要哪个

因此,如果有人对一个好的架构/我的问题有一个好的解决方案有任何建议,那就太好了。

谢谢你

为多个用户创建适用于 SAP B1 的 WCF/WebAPI 服务

是否无法使用每用户许可?我从未真正在野外见过每个 CPU 许可证;每个用户要好得多,因为每个专业用户都会自动附加一个附加 (DIAPI( 许可证......也许与您的合作伙伴核实一下,因为我很确定 DIAPI 许可证应该只给你 - 从未见过托管人必须为 DIAPI 付费的情况。

  • 话虽如此,我已经离开 SBO 游戏几个月了,他们可能已经改变了他们的许可系统,所以我错了,即使您确实获得了 DIAPI 许可证,它也非常适合基于 WAN 的解决方案,因为它很慢(您可以委托给使用连接池并预先建立多个 DIAPI 连接的服务, 以循环方式将它们分发给客户,但它像筛子一样泄漏内存,所以不要去那里!

  • 至于架构 - 我过去亲自编写过一个Web服务(asmx,老派!(,它使用DI服务器仅使用一个许可证进行导入;一旦您完成了对DI服务器的初始登录(如果它与数据库服务器在同一服务器上运行,则只需要几秒钟(,那么后续访问非常快; 使用这个系统,我们在3天内导入了1000万个项目主插入, 这对 SBO 来说非常快。

  • 唯一的缺点是您无法通过使用SAP视图历史记录屏幕准确看到哪个用户进行了交易,但说实话,您可以将自己的事务记录到自己的表中,并使用例如UDF来记录上次修改数据的用户名。无论如何,SAP更改日志有点垃圾,如果编写自己的服务,则可以完全控制记录的内容和不记录的内容。

  • 因此,如果您使用例如 WebAPI 服务(我建议使用 WCF,它更容易设置,甚至可以在 IIS 外部托管(,您可以将请求转换为 DI 服务器格式的 XML,然后使用您为此设置的单个特殊用途用户向 DIS 发送登录消息,执行事务, ,然后发送注销,以便下一个请求具有许可证。

  • 也许考虑再购买几个DIS许可证,它们不是很贵,这样你也可以在服务上有一些池化;因为即使是100个文档也只需要几秒钟,如果你目前没有许可证供他们使用,你可以让客户"搁置"。

希望有帮助...

WebAPI服务就可以了,但你必须创建整个应用程序。

我的一位顾问以前做过这个,所以许可证只是访问数据库。

这是可能的,但非常耗时,因为您必须在基于 Web 的界面上构建整个应用程序。不确定这是否是一个可行的解决方案。

Byrne 先生是对的,您应该咨询您所在国家/地区的 SAP 合作伙伴。

希望这有帮助。