【发布时间】:2020-11-30 00:25:50
【问题描述】:
我计划在 asp.net core web api 3.1 应用程序中创建一个通用的实用程序类,用于对字符串进行 base 64 编码和解码。
以下是我的方法
namespace CoreAPI.Utilities
{
public class Base64
{
public static string Base64Encode(string plainText)
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}
public static string Base64Decode(string base64EncodedData)
{
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}
}
}
并从我的控制器中调用相同的方法,如下所示
[HttpGet("api/clients/{clientid}")]
public ClientData GetClientDetails(int clientid)
{
string encodedclientdata="TestData" //actually fetched from DB
string Decodedvalue = Base64.Base64Encode(encodedclientdata);
//added other logic to return clientData object
}
现在我怀疑创建静态实用程序会在用户并行访问 api 时产生任何问题?这会产生任何并发问题吗?在 web api / web 应用程序中创建静态类是最佳实践?
如果这是一种错误的方法,我该如何在 .net core web api/web 应用程序中添加通用实用程序方法?请指导我!
【问题讨论】:
-
关于并发:你的方法是无状态的,没有副作用,所以不会有任何问题。
-
@PeterBons : 使用静态方法是个好习惯吗?
-
像这样的静态类没有任何问题,所以是的,一般来说,这是一种很好的做法(假设函数不涉及任何状态信息)。静态的问题在于一切都是静态的(类、方法、成员变量、属性)。
-
互联网上有数千篇关于
static及其工作原理的文章。我建议您至少阅读其中之一。微软自己的 MSDN 是一个不错的起点。 -
一般来说。我不会使用关键字作为类的名称。它会导致未来的进口问题。就我个人而言,我将静态用于“功能性”例程(一些输入,一些输出没有依赖关系)......你不想让静态疯狂...... ....您需要了解 IoC/DI 原则以及静态如何对 IoC/DI 产生不利影响。请不要静态发疯............我不得不重构代码库,一切都是扩展方法。
标签: c# .net asp.net-core asp.net-web-api asp.net-core-webapi