我创建了一个在 Azure Function Apps 的帮助下实现的演示微服务应用程序。为了分离关注点,我创建了 API 层、业务层和数据层。
API层,即功能应用程序,调用业务层实现业务逻辑,而数据层实现存储和检索数据的逻辑。
经过深思熟虑,我决定在我的演示中使用基于查询的 API 版本控制。
我的问题是,
组织代码以促进这一点的最佳方法是什么?除了使用不同的命名空间/存储库之外,还有其他方法来组织我的代码以适应不同的版本吗?
到目前为止,我已经为每个版本创建了单独的命名空间,但这会造成大量代码重复。另外,在我的一些朋友对其进行审查后,他们提出了这样的担忧:如果使用单独的命名空间,我将迫使遗留系统更改对新命名空间的引用(如果它们需要更新),这是不建议的。
任何帮助,将不胜感激。
我事先在各种来源中搜索了我的问题,但答案并没有为我提供解决方案。
我使用此处介绍的方式在 .net core 2.2 项目中实现了基于 Url 的 Web api 版本控制。我用于版本控制的版本是最新的 Microsoft.AspNetCore.Mvc.Versioning 3.1.2。我还尝试从以下来源了解它是如何工作的:source1、source2、source3、source4。
我在名为 Initial 的文件夹中有一个带有 GET 方法的 ValueController,在名为 New 的文件夹中有一个 Value2Controller。这两个文件夹都是“Controllers”文件夹的子文件夹。
结构如下:
ValueController中的路由是
[Route("api/v{version:apiVersion}/[controller]")]
在 Value2Controller 中是:
[Route("api/v{version:apiVersion}/value")]
我还在options.EnableEndpointRouting = false;Startup.cs 中进行了设置,并尝试调用 api/v1/value 或 api/v2/value。两次我都收到错误:多个操作匹配。它无法区分两个控制器的操作。
我尝试services.AddApiVersioning();完全不使用任何选项并删除 AddVersionedApiExplorer。这是行不通的。唯一有效的方法是放入
[Route("api/v{version:apiVersion}/[controller]")]
两个控制器并进行以下 api 调用:
api/v1/value和api/v2/value2。
我的startup.cs中的配置如下:
services.AddApiVersioning(options =>
{
options.ReportApiVersions = true;
options.AssumeDefaultVersionWhenUnspecified = true;
options.DefaultApiVersion = new ApiVersion(1, 0);
options.ApiVersionReader = new UrlSegmentApiVersionReader();
options.UseApiBehavior = …Run Code Online (Sandbox Code Playgroud) 我们的团队正在处理使用 deps.edn 的 Clojure 项目
我们习惯于 NPM 项目,将版本号存储在 package.json 文件中。看来 Leiningen 用户之前可能已将版本号存储在 project.clj 文件中。是否有针对 Clojure 项目版本控制的社区范围惯例?我看到人们和官方文档提到使用 Git 标签,但想知道使用 deps.edn 的开发人员是否有某种流行的方式将版本号存储在文件中。
谢谢你!
我想知道是否有任何自动方法来提升xcode项目的版本号?
我正在使用带有Ruby的Jeweler,它有非常好的命令行选项来提升项目的版本号.选项是主要,次要或补丁.XXX
是否有任何类似的(半)自动方式来破坏xcode中的版本号?我知道的唯一方法是手动编辑主plist.如果有任何记录版本或与版本控制集成甚至可能会很棒.
谢谢
一个.net 3.5 c#项目可以引用一个.net 4.0程序集并用它编译吗?运行时间怎么样?用4.0编译/运行4.0怎么样?
编辑:特别是,我有一个第三方.net程序集.它有扩展点:我在app.config中注册我的dll并且它调用了我(可能通过反射).我可以在.net 4.0中实现我的dll吗?什么时候选择CLR版本,当主exe出现或者dll需要某个版本的时候?
我正在开发一个ASP.NET服务器控件,它使用jQuery作为一些客户端逻辑.我已将jQuery文件嵌入控件中作为资源.
我不想将使用控件的应用程序限制为特定版本的jQuery,我想继续使用我嵌入的jQuery版本.
我知道noconflict方法,但我看到的问题是我无法控制页面上脚本标签的顺序.
如果用户的jQuery版本包含在我之前,那么在我可以调用noconflict之前,我最终会覆盖它.
请帮忙
我有几个我创建的VB6 exe/dll,当我右键单击该文件并获得它所说的属性时:
File version - 4.2.0.9Product Version - 4.02.0009是否有可能改变File Version?我希望这样说4.2.9.123
我想以编程方式更改此项,因此我可以在哪里找到这些值的文件?他们在特定的位置吗?
如果我更改内部版本,这是否会导致向COM注册exe/dll的问题?
(如果有人有代码解决方案,我选择的语言是VB.NET)
我的问题很简单.我在ftp服务器上有一个exe文件,版本为1.0.0.0.我想下载它,但仅限于版本大于某个预设值.(所有这些都在C#桌面应用程序中).
我在网上看到,如果不首先下载文件,就无法通过FTP告诉文件的版本.它是否正确?(我宁愿不这样做,因为文件相当大,不需要在大多数时间下载).
如果是,我看到的推荐解决方案是在FTP目录中创建一个包含目标exe文件版本的文本文件.显然它不会很大,所以可以快速下载.如果我不能直接获取exe版本,这是最好的解决方案吗?
谢谢您的帮助!
我需要知道,当用户从市场(谷歌播放)安装我的新更新时,是否有第一次在我的应用程序中运行一段代码的方法?
每次上传新版本的应用时,我都需要运行一次代码吗?
谢谢阅读.
我在网上看了一遍,似乎找不到将版本号放在swf文件中的方法.我们需要知道我们在不同机器上使用哪个版本的swf文件,所以我们想过如果swf目录中不存在包含swf版本号的文件,可能会写一个文件.我们没有使用Flex和as3,所以由于我们无法写入磁盘而无法工作.所以我一直在环顾四周,无法找到我们指定swf文件版本的地方,如"14.06.30".
有没有办法我们可以设置我们的swf文件的版本?
我们已经考虑使用按键来显示版本号,但是我们不想这样做,因为swf可以加载其他swf,其中按键可能意味着其他东西.这将是最后的手段.
versioning ×10
asp.net ×2
.net ×1
.net-3.5 ×1
.net-4.0 ×1
android ×1
apache-flex ×1
api ×1
asp.net-core ×1
c# ×1
clojure ×1
conflict ×1
deps-edn ×1
flash ×1
ftp ×1
google-play ×1
jquery ×1
leiningen ×1
vb.net ×1
vb6 ×1
version ×1
xcode ×1
xcodebuild ×1