2012-01-14 1 views
2

ウェブアプリケーションを作成して、一連のデータを表示して編集できるようにする必要があります。リモートのmsアクセスデータベースを更新するには?

このデータは、別のアプリケーション(デスクトップアプリケーション)で使用されるAccessデータベースファイルに含まれています。

私はこの仕事を実行するための最良の方法を評価しています。

残念ながら、別のデータベースソリューション(MySQLやPostgresなどのrdbms)に移行する私の目的は、顧客によって拒否されました。

ここで問題となるのは、このデータを使用するアプリケーションを実行するサーバーとデスクトップとの間でデータの整合性を保ち、同期させる方法です。

編集したデータや新しいデータを保存し、承認されたユーザーにこの新しい挿入されたデータを確認して検証した後、元のアクセスデータベースにインポートするだけです。

私は、次の可能な解決策を(デスクトップのmdbコピーを更新する)ことがわかりましたが、それらのそれぞれの長所と短所を持っている

  • Windowsマシンへのリモートアクセスを
    • は、マシンを公開クライアント上のMDBがされている場合、不正なアクセス
  • 使用rsyncが(一日一回)
    • syncronizedファイルを維持しますデスクトップアプリケーションで編集したデータは
    • を損失すると、すべてのデータは(rsyncは実行されるまで)
  • クライアントサーバーアプリケーション、実際の同期されたデータは存在しません
  • を検証された場合にのみ、そこに更新することができます
    • は、攻撃者
    • (デスクトップ上の)第三のアプリケーションに対してデータを保護するための安全な層を使用することができます必要とされる
    • のsyncronizationがこの第三のアプリケーションを使用するために許可されたユーザーが必要ですインポートデータ(つまり、リモートDBを照会し、ローカルのmdbを更新します)

あなたはこれを成し遂げるために私を助けることができるいくつかの他の方法を知っていますか? 私はクライアントサーバーモデルを指向しています。これはもっと高価なものでもありますが、これを行うためには私が見る唯一の方法です。

目的のソリューションのいくつかの賛否両論はありますか?

私はこれを開発するPLを選択しませんでしたが、PHPやPythonのいずれかを使用することを考えていました。 リモート環境(サーバー用)は、Windowsまたは* nix(推奨)のいずれかです。

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

答えて

2

最初のアイデア:

exposes the machine to unauthorized access 

これは本当に有効な引数ではありません。あなたがインターネット上に置いたものはすべて公開されています。それはSSL/TLSでさらに保護することができないようなものではありません。たとえば、RDPでもSSHトンネルを介して保護することができます。

私の考えでは、最も簡単なやり方は、Webサービス(SOAP)を使用することです。挿入/更新を行うサーバーコードをPythonやJavaのようなものでAccessデータベースに記述します。作業コードからWSDLを生成します。 WSDLからPHP/Python用のクライアントを生成できます。これで、PHP/Pythonクライアントを使用するWebインターフェイスを作成するだけです。

SSLを使用するセキュリティでは、Basic認証で十分です(たとえば、Pythonの場合はSOAPpyでサポートされます)。 pyodbcを使用してAccessデータベースに接続できます。

+0

私は間違っているかもしれませんが、これは重複していない元のmdbで直接作業する必要があります。 –

+0

はい、これにより、独自の同期を実装しようとするよりも実装がずっと簡単になります。 –

+0

ニースのソリューション!私もこれを目的とします! これは完璧な解決策(より良いデータベースを使用する私の最初の目的とは反対の)と思われる。 ありがとう! –

1

よく2 dbを使用し、それらの間の種類のWebサービスで変更を同期させることができます。 WebサーバーDb(現代のmysqlなど)と現在のアクセスDb GETメソッドに対して新しいレコードや変更されたレコードを返すような種類のRest APIを作成する必要があります。DELETEメソッドなどに対してタイムスタンプを使用して削除するhttpメソッド。 し、反対側の新しいレコード(jsonで転送)の予定されたジョブを両側で照会して、レコードを比較的インシンクに保つことができます。

特定のポートでのみアプリケーションdbを公開し、WebアプリケーションサーバーのIPアドレスからのhttpクエリにのみセキュリティを設定できます。また、HTTPの認証、ハッシュなどを使用してください。 これは、負荷の高い、高同時実行性のアプリケーション(これはあなたがDbとしてアクセスを使用していないと思います)が動作するはずです。

あなたはTurboGearsの2.1のような任意のPythonのwebframeworkとミニAPIのこの種の、ジャンゴまたはbottleなどのミニフレームワークを構築したり、パイソン(と、なぜあなたはないだろう)を希望する場合

PSをフラスコできはしないでくださいpyodbcを直接使用して、美しいpythonで作業してください。

+0

もちろん私はPythonを好む:-) この明らかな説明をありがとう! 私はこの解決策をとると思います。 –

1

この動作は実際には認証の問題とデータを確認する必要があるユーザーの数によります。

私が尋ねる理由は?

Access 2010とoffice 365の使用を検討することができます。これにより、クラウドにリンクされた表を作成できますが、実際には表もAccessデスクトップのローカルにキャッシュされます。つまり、データのリアルタイムレプリケーション同期が使用され、Access 2010では自動的に行われます(コードを書く必要はありません)。

これは、Accessデスクトップアプリケーションの実行中は、ネットワーク上のプラグを引き出すことができ、引き続き実行されることを意味します。 Wi-Fiまたは接続がある瞬間に、ローカルの変更がOffice 365に同期されます。さらに、AccessでWebフォームを作成できるようになりました。

データがタッチされたり編集されたり(どちらの側にも新しいレコードがあります)、パイプがローカルコンピュータに送られます。アクセスクライアントにreordsを追加すると、Webユーザーはこれらの新しいreocrdも表示します。

So Access 2010にはWeb公開機能が追加されました。これは新しいOffice 365で動作します。価格は月額6ドルから始まります。そして、少数のユーザーの場合は、同じアカウントを使用してログオンするようにしてください。これは、この記事を作るのに要した時間よりも短時間で、これをすべて稼働させることができることを意味し、月額10ドル以下です!

気付いていない人には、Access 2010にはWeb公開があります。アクセスフォームを公開すると、.netフォーム(zammel/XAML)フォームに変換され、コードはJavaScriptに変換されます。したがって、フォームコードは実際にブラウザ側で実行されます。

システムはオフィス365で稼動しているので、頑丈な鉄を使用しているため、理論上は何百万人ものユーザーにこの設定を適用できます。 AccessアプリケーションをOffice 365に公開すると、サーバー側ではmdbまたはAccessファイルを使用しなくなり、Access Web Servicesと呼ばれるものがあります。実際、テーブルはSharePointリストの平等なものになります。 SP 2010の新機能では、これらのリストにカスケード削除などのリレーショナル機能が追加されました。

このシステムの真の美しさは、サーバーサイドの技術を学び、触れることなく、Accessの中に書いて作成し、すべてを行うことができることです。ここに私の短いビデオがあり、途中でWebブラウザだけでAccessアプリケーションを実行します。

http://www.youtube.com/watch?v=AU4mH0jPntI

でも何ActiveXまたはSilverlightが必要ではありません。実際に私のアクセスアプリケーションはSafariウェブブラウザを使ってiPad上でうまく動作します。

Accessを引き続き使用して、新しいAccess 2010機能を使用してアプリケーションをWebに公開することもできます。

関連する問題