Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Why no longer support .net standard 2.0 ? #20

Closed
John0King opened this issue Jan 4, 2019 · 19 comments
Closed

Why no longer support .net standard 2.0 ? #20

John0King opened this issue Jan 4, 2019 · 19 comments

Comments

@John0King
Copy link

No description provided.

@roc916 roc916 closed this as completed Jan 4, 2019
@Caskia
Copy link

Caskia commented Jul 20, 2019

希望能支持 .net standard 2.0.
能说下什么地方造成了必须使用aspnetcore?

@roc916 roc916 reopened this Jul 20, 2019
@roc916
Copy link
Contributor

roc916 commented Jul 20, 2019

支持.net standard 2.0. 能够带来些什么吗?Essensoft.AspNetCore.Payment 的定位本就服务于AspNetCore呀

@John0King
Copy link
Author

@EssenRoc 支持 .net standard 可以让 asp.net core on .net framework 的项目用 , 至少目前所有的 asp.net core 框架 都是建立在 .netstandard 2.0 上的(3.0 还没来)。
不过 @Caskia 好像不是这种情况

@Caskia
Copy link

Caskia commented Jul 20, 2019

如果基于.netstandard,你的库更具备通用性,一些非netcoreapp的基础库也可以引用。如果我开发的并不是一个web程序,而是手机那么这个库就没法适应了

@roc916
Copy link
Contributor

roc916 commented Jul 20, 2019

如果基于.netstandard,你的库更具备通用性,一些非netcoreapp的基础库也可以引用。如果我开发的并不是一个web程序,而是手机那么这个库就没法适应了

可这本就是后端领域,并不应该在手机上执行阿...

@Caskia
Copy link

Caskia commented Jul 20, 2019

后端应用并不限于netcoreapp。
首先很感谢你开发了这个作品。
在这个作品中包含三方平台支付流程的一些api,这些api按照三方要求的确是得在后端系统中进行执行的。但是这个后端的形态并不介于是一个X86操作系统的运行环境并且是netcoreapp啊。可以是跑在arm上的各种os。

@John0King
Copy link
Author

@Caskia 这个库依赖 asp.net core 也就是 Microsoft.AspNetCore.Http , 尽管可以变成 .net standard 类库, 但是仍然无法在 Xamarin 等 asp.net core 无法运行的环境中使用。

但是这个后端的形态并不介于是一个X86操作系统的运行环境并且是netcoreapp啊。可以是跑在arm上的各种os

Target netcoreapp 还是 netstandard , 不会限制CPU的 architecture , 事实上 .net core 支持 arm平台, 唯独限制的是 在 .net framework 或者 mono 上运行 asp.net core 的这种情况, 只能fork 自己编译。

目前在.net 平台有2个比较大的 框架做web, 一个 是 System.Web 另外一个是 Microsoft.AspNetCore , 很多人总是把这两个混淆成 .net framework 和 .net core , 实际上根本不是一回事, 他们只是建立在.net 平台上面的两个框架而已, 只是 前者只支持 .net framework 和 mono, 后者因为目标是 .net standard 所以所有的运行时都能运行。

@EssenRoc 我看目前这个项目之所以会target netcoreapp 似乎只是为了解决 版本号的问题,但实际上只需要 用 较低的版本 target .netstarndard 2.0 似乎不会产生问题,除非用到了某些破坏性的变更, hangfire 都是只依赖 2.0.0 的库 也就是(>=2.0.0), 这样项目如果是 2.2.0 会使用2.2.0 的包

@roc916
Copy link
Contributor

roc916 commented Jul 20, 2019

@Caskia 这个库依赖 asp.net core 也就是 Microsoft.AspNetCore.Http , 尽管可以变成 .net standard 类库, 但是仍然无法在 Xamarin 等 asp.net core 无法运行的环境中使用。

但是这个后端的形态并不介于是一个X86操作系统的运行环境并且是netcoreapp啊。可以是跑在arm上的各种os

Target netcoreapp 还是 netstandard , 不会限制CPU的 architecture , 事实上 .net core 支持 arm平台, 唯独限制的是 在 .net framework 或者 mono 上运行 asp.net core 的这种情况, 只能fork 自己编译。

目前在.net 平台有2个比较大的 框架做web, 一个 是 System.Web 另外一个是 Microsoft.AspNetCore , 很多人总是把这两个混淆成 .net framework 和 .net core , 实际上根本不是一回事, 他们只是建立在.net 平台上面的两个框架而已, 只是 前者只支持 .net framework 和 mono, 后者因为目标是 .net standard 所以所有的运行时都能运行。

@EssenRoc 我看目前这个项目之所以会target netcoreapp 似乎只是为了解决 版本号的问题,但实际上只需要 用 较低的版本 target .netstarndard 2.0 似乎不会产生问题,除非用到了某些破坏性的变更, hangfire 都是只依赖 2.0.0 的库 也就是(>=2.0.0), 这样项目如果是 2.2.0 会使用2.2.0 的包

嗯,你说的两点完全就是目前遇到的状况。

roc916 pushed a commit that referenced this issue Jul 20, 2019
@Caskia
Copy link

Caskia commented Jul 20, 2019

@John0King

这个库依赖 asp.net core 也就是 Microsoft.AspNetCore.Http , 尽管可以变成 .net standard 类库, 但是仍然无法在 Xamarin 等 asp.net core 无法运行的环境中使用。

  1. 我不太明白你说的无法在Xamarin中运行是什么意思?https://docs.microsoft.com/en-us/xamarin/xamarin-forms/internals/net-standard
  2. 关于HTTP的内容可以使用Microsoft.Extensions.Http进行抽象,可以参考https://github.com/reactiveui/refit

@John0King
Copy link
Author

@Caskia 支付有2部分, 一部分是通用的, 也就是 HttpClient 跟支付服务上游沟通的部分, 另一部分是不通用的(可以进行抽象, 但总归不如直接获取原生对象方便),这一部分就是 HttpContext.Request.Form("orderId") 等,支付服务器推送过来的时候的处理(验证消息啥的)
我说的无法在Xamarin中运行, 就是说的这个第二部分, 再有就是 System.Web.HttpContextMicrosoft.AspNetCore.Http.HttpContext

@roc916
Copy link
Contributor

roc916 commented Jul 20, 2019

@Caskia 其实我到目前为止,还是不了解你的真实需求是什么。

@roc916
Copy link
Contributor

roc916 commented Jul 20, 2019

目前分支 dev-netstandard2_0 应该可以跑起来了.

@Caskia
Copy link

Caskia commented Jul 20, 2019

@EssenRoc
@John0King
我需要用到的只是一部分请求三方支付的接口,比如下单,查询订单信息,退单。而不需要去处理三方服务的回调。

举个例子,我可以控制一批手机作为后台服务去帮我下单,而回调处理我单独部署在一台有公网地址的主机上。

@Caskia
Copy link

Caskia commented Jul 20, 2019

@EssenRoc
我只是提个建议可以把对于请求处理的逻辑单独独立出来,毕竟这部分与aspnetcore进行了耦合。有的用户只是想用这个库调用下三方的API而已,并不包含完整的支付流程。

@roc916
Copy link
Contributor

roc916 commented Jul 20, 2019

实际上这是你对payment的误解,paymnet对于aspnetcore本身是没什么依赖的,完全可以在控制台程序(NET Core 2.1\2.2)上跑
例如:

using System;
using Essensoft.AspNetCore.Payment.WeChatPay;
using Essensoft.AspNetCore.Payment.WeChatPay.Request;
using Microsoft.Extensions.DependencyInjection;

namespace ConsoleApp1
{
    class Program
    {
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            var serviceCollection = new ServiceCollection();
            serviceCollection.AddWeChatPay();
            var services = serviceCollection.BuildServiceProvider();

            var client = services.GetService<IWeChatPayClient>();
            var request = new WeChatPayUnifiedOrderRequest
            {
                Body = "微信扫码支付测试",
                OutTradeNo = DateTime.Now.ToString("yyyyMMddHHmmssfff"),
                TotalFee = 1,
                SpBillCreateIp = "127.0.0.1",
                NotifyUrl = "http://*/notify/wechatpay/unifiedorder",
                TradeType = "NATIVE"
            };

            var options = new WeChatPayOptions
            {
                AppId = "",
                MchId = "",
                Key = "",
                Certificate = "",
                RsaPublicKey = "",
            };

            var resp = await client.ExecuteAsync(request, options);

            Console.WriteLine(resp.ResponseBody);
            Console.Read();
        }
    }
}

@Caskia
Copy link

Caskia commented Jul 20, 2019

因为刚才你们提到为了处理HttpContext中的Request用到aspnetcore。所以我说可以用Microsoft.Extensions.Http.
因为我是Xamarin无法引用netcoreapp2.2的库,只能使用.netstandard.

你这个例子是netcoreapp应用程序
image

@roc916
Copy link
Contributor

roc916 commented Jul 20, 2019

@John0King 说的HttpContext 是指接受通知回调部分.

@roc916 roc916 closed this as completed Jul 25, 2019
@roc916
Copy link
Contributor

roc916 commented Jul 25, 2019

2.4.3 已支持,如果遇到什么问题 可以重新打开继续讨论

roc916 added a commit that referenced this issue Dec 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants