问题标签 [common-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
597 浏览

c# - 获取应用程序名称/ID 的最佳实践

公共库了解它所在的上下文(即调用应用程序)的最佳方式是什么?我在一个非常受控的企业环境中......有没有比读取配置文件中的设置更好的方法让库知道从哪个应用程序调用它?你用什么来做这种事情?

//the rest of the story
我在一家财富 500 强制造公司的 Intranet 团队工作。我创建了一个公共库,我们所有的新 .Net 应用程序都将使用它。它查询公共数据库以获取有关应用程序的信息以及与问题无关的许多其他内容。可以想象,公共库需要知道调用它的应用程序。我可以强制每个应用程序在某个静态类或其他东西上设置一个属性,但我想让它在幕后更深入一点。目前,它要求开发人员在 app.config 或 web.config 中放置一个设置,其键为 ApplicationName,值为 - 你猜对了 - 应用程序名称(对我们来说,这是一个唯一不变的 id)。然后它使用当前它用来ConfigurationManager.AppSettings["ApplicationName"]将其拉入。

0 投票
5 回答
190 浏览

security - 如何验证应用程序是它所说的应用程序?

情况如下:我们有一个通用库,它可以从我们设置的中央配置存储中检索数据库连接详细信息。每个应用程序在使用数据库时都使用这个库。

基本上,它将调用一个存储过程并说“我是 {xyz} 应用程序,我需要连接 o”,它将返回该应用程序主数据库(服务器、实例、数据库、用户和密码)的连接详细信息。

如何将其锁定,以便只有应用程序 {xyz} 可以检索 {xyz} 数据库的密码(每个应用程序都有一个数据库详细信息列表......我只需要保护密码)?

0 投票
1 回答
238 浏览

c# - 公共库和 System.Configuration 命名空间

这是设置:

我们有一个我开发的通用库,所有开发人员都可以在任何新应用程序或对旧应用程序的微不足道的更改上使用它。当我们进行更改时,如果 API 没有损坏,我们会提高次要版本号(2.0 到 2.1),但如果我们损坏 API,那么我们会提高主要版本号(2.1 到 3.0)。为每个新版本构建了一个安装程序包,并将其部署到服务器上,供开发人员在需要时进行安装。安装程序将程序集放在服务器上的 GAC 中,并修改 machine.config 以包含一些配置信息。

最新版本(4.0)使用 System.Configuration 命名空间相当多(自定义配置部分和配置部分组),但有一个我没有想到的问题,我不太确定如何解决:升级版本时,我们与配置部分有版本冲突。

例如,在 machine.config 文件中,它放入用于指定应用程序名称的配置部分信息。它看起来像这样:

所以现在我们有了 4.1 版,这个部分的定义中断了,因为应用程序正在使用 4.1 版的 dll 并且机器配置告诉它加载 4.0 版的 dll。

处理这个问题的最佳方法是什么?您必须记住,解决关键问题并使用发布者策略文件将旧版本重定向到较新的次要版本的可能性是存在的,因此解决方案必须考虑到这一点(除非我们决定不允许这样做,并且仅对关键问题进行就地修复)

想法?意见?建议?

0 投票
1 回答
2118 浏览

c# - WCF - 常见库枚举问题 - C#

我有一个公共库,其中包含通过 DLL 在 WCF 服务和客户端之间共享的枚举。是的,我知道这样做的更好方法是从我的公共库中创建一个服务——这是为了以后。

我对我的公共库进行了更改,在枚举中添加了另一个字段。编译后,我更新了 WCF 服务和 Web 客户端中的 DLL。

最初,我收到错误:

如果类型具有 DataContractAttribute 属性,请确保存在必要的枚举值并使用 EnumMemberAttribute 属性进行标记。

通过从客户端上的服务引用配置中删除检查“在引用的程序集中重用类型”,这很快得到了纠正。

但是,现在我收到一个错误,指的是我添加的新枚举值:

无效的枚举值“TestDataReceived_OK_NoDataWritten”无法反序列化为类型...

所以这让我相信那里有两个库版本,但我不确定如何解决这个问题。

我没有在我的服务界面中设置任何类型的 [DataContract] 区域。如果需要,一些代码示例会很有用。

谢谢你。

0 投票
1 回答
60 浏览

version-control - 在开发过程中是否应该修复外部依赖关系?

我和我的团队正在开展几个共同依赖于一些公共库的项目。这些通用库目前与项目一起使用 svn:externals 检出。

问题是,项目的主干应该跟踪每个库的 HEAD,还是链接到特定的修订?

问题库由公司中的其他人非常积极地开发,并且偶尔会进行签入,从而破坏依赖于库的项目。即使我们自己没有更改任何内容,这也会在我们的 CI 上显示为红色斑点。一些人争辩说,“这就是我们拥有 CI 服务器的原因;这样我们就知道什么时候落后了”,而另一些人则争辩说,“我们希望看到所有变化是如何整合的,处于最前沿。”

任何人都可以评论最佳实践吗?我有我的意见,我暂时保留。

0 投票
2 回答
1724 浏览

unit-testing - 来自 commonlibnet 的 FakeItEasy 和 FluentValidation 的假验证码

我正在使用来自 commonlibrary (http://commonlibrarynet.codeplex.com/) 的 Captcha 类。我的代码可以正常工作,但现在我正在尝试编写单元测试。

我的验证规则是:

在我的设置代码中,我尝试执行以下操作:

但我收到以下错误消息:

所以问题实际上是如何使用 FakeItEasy 伪造静态方法。

TIA,

大卫

0 投票
1 回答
294 浏览

android - 图书馆项目和资源

我开发了一个 Android 库项目,其中包含 2 个其他项目所需的所有常见代码和资源。问题是,在一类公共库中,如果它分别用于项目 A 或项目 B,我需要加载不同的资源。

如果我键入 R.string.myId 它找不到资源,因为它不在 CommonLib 上,但它是在项目 A 和 B 上定义的。

我该如何解决这个问题?在这类项目上获得一种“多态性”的正确方法是什么?也许我在公共库中放了一个代码,例如

提前致谢。

0 投票
1 回答
47 浏览

node.js - 如何在节点中将函数作为回调函数传递

我在节点中创建的公共库中创建了以下函数来创建路由。

我正在导入这个库并在我的另一个节点项目中调用这个函数,如下所示。

但我收到错误,因为找不到 req 和 resp logger.registerRoute("GET","/route/testapi",testapi( req , resp ))

如何将此函数作为回调函数传递给这个通用库函数?