問題タブ [dynamic]
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 - .NET で、マルチテナント SaaS アプリのテナントがモデルのエンティティにプロパティを任意に追加できるようにするには、どのようにアプローチしますか?
そのため、サービスとして実行するマルチテナント システムを構築しています。私たちはゼロから始めています。私たちは DDD に従っています。ドメインには (現時点で) ~20 個のエンティティがあり、後でさらに増える予定です。それは私たちによってホストされ、地理的に冗長であり (SQL クエリを除くすべての n+1 ;-))、柔軟な設計です (まあ、最後は私たち自身の要件であり、ビジネスではありません)。もちろん、必要に応じて簡単に変更できます)。私たちは .NET ベースで、バッキング ストアにリレーショナル データベースを使用します。オープンソースのツールやライブラリを使用することに (まったく) 反対しているわけではありません。
ビジネスに不可欠な機能の 1 つは、特定のエンティティがシステムのテナントによって拡張可能であることです。たとえば、クライアント A はエンティティ Foo に Title および Abstract プロパティを持たせたい場合がありますが、クライアント B はエンティティ Foo に Title Abstract ではなく Publish Date および Directed-By プロパティを持たせたい場合があります。
また、これを必要とするテナントのために複数の言語でデータをサポートする必要がある場合もあります。「静的」文字列と、エンティティにデータとして添付された文字列の両方。
そう。任意の数のフィールド (いくつかの共通のベースラインの上にあり、すべてのテナントが取得するこれらのエンティティに関する特定のものがあります)、クライアントによって定義可能です (データ型も定義できます)。データの翻訳の可能性 (エンティティを複製せずに、英語で 1 つのセットを設定せずに、フランス語で同じセットを設定せずに)。厳密に型指定された検索可能でクエリ可能なバッキング ストレージも (したがって、厳密に型指定され検索可能になる方法がない限り、XML フィールドに余分なものは入れられません)。高性能(ただし、二次的な要件として。機能は、必要に応じてハードウェアを購入するのに十分重要です)。
データ量?現在のシステムでは、「平均的な」クライアントには数百のエンティティがあり、「大きな」クライアントには数千のエンティティがあります。通常、要求はこれらのリストを 10 から 200 程度に絞り込んで表示します。最も一般的にやりたいことは、おそらく半ダースのエンティティ (新しいシステムでは拡張可能である必要があります) です。
その他のポイントは?各エンティティには、それを所有するテナントへの直接リンクがあります。
.NET ランドでこれを行うにはどうすればよいでしょうか。エンティティを IoC コンテナーに入れ、実行時にその場でまとめてグロブ化することが提案されていますが、それをリレーショナル データベースにどのようにマッピングすればよいでしょうか。
また、かなり前に Lucene.NET に関するAyende の投稿を読んだことも覚えていますが、これは良さそうですが、現時点では Lucene.NET や nHibernate を使用した経験はありません。(現在、ORM に Linq2Sql を使用する予定ですが、これをサポートするためにそれを変更する必要がある場合は、率直に言って、私は個人的に喜んでいます)。
Ayende からリンクされているこの Castle dev list スレッドを読みましたが、nHibernate には IUserType と呼ばれるものがあり、これが役立つようです。それを適用して、各テナントに適切な IoC を取得することができるのでしょうか? したがって、拡張可能エンティティごとにテナントごとに 1 つの IUserType を作成し、データ自体を SQL Server (最も可能性の高い RDBMS) 内の XML 列に格納します。
最後に、テナントごとのエンティティごとに DB テーブルを動的に変更することに関する 1 つの提案を読みましたが、これはかなり聞こえます... 正直、大変です! つまり、機能する可能性はありますが、これを行う機能をテナント (技術に精通していない可能性がある) に与えることは、それほど素晴らしいアイデアではないように思えます。管理者の従業員のみに制限できると思います...
c++ - C++ 動的クラス (動的ハック)
実行時にクラスにフィールド (以前は存在しなかったフィールド) を追加する方法はありますか? このスニペットのようなもの:
私はそれがどのように行われるか、それが醜いハックであろうとなかろうと気にしません。
別の例:このクラスを記述した XML ファイルがあるとします。
フィールド「field1」と「field2」をクラスに「追加」したい(クラスがすでに存在すると仮定)。これがクラスのコードだとしましょう:
実行時にクラスを作成したくありません。メンバー/フィールドを既存のものに追加したいだけです。
ありがとうございました !
dynamic - C#4 動的キーワード - なぜですか?
このスレッドへの多くの返信を読んだ後、それを嫌う人の多くが新しいキーワードの悪用の可能性を挙げていることがわかりました. 私の質問は、どのような虐待ですか?これがひどく悪用されて、人々がそれを激しく嫌うようになるのはどうしてでしょうか? 純粋主義だけですか?それとも、私が見ていない本当の落とし穴がありますか?
sharepoint - SharePoint Web パーツのハイパーリンク
私は SharePoint プロジェクトに取り組んでおり、カスタム Web パーツを介してユーザー コントロールを読み込むルートをたどりました。
クリックしたときにユーザー コントロールの特定の関数を呼び出すハイパーリンクを (データベースからのループで) 動的に生成する必要がある Web コントロールがいくつかあります。
独自の ASP.NET サイトを構築するときは、ハイパーリンクにパラメーターを追加し、ページの読み込みをチェックして、ハイパーリンクがクリックされたときに他のコードを実行する必要があるかどうかを確認します。
Web ページの URL の形成方法を制御していないため、これは SharePoint 環境内ではおそらくあまり信頼できないことに気付き始めています。
ハイパーリンクがクリックされていくつかの値が渡されたときにポストバックしたいのですが、これにアプローチする最善の方法がわかりません。
誰かが私を正しい方向に向けることができますか?
ありがとう。
email - SMTP リレーの制限
次の From アドレス形式のユーザーに通知が送信されるシステムをセットアップしました: user-{0}@aol.com ({0} を ID に置き換えます)
このようにして、最初にメッセージを送信したユーザーを追跡できます。この形式は、さまざまな理由で変更される可能性はありません。私たちが直面している問題は次のとおりです。動的アドレスを使用して送信するすべての電子メールが、新しい SMTP リレーを作成しています。
リレーに関する私の知識は非常に限られています。私たちのホスト (GoDaddy) は、SMTP リレーを 1 日あたり 250 に制限しています。これは、1 日に何千通ものメールを送信する可能性があるアプリケーションです。
私たちが使用するすべての「未登録」メールアドレスが新しいリレーを開くという私の仮定は正しいですか? もしそうなら、合理的な価格で無制限の中継を提供するサービスまたはホストはありますか?
ありがとう。
c# - 文字列を使用して動的に (LLBLGen) Linq クエリを作成する
コーディング中 (設計時) に 100% 不明な LINQ クエリを生成する必要があります。これは、データ プロジェクトから 100% 分離されたフレームワークでロジックが利用できるためです。データには、LLBLGen で生成されたデータ アクセス コードを使用します。
通常、フレームワークに指定する (参照ではなく) DLL で呼び出しを使用することにより、データを取得するコードを作成できます。しかし今、これを linq で行う必要があります。次のようなクエリを作成するにはどうすればよいでしょうか。
文字列のみから。「customer」という文字列が 1 つあるため、Customer から取得する必要があることがわかります。次に、取得したいフィールド名を含む string[] を取得します。ご覧のとおり、これらの列には複合型 (関連フィールド) が含まれる場合があります。
特にLLBLGenと組み合わせたアドバイスは素晴らしいでしょう!
ありがとう、ギャブ
c++ - 実行時にサイズが決定される C++ で 2 次元配列を表す最良の方法
C++ では、次のようなことをしたいと思います。
もちろん、これは機能しません。同様のことを行う最良の方法は何ですか? これに対するいくつかの解決策を見てきましたが、かなり面倒です。
c# - C#4 の dynamic キーワードは拡張メソッドをサポートしますか?
C#4のキーワードについての話を聞いていて、疑問に思っているのですが... この機能は他の .NET 機能と直交するものでしょうか? たとえば、拡張メソッドをサポートするのでしょうか?dynamic
注:この質問は、C#4 が出荷される前に尋ねられたものです。そのため、未来形で表現されています。
dynamic - C#4.0 の動的オブジェクトには、ダック タイピングの機能がありますか?
Anders によると、C#4.0 では、動的型、または「静的型が動的」なオブジェクトを取得します。これにより、メソッド呼び出しの解決をコンパイル時ではなく実行時に行うことができます。しかし、有効である可能性が低いことがわかっている場合でも、動的オブジェクトの呼び出しを許可するのではなく、動的オブジェクトを何らかのコントラクトにバインドする (したがって、完全なインテリセンスを取得する) 機能はありますか?
つまり、ただの代わりに
次のような既知のコントラクトに制約するためにキャストまたは変換する機能があります。
または単に
C#4.0 の既存の資料にはそのようなものは見つかりませんが、動的パラダイムの論理的な拡張のようです。もっと情報を持っている人はいますか?