問題タブ [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.
c# - アプリ名/ID を取得するためのベスト プラクティス
共通ライブラリがどのコンテキスト (呼び出し元アプリとも呼ばれる) にあるのかを知るための最良の方法は何ですか? 私は非常に管理されたエンタープライズ環境にいます...構成ファイルの設定を読み取るよりも、どのアプリケーションから呼び出されているかをライブラリが知るためのより良い方法はありますか? このタイプのものには何を使用しますか?
//the rest of the story
私は Fortune 500 の製造会社のイントラネット チームで働いています。すべての新しい .Net アプリケーションが利用する共通ライブラリを作成しました。アプリケーションに関する情報と、質問に関係のない他の多くの情報について、共通のデータベースにクエリを実行します。ご想像のとおり、共通ライブラリーは、それを呼び出しているアプリケーションを認識する必要があります。すべてのアプリケーションで静的クラスなどにプロパティを設定するように強制することもできますが、その代わりに、もう少し舞台裏でそれを行いたいと考えました。現在、開発者は app.config または web.config に ApplicationName のキーと - ご想像のとおり - アプリケーション名 (私たちにとっては変更されない一意の ID) の値を設定する必要があります。次に、Currently it usesConfigurationManager.AppSettings["ApplicationName"]
を使用してこれを取り込みます。
security - アプリケーションが表示されているアプリケーションであることを確認する方法は?
状況は次のとおりです。セットアップした中央構成ストアからデータベース接続の詳細を取得できる共通ライブラリがあります。各アプリケーションは、データベースを操作するときにこのライブラリを使用します。
基本的に、ストアド プロシージャを呼び出し、「私は {xyz} アプリケーションです。接続する必要があります」と伝え、そのアプリケーションのプライマリ データベース (サーバー、インスタンス、データベース、ユーザー、およびパスワード) の接続の詳細を返します。
アプリケーション {xyz} のみが {xyz} データベースのパスワードを取得できるようにロックするにはどうすればよいでしょうか (アプリケーションごとにデータベースの詳細のリストがあります... パスワードを保護する必要があるだけです)。
c# - 共通ライブラリと System.Configuration 名前空間
セットアップは次のとおりです。
私が開発した共通のライブラリがあります。これは、すべての開発者が新しいアプリケーションで使用したり、古いアプリケーションに些細な変更を加えたりする場合に使用されます。変更を行う場合、API が壊れていない場合はマイナー バージョン番号 (2.0 から 2.1) を上げますが、API が壊れている場合はメジャー バージョン番号 (2.1 から 3.0) を上げます。すべての新しいバージョン用に構築されたインストーラー パッケージがあり、サーバーに展開され、開発者が必要に応じてインストールできるようになります。インストーラーはアセンブリをサーバー上の GAC に配置し、machine.config を変更して構成情報を含めます。
最新バージョン (4.0) では、System.Configuration 名前空間 (カスタム構成セクションと構成セクション グループ) がかなり頻繁に使用されますが、思いもよらなかった問題があり、解決方法がよくわかりません: バージョンをアップグレードするとき、構成セクションとバージョンの衝突があります。
たとえば、machine.config ファイルでは、config セクションにアプリケーション名を指定するための情報を入れます。次のようになります。
バージョン 4.1 になったので、アプリケーションがバージョン 4.1 dll を使用しており、マシン構成がバージョン 4.0 dll をロードするように指示しているため、このセクション定義は壊れています。
この問題に対処する最善の方法は何ですか? 重要な問題を修正し、発行元ポリシー ファイルを使用して古いバージョンを新しいマイナー バージョンにリダイレクトする可能性があることを覚えておく必要があります。重大な問題の修正をインプレースで行う)
考え?意見?アドバイス?
c# - WCF - 一般的なライブラリ列挙の問題 - C#
DLL を使用して WCF サービスとクライアントの間で共有される列挙型を含む共通ライブラリがあります。はい、これを行うためのより良い方法は、共通ライブラリからサービスを作成することであることを知っています-それは後で説明します。
列挙型に別のフィールドを追加して、共通ライブラリに変更を加えました。コンパイル後、WCF サービスと Web クライアントの両方で DLL を更新しました。
最初は、次のエラーが発生していました。
型に DataContractAttribute 属性がある場合は、必要な列挙値が存在し、EnumMemberAttribute 属性でマークされていることを確認してください。
これは、クライアントのサービス参照構成から「参照されたアセンブリで型を再利用する」チェックを削除することですぐに修正されました。
ただし、追加した新しい列挙値を参照するエラーが発生しています。
無効な列挙値 'TestDataReceived_OK_NoDataWritten' を型に逆シリアル化できません...
これにより、2 つのライブラリ バージョンが存在すると思われますが、これを解決する方法がわかりません。
サービス インターフェイスに [DataContract] エリアを設定していません。必要に応じて、いくつかのコード サンプルが役立ちます。
ありがとうございました。
version-control - 開発中に外部依存関係を修正する必要がありますか?
私のチームと私は、いくつかの一般的なライブラリに集合的に依存するいくつかのプロジェクトに取り組んでいます。これらの一般的なライブラリは現在、svn:externalsを使用してプロジェクトと一緒にチェックアウトされています。
問題は、プロジェクトのトランクが各ライブラリのHEADを追跡する必要があるのか、それとも特定のリビジョンにリンクする必要があるのかということです。
課題ライブラリは社内の他の人によって非常に積極的に開発されており、ライブラリによってはプロジェクトを中断するチェックインが行われることがあります。これは、自分で何も変更していなくても、CIに赤いブロブとして表示されます。一部の人々は「それが私たちがCIサーバーを持っている理由です。私たちが遅れているときを知るために」と主張し、他の人々は「すべての変更が最先端でどのように統合されるかを見たい」と主張します。
誰かがベストプラクティスについてコメントできますか?私の意見はありますが、今のところ予約しておきます。
unit-testing - FakeItEasyとFluentValidationを使用したcommonlibnetからの偽のキャプチャ
commonlibrary(http://commonlibrarynet.codeplex.com/)のCaptchaクラスを使用しています。私のコードはすべて機能しますが、今は単体テストを作成しようとしています。
私の検証ルールは次のとおりです。
私のセットアップコードでは、次のことを試みました。
しかし、次のエラーメッセージが表示されます。
したがって、問題は、FakeItEasyを使用して静的メソッドを偽造する方法です。
TIA、
デビッド
android - 図書館プロジェクトとリソース
私は、他の 2 つのプロジェクトに必要なすべての共通コードとリソースを含む Android ライブラリ プロジェクトを開発しました。問題は、共通ライブラリのクラスで、プロジェクト A またはプロジェクト B でそれぞれ使用される場合、別のリソースをロードする必要があることです。
R.string.myId と入力すると、リソースは CommonLib にないため見つかりませんが、プロジェクト A と B で定義されています。
この問題を解決するにはどうすればよいですか? このタイプのプロジェクトで一種の「ポリモーフィズム」を取得する正しい方法は何ですか? たぶん、共通ライブラリに次のようなコードを入れます
前もって感謝します。