問題タブ [vendor-neutrality]
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.
.net - IdbConnectionとSqlConnection
アプリを作成するときは、System.Dataインターフェイス(IDbConnection、IDbCommand、IDataReader、IDbDataParameterなど)を使用します。これは、ベンダーの依存関係を減らすために行います。簡単なテストアプリをやっていない限り、相談するときは倫理的なことのように思えます。
ただし、表示されるすべてのコードは、System.Data.SqlClient名前空間クラスまたは他のベンダー固有のクラスを使用しているようです。雑誌や本では、これをMicrosoftの影響力と、SQLServerに対してのみプログラムするためのマーケティングスピンに簡単に当てはめることができます。しかし、私が見るほとんどすべての.NETコードがSQLServer固有のクラスを使用しているように見えます。
ベンダー固有のクラスにはより多くの機能があることに気付きました。たとえば、SqlCommandオブジェクトにパラメーターを追加するのは1つのメソッドですが、IDbCommandにパラメーターを追加するのは4行以上のコードです。しかし、再び; これらの制限のために少しヘルパークラスを書くのはとても簡単です。
また、SQLServerが現在のターゲットクライアントである場合のインターフェイスに対するプログラミングは、すぐには必要ないため、過剰に設計されているのではないかと思いました。しかし、インターフェイスに対するプログラミングのコストが非常に低いためだとは思いませんが、ベンダーの依存関係を減らすことで大きなメリットが得られます。
ベンダー固有のデータクラスまたはインターフェイスを使用していますか?
編集:以下の答えのいくつかを要約し、それらを読んでいる間に私が持っていたいくつかの考えを投げ入れます。
ベンダーの中立性のためにインターフェースを使用する際に考えられる落とし穴:
- SELECTステートメントに埋め込まれたベンダー固有のキーワード(私のins、upd、delはすべてprocにあるので、問題ありません)
- データベースを直接バインドすると、おそらく問題が発生します。
- 接続のインスタンス化が一元化されていない限り、とにかくベンダー固有のクラスを呼び出す必要があります。
インターフェースを使用する前向きな理由:
- 私の経験では、(行使されていなくても)別のベンダーに移動する能力は、常に顧客から高く評価されてきました。
- 再利用可能なコードライブラリのインターフェイスを使用する
.net - .net : DataSet と TableAdapters はデータベースとベンダーに依存していませんか?
構築しているアプリケーションは、データベースに依存しない必要があります。特に、SQL Server、Oracle、および MySQL と連携できるようにする必要があります。今後、他の DB ベンダーがリストに追加される可能性があります。もちろん、どの DB を使用する場合でもスキーマは同じです。
インターフェイスを実証するためのプロトタイプを構築するために、スキーマを SQL Server DB にロードし、そのデータベースの DataSet と TableAdapter を生成しました。データセットはデータベースの特定のインスタンスによって生成されたので、生成された DataSet と TableAdapter はベンダーに依存していないと思われます。さらに、別の SQL Server DB インスタンスに使用できるかどうかさえわかりません。
私の質問は次のとおりです。同じ自動生成された DataSet と TableAdapter を異なるデータベース (およびおそらくベンダー) で使用する方法はありますか?
乾杯、
マルコス
c# - .Net: ベンダーに依存しないデータセット、テーブルアダプター、バインディングの作成方法 (DB は実行時に決定)
プロトタイプが SQL Server (厳密に型指定されたデータセット) で作成された C# Windows フォーム アプリケーションがあります。最終バージョンでは、アプリケーションは SQL Server、MySQL、または Oracle で動作できる必要があります。
今、プロトタイプからどの部品を再利用できるかを考えています。1. データセット (入力済み) ? 2. テーブルアダプター? (おそらくそうではなく、SQL Server 固有の構文が含まれています) 3. DataGridView へのバインド
最も重要なことは、これらすべてを再実装する必要がある場合、設計時にこれを行う方法はありますか? または、1.型指定されていないデータセットをプログラムで作成する必要がありますか? 2. データ アダプター (またはテーブル アダプター) をプログラムで作成する必要がありますか? はいの場合、どちらですか?3.インターフェースのデータグリッドビューへのバインディングをプログラムで作成する必要がありますか?
おそらく無関係です: 既存のデータベース スキーマからエンティティ モデル (私の知る限り、データベースの独立性を提供します) を作成する場合、これを何らかの方法で使用して、データグリッドビューへのバインディングを作成できますか?
ありがとうございました!
では、Bindings と dataGridViews、および実装したいくつかの追加ロジックを保持するには、生成されたすべての TableAdapter を破棄して手動で記述する必要がありますか? それらを破棄する場合、代わりに DataAdapters を使用する必要がありますか?
これは「本による」アプローチですか?誰かがこのようなことをしましたか?
より一般的には、複数のデータベースで動作するフォーム アプリケーションを作成する必要がある場合、次のようにしますか?どのように?) VS gui C.を介して設計時にそれらをバインドします.他の方法???
アップデート:
では、Bindings と dataGridViews、および実装したいくつかの追加ロジックを保持するには、生成されたすべての TableAdapter を破棄して手動で記述する必要がありますか? それらを破棄する場合、代わりに DataAdapters を使用する必要がありますか?
これは「本による」アプローチですか?誰かがこのようなことをしましたか?
より一般的には、複数のデータベースで動作するフォーム アプリケーションを作成する必要がある場合、次のようにしますか?どのように?) VS gui C.を介して設計時にそれらをバインドします.他の方法???
sql - ベンダーニュートラル SQL
現在、さまざまなソフトウェア構成を持つ複数の異なるサーバーにインストールできる Web アプリケーションのプロジェクトに取り組んでいます。ユーザーがさまざまな SQL サーバーをインストールできるようにすることで、アプリケーションを可能な限り柔軟にしたいと考えています。問題は、2 つのサーバー ベンダーが使用する SQL 構文が一致しないことです。簡単な例として、MS SQL と MySQL の同じ SELECT ステートメントを次に示します。
MS SQL -SELECT TOP 1 * FROM MyTable ORDER BY DateCreated DESC
MySQL -SELECT * FROM MyTable ORDER BY DateCreated DESC LIMIT 1
さまざまなベンダーのステートメント作成を抽象化する標準的な方法はありますか? この問題について説明しているオンライン リソースや書籍はありますか? 私が役に立つと思うヒントやスマートアレックの発言はありますか?
詳細情報: Windows サーバー上で動作するバニラ ASP でアプリケーションを作成しています。
ありがとう、スパラ
sql - データベースソリューションを整理/構築する別の方法を提案する
Visual Studio 2010を使用していますが、これはVS2003で最初に考案されました。
私は私のチームに最高の提案を転送します。現在の設定ではほとんど嘔吐します。これは、.sqlファイルを含むほとんどのプロジェクトでのC#ソリューションです。Microsoft、Oracle、Sybaseをサポートしているため、Cプリプロセッサとよく似た自作のプリプロセッサですが、そのyacc
ようなツールを使用せずに自作のC#プログラムによって置換が実行される点が異なります。#ifdefs
条件付きマクロ定義に使用されます。そうです-マクロはこれを行う方法です。マクロは別のマクロに拡張できますが、最終的には終了するはずです。マクロのみが#ifdef
含まれています。SQLのようなコードの残りの部分は、これらのマクロを使用するだけです。
さて、さまざまな構成:Debug, MNDebug, MNRelease, Release, SQL_APPLY_ALL, SQL_APPLY_MSFT, SQL_APPLY_ORACLE, SQL_APPLY_SYBASE, SQL_BUILD_OUTPUT_ALL, SQL_COMPILE
、およびさらに2つ。
また:Any CPU, Mixed Platforms, Win32
。
私を悩ませているのは、正しく構成する必要があることと、構成から適切なものを選択すること、12 x 3 = 36
およびデータベースのタイプ(config、main、またはgateway)に応じてデータベース名を置き換える必要があることです。構成をDebug、Release、およびSQL_APPLYだけに減らす必要があると考えています。また、0、1、2を使用するのは80年代のようです...最後に、3種類のベンダー向けに3種類のデータベースを構築するかどうかの意図は、次のようなチックタックボードだけで構成する必要があると思います。
この場合、MSFT + CONFIG、すべてのSYBASE、およびすべてのGATEWAYをビルドすることを意味します。
それでも、テキストファイルとプリプロセッサおよび多くの構成を使用する全体的なものは、信じられないほど不格好なようです。今は2010年であり、そこにいる誰かが非常にクリーンで創造的なツール/ソリューションを持っているはずです。唯一の利点は、既存のマクロのコレクションが十分にテストされていることです。
複数のベンダーで機能するSQLを作成する必要があったことはありますか?どうやってやったの?
SqlVars.txt(30人のユーザー全員がテンプレートのコピーを作成し、ニーズに合わせてこれを変更します):
ruby - CSS3クロスブラウザ互換性のためのSASSプラグイン?
border-radius
SASS スタイルシートを取り、ニュートラルなプロパティ (例: ) を見つけ、それに対するすべてのベンダー固有のプロパティ (例:-webkit-border-radius
など) を自動的に出力する SASS 拡張機能はありますか?
すべての mixin を手動で作成したり、コードを手動で記述したりしたくはありません。そのような拡張機能があるに違いないと確信していますが、見つかりません。ヘルプ?
c# - ORMを使用せずにc#でベンダーに依存しないdalを作成する最良の方法は何ですか?
現在、2 つのデータベース プロバイダーを含むプロジェクトがあります。
- SqlClient
- オレデブ
これらのプロバイダーを処理する DAL を作成する必要があります。私はこのようなインターフェースを作成することを考えていました:
そして、それを個別に実装します(単純ですが、これは間違った方法です)
次のような投稿を読みました。
.Net: ベンダーに依存しないデータセット、Tableadapters、バインディング (DB は実行時に決定)の作成方法 (良い例ですが、例はありません)
データ アクセス レイヤー (C#) の作成(非常に優れていますが、テーブル アダプターはベンダーに依存します)
この機能を備えた DAL を作成したいと思います。
- 型指定されたデータ テーブルの使用 (ビジュアル スタジオ デザイナーを使用)
- ベンダーに依存しないデータ アダプターの使用 (手動で作成)
- ORMではない
これらの機能を備えた単純な DAL を作成するにはどうすればよいですか?
google-app-engine - AppEngine なしで NDB を使用する
Python NDB API を使用して AppEngine に依存しないアプリケーションを作成することは可能ですか? AE 上のデータベースでいくつかの基本的なスクリプトをホストする必要がありますが、サービスにベンダー ロックインしたくありません。