我们有一个自制的销售工具,开发用于通过DI服务器使用SAP Business One系统。我们有40名员工通过远程桌面登录到他们自己的用户的同一台机器。所有用户都有我们的salestool的桌面快捷方式。目前我们无法使用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给出的,我甚至不知道我必须使用哪一个。我希望有人可以告诉我我的解决方案需要哪些
因此,如果有人对一个好的架构有任何建议/我的问题的一个好的解决方案将是伟大的。
非常感谢
答案 0 :(得分:1)
您是否无法使用每用户许可?我从来没有真正看到过每CPU许可证;每个用户更好,因为每个专业用户自动附加了一个插件(DIAPI)许可证...也许与您的合作伙伴确认这一点,因为我很确定DIAPI许可证应该只是给您 - 从未见过一个客户必须为DIAPI付钱的情况。
有人说我已经退出SBO游戏几个月了,他们可能已经改变了他们的许可证制度,所以我错了,即使你确实得到了DIAPI许可证,也很难用于广域网基于解决方案,因为它很慢(您可以委托给使用连接池的服务并预先建立几个DIAPI连接,以循环方式将它们交给客户端,但它会像筛子那样泄漏内存,所以不要去那里!)
至于架构 - 我过去亲自编写了一个使用DI服务器仅使用单一许可证导入的网络服务(asmx,旧学校!);一旦你完成了对DI服务器的初始登录(如果它与数据库服务器一样运行只需要几秒钟),那么后续访问速度非常快;使用这个系统,我们在3天内导入了1000万件物品主数据,这对于SBO来说非常快。
唯一的缺点是您无法通过使用SAP视图历史记录屏幕确切地看到哪个用户进行了事务处理,但说实话,您可以将自己的事务记录到您自己的表中并用于例如一个UDF,用于记录上次修改数据的用户名。无论如何,SAP更改日志有点垃圾,如果编写自己的服务,您可以完全控制记录的内容和不记录的内容。
因此,如果你使用了例如WebAPI服务(我建议通过WCF,它更容易设置,甚至可以在IIS之外托管),你可以将请求转换为DI服务器格式的XML,然后发送DIS使用您为此设置的专用用户登录消息,执行事务,然后关闭注销,以便下一个请求具有许可证。
也许可以考虑购买更多的DIS许可证,它们不是很贵,这样你就可以在服务上有所收集;因为导入甚至100个文档只需要几秒钟,如果您目前没有许可证供他们使用,您可以让客户“暂停”。
希望有帮助...
答案 1 :(得分:1)
WebAPI服务可以,但您必须创建整个应用程序。
我的一位顾问以前做过这个,所以许可只是为了访问数据库。
这是可能的,但是非常耗时,因为您必须在基于Web的界面上构建整个应用程序。不确定这是否是一个可行的解决方案。
Byrne先生是对的,您应该咨询您所在国家/地区的SAP合作伙伴。
希望得到这个帮助。