在web服务中定义全局对象
本文关键字:全局 对象 定义 web 服务 | 更新日期: 2023-09-27 18:12:16
这是我对那个问题的解决方案
距离我上次写c#代码已经有很长时间了,这是我第一次写Web Service…
之前的问题:
我需要在带有Python的Ubuntu上使用DLL。最后的解决方案是使用web服务来提议…
我的问题是,API是用于一种支付。在webservice中使用DLL有三个基本功能。第一个用于连接到服务器,第二个用于询问可用付款,第三个用于选择一个并进行付款…
由于我的系统使用Python,我希望在Python上保留选择支付方式的逻辑,而不是在web服务上。
我的问题是,当我建立连接时,webservice必须创建一个连接对象,并使用该连接执行以下两个步骤。它可以处理该连接对象,并为下一个连接和支付创建一个新的连接对象。
那么,我的Python代码会这样做…
- 使用web服务创建连接
- 从web服务中获取可用支付的列表(这两个函数可以作为web服务中的单个函数使用)
- 在python… 中做一些计算并选择适当的付款
- 发送支付方式信息到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服务的技术,但它们可能会使事情变得更复杂,而不是更简单。
我不清楚你的描述为什么你需要连接对象在第1步中创建,或者为什么你不能只是为步骤2和4创建一个不同的连接对象-这就是我如何实现这一点。