Как я уже упоминал в комментариях, правильный и лучший способ сделать это - создать службы Restful по вашему Python
коду и делать http-запросы из C#
кода.Я не знаю, как много вы знаете о веб-фреймворках в Python, но есть множество из них, которые вы можете использовать.Для ваших нужд я бы предложил Flask , который является легким микро-фреймворком для создания веб-сервисов Restful.
Это очень простой веб-сервис Flask для примера: (вы можетепроверьте работающую версию здесь , я разместил ее на pythonOnEverywhere)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from Flask!'
@app.route('/math/add/<int:num1>/<int:num2>')
def add(num1, num2):
return '%d' % (num1+num2)
Этот простой сервис добавляет два числа и возвращает их сумму.
ИC#
Код:
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
public class Program
{
// Always use HttpClient as a singleton object
public static HttpClient _httpClient = new HttpClient() { BaseAddress = new Uri("http://al1b.pythonanywhere.com") } ;
public async static Task Main()
{
var num1 = 1;
var num2 = 4;
Console.WriteLine("Making http-request wait ...\r\n");
var mathAddResult = await _httpClient.GetAsync($"/math/add/{num1}/{num2}");
// 200 = OK
if(mathAddResult.StatusCode == HttpStatusCode.OK)
{
Console.WriteLine(await mathAddResult.Content.ReadAsStringAsync());
}
}
}
Вывод:
Making http-request wait ...
5
Рабочая версия кода выше теперь работает на .NET Fiddle .
TL; DR:
Для понимания и изучения Flask, посмотрите на документацию .(Это коротко и хорошо).Я уверен, что у вас будут сложные веб-службы, такие как принятие сложных или pocco-объектов в качестве входных данных веб-службы и возврат сложных объектов (как json) в качестве результатов веб-обслуживания.
В этом случае вам нужно знать, как работает Flask jsonify
. Эта ссылка расскажет вам как .
Хорошо, с другой стороны, в вашем приложении C #у вас будут и эти сложные объекты и сценарии.Вам нужно знать, как сериализовать, десеризовать и т. Д.
Microsoft проделала большую работу для своих учебных пособий здесь:
https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client
и
https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netframework-4.8