在web服务中定义全局对象

本文关键字:全局 对象 定义 web 服务 | 更新日期: 2023-09-27 18:12:16

这是我对那个问题的解决方案

距离我上次写c#代码已经有很长时间了,这是我第一次写Web Service…

之前的问题:

我需要在带有Python的Ubuntu上使用DLL。最后的解决方案是使用web服务来提议…

我的问题是,API是用于一种支付。在webservice中使用DLL有三个基本功能。第一个用于连接到服务器,第二个用于询问可用付款,第三个用于选择一个并进行付款…

由于我的系统使用Python,我希望在Python上保留选择支付方式的逻辑,而不是在web服务上。

我的问题是,当我建立连接时,webservice必须创建一个连接对象,并使用该连接执行以下两个步骤。它可以处理该连接对象,并为下一个连接和支付创建一个新的连接对象。

那么,我的Python代码会这样做…

  1. 使用web服务创建连接
  2. 从web服务中获取可用支付的列表(这两个函数可以作为web服务中的单个函数使用)
  3. python
  4. 中做一些计算并选择适当的付款
  5. 发送支付方式信息到web服务…

所有这些步骤都必须在第一步的连接对象中完成。正如我之前所说,我对web服务和在python上使用它们的知识并不多…因此,我很困惑是否可以在步骤2和4中使用相同的连接对象。如果我在连接步骤中将连接对象创建为web服务中的全局对象,那么下面的函数调用将使用该对象吗?在OOP中,这是必须的方式,但我不能确定它在web服务中是否相同?

部分代码片段:

namespace paymentType{
  public class x : System.Web.Services.WebService{
  ConnectionObj conn;
  ConnResult result;
  [WebMethod]
  public void ConnectToServer(String deviceId){
  conn = new ConnectionObj();
  result = baglanti.Connect(deviceId);
  }
  [WebMethod]
  public List<int> GetCompanyList(){
  List<int> kurumlar = new List<int>();
  if (sonuc.CRCStatus){
  if (baglanti.CompanyList != null) { blah blah blah...}

由于conn是全局的,我可以在函数调用ConnectToServer中设置它,并为其他函数使用baglanti对象…

更新:让我试着让它更清楚…

当我连接到远程服务器(通过DLL中的函数)时,远程服务器接受我的连接并为该连接提供一个稍微唯一的id。然后我询问客户的可用付款方式。服务器发送所有可用的事务id属于该事务的事务。在最后一步中,我使用我想要的交易id进行支付。问题是,每个事务id在创建它的连接中都是可用的。因此,我必须请求事务id并确认我想要在同一连接中使用的事务id…

但据我所见,最好的解决方案是使用单个函数调用并完成web服务上的所有工作,因为API提供商考虑删除connection-transactionId锁可能会导致一些安全漏洞…

但是另一方面,我不想在web服务上处理它…

还有一个问题…在连接步骤中,创建连接并使用set/get函数,或者返回连接对象并将其传递回web服务,这在接下来的每个步骤中都可行吗?

在web服务中定义全局对象

如果您正在使用web服务进行通信,则最好是无状态的—也就是说,您应该始终在请求中发送服务实现所需的任何上下文信息。虽然存在允许您实现有状态 web服务的技术,但它们可能会使事情变得更复杂,而不是更简单。

我不清楚你的描述为什么你需要连接对象在第1步中创建,或者为什么你不能只是为步骤2和4创建一个不同的连接对象-这就是我如何实现这一点。