問題タブ [occasionallyconnected]

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 投票する
1 に答える
742 参照

.net - クラウド データベース (WCF) または Microsoft Sync を使用した不定期接続アーキテクチャ?

私は .NET 4 Winforms アプリに取り組んでおり、データベースを処理する最善の方法を決定するのに問題があります。私たちは、アプリが WCF サービスを介して「クラウド」と通信できるクラウド データベース システムを提供したいと考えています。基本的には、ローカル データベース (ローカルの SQL Express、サーバー上の SQL Server 2008 R2) への接続と同じことを行います。

次の 2 つのオプションがあります。

1) WCF を使用してクラウド データベースへのすべての呼び出しを行う 2) ローカル データベースを使用し、Microsoft Sync Framework を使用してクラウドの同期を維持する

最終的には、クラウド データをユーザーの別のフロント エンドとしても使用する Web アプリケーションを用意する予定です。

ジレンマは明らかにどちらを使用するかです。オプション 1 を使用する場合、公共の場所など、ソフトウェアが使用されるすべての場所に SQL Express をインストールする必要はなく、ユーザーのデータはその DB にダウンロードされる可能性があります。WCF オプションを使用すると、すべてのデータを中央に配置できます。

iPhone、iPad、および Android もクラウドと同期できるように、最終的にモバイルで折りたたむ予定です。

厳密にクラウドのデータベース オプションと、時々接続するオプション、つまりデータベースがローカルで、クラウドに同期されているオプションとの比較について、あなたの意見に興味があります。

ありがとうございました。

0 投票する
1 に答える
442 参照

wpf - Sync Framework クライアント アプリケーション (データベース同期) の正しい認証方法はどれですか?

ユーザーは、インターネット接続が不十分な地域で、Windows クライアント アプリでデータを収集するために外出します。ネットワーク接続から一度に数日または数週間離れることもあります。幸運な人はラップトップを地域のオフィスに持ち帰って、会社のネットワークにログインするときに収集したデータを同期します。また、データ同期を実行するために、クライアント/顧客のインターネット接続やインターネット カフェ接続に接続する必要がある場合もあります。

アプリはローカルの SQL Server 2008 R2 Express データベースにデータを保存し、接続が利用可能になると、クライアントは HQ で SQL Server 2008 標準へのデータベース同期を開始します。

ユーザー認証と役割ベースのセキュリティは、アプリの要件です。フォーム認証または Windows 認証のどちらの方法を使用する必要がありますか? (そして、カスタム認証と呼ばれる 3 番目のタイプに出くわしたと思いますか?)

申し訳ありませんが、私は認証のことで本当に迷っています。初めてのことで、各タイプの長所と短所がわかりません。このシナリオでどちらを使用すべきか誰にもアドバイスできますか?

更新:接続文字列でSQL Serverの外部IPアドレスを使用し、ユーザーログインにSQL認証を使用して、実際に同期が機能しています。これは受け入れられる慣行ですか、それともセキュリティ原則に違反していますか?

ロール ベースのセキュリティの部分に取り掛かる必要があります。ロール ベースのセキュリティは SQL 認証と連携できますか?

また、新しい問題: 本社からラップトップを受け取ったリモート ユーザーの一部は、組織のドメインに二度とログインしない可能性があるため、ドメインとのログインの信頼関係が数か月後に期限切れになることが判明しました。したがって、Windows認証はとにかく実行可能ではないと思います...

0 投票する
1 に答える
249 参照

javascript - モバイル/デスクトップ - どのような戦略が理にかなっているのか

私の上司には大きな夢があります。

彼は、デスクトップ デバイスとモバイル デバイスの両方で実行されるアプリケーションを作成したいと考えています。さらに、ときどき接続する (インターネットに接続せずに実行できる) ことも望んでいます。アプリケーションは、データベースからのデータに大きく依存します。

彼が話すすべての人は、HTML5/JavaScript を彼にプッシュし続け、一度書けばどこでも (っぽい) ソリューションを実行できるようにします。

JavaScript を使用してデータベースからデータを取得したり、JavaScript 用の ORM を使用したりするなど、この種の環境についてはあまり経験がありません。私は自分より先に進んでいるかもしれません。

彼の目標にできるだけ近づくための戦略を練る際、どのようなことに注意すればよいでしょうか? ここに私が持っている仮定と質問があります:

期待/仮定

  1. 私は、HTML5 と Local Storage で出現したと思われる「組み込み」またはローカル データベースのいずれかを使用する必要があると予想しています。
  2. このデータを、どこかのサーバーにあるデータと同期する方法も見つけなければならないと思います。
  3. このデータの同期は自作する必要があると思います。
  4. データの操作を簡単にするために、ある種の ORM が必要です。
  5. ローカル データベースのサイズに関連するあらゆる種類の奇妙なことに遭遇することを期待しています。
  6. インターネットに接続せずにアプリケーションを実行できるはずなので、アプリケーションのすべてのコードをクライアント側で実行する必要があると思います。

質問

私は何をやっている?

どこから始めればいいのかわからないくらい途方に暮れています。

これを正解/不正解の可能性があるものに変えるために、知っておくと役立つことがあります。

  1. HTML5/JavaScript アプローチは良い方法のように思えます (時々接続される、モバイル、およびデスクトップのターゲットを考慮して)?
  2. アプリケーションの開発を簡単にするために、どのような種類のフレームワークとツールを検討する必要がありますか?
  3. 彼は求めすぎですか?

アドバイス/ガイダンスをお寄せいただきありがとうございます。

リクエストによる: アプリケーションは何をしますか? アプリケーションは、(多かれ少なかれ) 構成可能な製品の見積もり/価格設定アプリケーションです。多数の製品 (ベース キャビネット、ウォール キャビネットなど)、多数の標準的な構成可能なオプション (木材、仕上げ、ドア スタイル)、および多数の (標準的ではない) 変更 (奥行きを減らし、高さを増やし、等。)。

選択した標準の構成可能なオプションに応じて、各製品の基本価格が変わります。その後、それらに変更を加えることができます (これにも代償が伴います)。

アプリケーションの大部分は既に存在します (ただし、ローカルにデータが保存されていない WPF アプリケーションとして)。これらの構成可能なアイテム (主にキッチン キャビネットなど) を製造するさまざまなメーカーに販売できるように設計されました。すべてのメーカーは、提供する木材/仕上げなど、製品の基本価格を決定する方法 (これも異なります)、およびさまざまな木材/仕上げなどをどのように組み合わせるかについて、独自のルールを持っています.

何とか、何とか、何とか、すべてのメーカーは非常にユニークです。

この問題を解決するために、製品/オプション/その他を設定したら、いくつかの式を記述して、それらの間の関係だけでなく、それらの価格設定方法も定義できる式ベースのアプローチを作成しました.

現在のモデルでは、アプリケーションはユーザーの PC で実行され、データはアプリケーションが呼び出しを行う Web サーバー上にあります。彼は、このすべてを、デスクトップでも使用できる、時々接続されるモバイル アプリケーションに変えたいと考えています。

どのメーカーのデータにも、画像、説明、メモ、何千もの製品/変更、およびそれらに関する多くの情報 (幅、高さ、奥行き、ドアの数など) が含まれているため、関連するデータは非常に多くあります。

0 投票する
1 に答える
141 参照

linux - 時折接続されるレプリケーションのためのLinuxベースのRDBMS

次の要件を満たすデータベースレプリケーションソリューションを探しています。

  • Linux互換のRDBMS(Atom 32ビットシングルコアアーキテクチャ)を使用する
  • 双方向のデータフローを使用して、時折接続された環境で作業する
  • データベースエンジンを再起動せずに、その場でピアを追加する処理

構成の詳細は次のとおりです。リモートの場所で複数のLinuxベースのミニサーバーを実行しており、一度に最大1週間インターネット接続が失われることがよくあります。これらのミニサーバーはユーザーからのデータを記録し、そのデータをネットワーク上で表示できるすべてのピアに複製する必要があります(冗長性を確保するために、特定のVLANに複数のデータを展開できます)。インターネットに接続する場合、これらのミニサーバーは中央サーバーと同期する必要があり、データはミニサーバーから中央サーバーに、または中央サーバーからミニサーバーに流れる可能性があります。

SQL Serverはこれのほとんどを処理できると思いますが、Linuxでは実行できません。何か案は?ソリューションを機能させるためにかなりの量のカスタムコーディングを行うことができますが、現在のソリューションは独自のカスタムレプリケーションシステムであり、言うまでもなく、エンタープライズソフトウェアの期待に応えられません...

0 投票する
1 に答える
164 参照

sql - 同期サービスで OCA を作成し、動的テーブル名を使用する

私は、SQL サーバー データベースと SQL CE クライアント データベースに基づく OCA アプリケーションを使用しています。各ユーザーには、SQL サーバーの db に独自のテーブルがあります。各ユーザーのテーブルには同じスキーマがありますが、異なるデータを持つことができます。SQL サーバー DB テーブル名 (userID + "__usersdatatable" として設定) に基づいてクライアント アプリケーションで synctable 名を動的に設定したいと考えています。

何も変更しない場合、同期サービスは問題なく実行されます。私の最新のアイデアは、SyncTable.TableName = "jsmith_usersdatatable"; を変更することでした。oninitialized() メソッドの LocalDataCache1SyncAgent.cs で。ただし、次のエラーが表示されます。

「テーブル 'zlentz_GOBOS' のスキーマを DbServerSyncProvider の GetSchema() メソッドで取得できなかったため、クライアント データベースを初期化できません。クライアント データベースへの接続を確立できること、および SelectIncrementalInsertsCommand プロパティまたは SelectIncrementalUpdatesCommand プロパティのいずれかが確立されていることを確認してください。 SyncAdapter のプロパティが正しく指定されています。」

要するに、各 OCA は異なるテーブルに同期する必要があるということです (双方向)。私は明らかに SQL または同期サービスの専門家ではないので、アドバイスが役に立ちます。:) ありがとうございます!

0 投票する
1 に答える
536 参照

c# - 時々接続されるアプリケーション - SQL Compact+EntityFramework+SyncFramework の問題

私は現在、「たまに接続する」カテゴリに分類される新しいアプリケーションのさまざまな手段を模索しています。いくつかの調査の後、必要/可能なときに同期するSqlCompactデータベースを備えた中央のSQLServerとクライアントを使用することを「決定」しました。

すべてを「接続」すると、次の例外が発生しました。

さらに読むと、Sync Framework は SqlServerCe v4.0 をサポートしていないため、EntityFramework と互換性がないことがわかりました。

今、自分が歩もうとしている道が正しいかどうか悩んでいます。代替ソリューションまたは回避策をいただければ幸いです。

関連する可能性のあるその他の情報:

  • クライアント数 ~100
  • 双方向の同期が許可されるクライアントの数 (中央サーバーの更新) ~10
  • データベースは非常に小さく (20MB)、ほとんど増加しないと予想されます。
0 投票する
1 に答える
458 参照

enterprise-library - 常時接続するアプリケーションを時々接続するアプリケーションに変換する

次のスタックを持つ既存のクライアント サーバー 3 層アプリケーションがあります。

  • スマート クライアント (Win フォーム)
  • IIS/ASP.NET
  • SQLサーバー

一部のデータはエンティティー属性値 (EAV) モデルに保管されます。主キーはすべて整数 ID 列です。データベース操作は、主にストアド プロシージャを使用して実行されます。

私は、このアプリケーションを時々接続するアプリケーション (OCA) に変換する任務を負っています。

クライアントでのインストールとリソースの制限に問題はありません。

このようなプロジェクトは私にとって初めてです。

私はいくつかの読書をしました

既存のコードを保持し、変更の影響を制限するために、WS で同期を処理する同期フレームワークを使用して、各クライアントに 3 層アプリケーションをインストールすることを検討しています。また、同期が参照する 1 つのマスター サーバーを持ちます。

このソリューションは実行可能に見えますか?

常時接続の 3 層アプリケーションを不定期に接続するアプリケーションに変換することに関する他のリソースはありますか?

ありがとうございました 。

0 投票する
4 に答える
1790 参照

domain-driven-design - 随時接続 CQRS システム

問題:

2 人の従業員 (A と B) が同時にオフラインになり、顧客 #123、たとえばバージョン #20 を編集している間、オフラインで変更を続けています...

シナリオ:

1 - 2 人の従業員が顧客番号 123 を編集し、1 つ以上の同一の属性を変更します。

2 - 2 人の従業員が顧客番号 123 を編集しますが、同じ変更は行いません (2 人は触れずに互いに交差します)。

...その後、両方がオンラインに戻り、最初に従業員 A が追加され、それによって顧客がバージョン #21 に変更され、次に従業員 B が引き続きバージョン #20 に変更されます

質問:

シナリオ 1 で保持するのは誰の変更ですか?

シナリオ 2 でマージを行うにはどうすればよいですか?

環境:

1 - CQRS + イベント ソーシング スタイル システム

2 - イベント ソーシング データベースをキューとして使用する

3 - 読み取りモデルの結果整合性

4 - RESTful API

視覚的に傾いているための図。 これは MS ダイアグラムのマッシュアップであり、いくつかの点が変更されています

EDIT-1:これまでの回答に基づく説明:

きめの細かいマージを実行するには、たとえば、フォームのフィールドごとに 1 つのコマンドが必要ですか?

ここに画像の説明を入力

上記の、ChangeName、ChangeSupplier、ChangeDescription などのきめ細かいコマンドは、それぞれ独自のタイムスタンプを持ち、イベント A と B の両方が ChangedName? を更新した場合に自動マージを可能にします。

編集-2: 特定のイベント ストアの使用に基づくフォローアップ:

イベントストリームの永続化のために @GetEventStore を利用するようです。

次のように、楽観的同時実行性を利用します。

  • ストリーム内のイベントごとに、ストリーム バージョンが 1 ずつインクリメントされます

  • 書き込みでは、ライターの ES-ExpectedVersion ヘッダーを使用して、期待されるバージョンを指定できます

    • -1 は、ストリームが存在しないことを指定します

    • 0 以上はストリーム バージョンを指定します

    • ストリームがそのバージョンにない場合、書き込みは失敗します。期待される新しいバージョン番号で再試行するか、動作を再処理して、必要に応じて問題ないと判断します。

  • ES-Expected Version が指定されていない場合、楽観的同時実行制御は無効になります

  • このコンテキストでは、オプティミスティック コンカレンシーはメッセージ ID だけでなく、イベント # にも基づいています。