web-dev-qa-db-ja.com

単一のデータベースがWebサイト、モバイルアプリでどのように機能しますか?

ユーザーがジョブを表示したり、ジョブを投稿したりできるジョブポータルを開発しました。 PhpとMySQLを使用しました。これをWebファクションでホストしました。次に、Android、iOS、Windows向けの求人ポータルのモバイルアプリを開発します。データベースは同期し、アプリやウェブサイトデータベースと動的に連携する必要があるため。バックエンドコードをJava in AndroidおよびWindowsのc#)に変更する必要があるため、単一の同期データベースを管理するにはどうすればよいですか?

5
Abhishek

Service Oriented Architectureが必要です。これらすべてのプラットフォーム、Webサービスでデータを共有しているからです。

基本的に「関数」を呼び出すのではなく、URLに対してHTTPリクエストを作成するのではなく、クエリ文字列またはHttpヘッダーを介してパラメーターが渡されます。 XMLまたはJSONが返されます。それについて読んでください。

事は、あなたのアプリは常にオンラインである必要があります...

13
Morons

これを管理する方法はいくつかあります。

最下位レベルでは、データベースサーバーに処理を任せることができます。すべてのアプリケーションが同じサーバー上の同じデータベースに接続していて、SQLトランザクションを正しく使用している場合、MySQLサーバーはすべてのユーザーがデータベースの一貫したビューを確認できるようにします。

しかし、すでにデータベースにアクセスするためにインターネット接続が必要な場合は、データベースアクセスとともにビジネスロジックを管理し、さまざまなフロントエンド(Androidアプリ、 iOSアプリ、Windowsプログラム、ウェブサイト)。このようにして、ビジネスロジックを1回記述するだけでよく、サポートされるプラットフォームごとにフロントエンド固有のプレゼンテーションコードのみを記述する必要があります。

PHPベースのウェブアプリケーションを「サービス指向」にする必要があります。つまり、ウェブサービスエンドポイントとして機能し、リクエストを処理してXML/JSON /テキストデータでのみ応答します。このインターフェースは、モバイルアプリケーションとWebアプリケーションの両方で使用できます(サービスとの通信にはajaxを使用します)。

この場合、Webアプリケーションとモバイルアプリケーションは、Webサービスから受信したデータのプレゼンテーションレイヤーとして機能します。ただし、クローラーがWebサイトを解析する方法が原因で、ajaxベースのWebアプリケーションはそれらのWebサイトから読み取ることができません。 Webアプリケーションをクローラーで読み取れるようにする必要がある場合は、Webサービスと対話し、情報を一般的なHTMLベースのページとして表示する別のレイヤーを導入する必要があります。

したがって、Webアプリは次のようになります。

Client >> Presentation-Layer (js) >[HTTP]> Service-Layer (php) >> DB (MySQL)

または、

Client >[HTTP]> Presentation-Layer (php) >[HTTP]> Service-Layer (php) >> DB (MySQL)

クローラーが解析できるようにする場合。

そしてあなたのモバイルアプリは次のようになります:

Client >> Presentation-Layer (Java/obj-C) >[HTTP]> Service-Layer >> DB (MySQL)

Webアプリケーションとモバイルアプリケーションの両方からメインデータベースにリモートで接続することもできますが、セキュリティの観点からはお勧めできません。また、Webアプリケーションとモバイルアプリケーションの両方ですべてのロジックを再実装する必要があります。 。

0
Jit B