4


2

シングルユーザーデスクトップアプリケーションからマルチユーザー開発への移行

私は夜と週末にマイクロISVをブートストラップしようとしています。 開発の非常に初期の段階でアプリケーションを使用しています。 C#で記述され、主に問題ドメインを表すクラスのコレクションで構成されています。 この時点では、UIやデータの永続性はありません。 (.NETプラットフォームにはまだ定住していません。 Javaまたはネイティブ実行可能ファイルに変更できるほど早い段階で)

このアプリケーションの私の目標は、ハイブリッドシングルユーザー/時折接続されるマルチユーザーアプリケーションになることです。 単一のユーザーパーツは、ローカルストレージに埋め込みデータベースを使用します。 これは私がよく知っている開発モデルです。

マルチユーザー部分は、私が以前に経験したことがないところです。 各ユーザーには次の2つのことが必要であることを知っています。

  • パブリックインターネット上のリモートサーバーへのIPベースの通信

  • ユーザー認証とリモートデータストレージ

このサーバーに提供するサービス(情報検索とユーザー間トランザクション)のアイデアはありますが、それ以上は自分の要素ではありません。 自分のサーバーを実行するためのリソースがないため、サーバーはサードパーティがホストする必要があります。 近い将来、このプロジェクトの唯一の開発者になることに留意してください。

  1. 2つの技術を実装する最も簡単な方法はどの技術ですか 上記のものですか? データストア/データベースへの直接アクセス、またはそれを分離する方が良いでしょうか? Webサービスを実装する必要がありますか? もしそうなら、SOAPまたはREST?

  2. マルチユーザーに移行するときに考慮する必要がある他のこと 応用? マルチユーザーアプリケーションでは、セキュリティが大きな懸念事項であることを知っています。 特に、あらゆる種類の銀行情報を扱う場合(これは私が行います)。 リモート接続と多数のユーザーを扱う場合、パフォーマンスが問題になる場合があります。 私が見落としているものはありますか?

3 Answer


2


マルチユーザーアプリケーションへの移行に関しては、データの集中化はもちろん最初のステップであり、それを実現する最も簡単な方法は、Amazon SimpleDBやMS Azureなどのクラウドベースのデータベースを使用することです。 通常、アクセスキーと認証用の長い「秘密」を取得します。

データが高度にリレーショナルでない場合は、Amazon SimpleDBを検討することをお勧めします。 ほとんどの言語用のSDKがあり、世界のどこにいてもキーとシークレットを使用してSimpleDBデータベースにデータを格納/取得するためのシンプルなコードを使用できます。 データストレージとトラフィック量に基づいてサービスの料金を支払うため、特に開発中は非常に低い参入障壁があります。 また、小さなホームアプリケーションからAmazon.comのサイズまで拡張できます。

独自のデータベースサーバーを実装することを選択した場合、2つの重要な点を覚えておく必要があります。

  1. セッション状態が存在しないこと、つまり クライアントがあなたに電話をかける Webサービスでは、何らかのアクションが発生し、サーバーはそのクライアントを忘れます(もちろんデータベース内の変更されたデータは別として)。 同様に、クライアントは、別のユーザーからの対話の結果として変更される可能性のあるデータをローカルに保持しないでください。 変更しないことがわかっている(または変更してもかまわない)データのみをローカルにキャッシュします。

  2. Webサービスの場合、通常、各呼び出しは独自に処理されます したがって、複数のスレッドからデータベースへのアクセスが安全であることを確認する必要があります。 SQLデータベースと通信する標準の.NETまたはJavaの方法を使用する場合は、これを処理する必要があります。 ただし、独自のデータストレージを実装する場合は、心配する必要があります。

REST / SOAPなどの質問に関して、重要な考慮事項は、データベースサーバーへの接続に使用するプラットフォーム/デバイスの種類です。 たとえば、サーバーを実装している場合 .NET you might consider WCF for implementing your web services. However 後で非.NETクライアントを使用する場合は、困難が生じる可能性があります。 SOAPはWebサービスの成熟したテクノロジーですが、実装するのは非常に面倒であり、SOAP呼び出しの処理をまとめるライブラリは、特定のクライアントプラットフォームで必ずしも使用できるとは限りません。 RESTは実装が簡単で(サーバーでASP.NET MVCを使用する場合は非常に簡単です)、ライブラリを必要とせずにHTTP POST / GETを処理できるクライアントからアクセスでき、テストが容易なので、RESTが私の選択するテクノロジです。


1



0


  1. dbへの直接アクセスは最も単純で、最悪です。 DBアクセスを認証する方法を考えてください…​ シリアル化可能なパラメーターを使用してリモート対応のAPIを作成し、後で接続するメソッド(Webサービス、IIOPなど)を心配するだけです。通信の詳細はすべてラップされ、非表示になります。

2.なし