gpt4 book ai didi

c# - 在 Web 服务中定义全局对象

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:54 25 4
gpt4 key购买 nike

这是关于我对 that question 的解决方案

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

上一个问题:

I need to use a DLL on an Ubuntu with Python. Final solution is using a web service for that propose...

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

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

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

所以,我的 Python 代码会做类似的事情......

  1. 使用网络服务并创建连接
  2. 从网络服务中获取可用支付的列表(这两个功能可以作为网络服务中的一个功能使用)
  3. 做一些计算并在 python 中选择合适的付款...
  4. 将付款方式信息发送到网络服务...

所有这些步骤都必须使用第一步中的连接对象来完成。正如我之前所说,我对 web 服务和在 python 上使用它们知之甚少......所以我很困惑我是否可以在步骤 2 和 4 中使用相同的连接对象。如果我将连接对象创建为全局在我的连接步骤的网络服务中,然后我的以下函数调用使用该对象?在 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 锁可能会导致一些安全漏洞...

但另一方面,我不想在网络服务上处理它...

还有一个问题...在连接步骤中,创建连接并使用 set/get 函数或返回连接对象并将其传回 Web 服务以用于后续的每个步骤是否可行?

最佳答案

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

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

关于c# - 在 Web 服务中定义全局对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com