質問です。
良くWindowsで
ユーザーがソフトウェアをPCにインストールして
それを、起動すると
アカウントの作成を求められる
アプリケーションがあると思いますが
あのようなアプリケーションは
C言語で開発したとして
どうやってデーターベースに
ユーザーの情報を送ってそれを
管理するように
プログラミングをしているのでしょうか?
C言語だけで、その辺の事も全部出来るのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ここでいう「データベース」というのはネット上で情報を管理してくれるサーバーのことと解釈します。
ご質問のようなアカウント管理機能、もちろんすべてC言語で記述可能です。ただ、単に「C言語だけで」かというとC言語の標準ライブラリだけでという意味にもなってしまうのでもう少し付け加えると「C言語とWindowsのOS機能だけで」可能ですとなります。
サーバーと通信するのにもWindowsのOS機能が必要ですし、そうして作ったアカウント情報を保管するのにもOS機能が必要です。
- サーバーとの通信には、Windowsは非常に原始的な通信機能としてwinsockというAPIを用意しています。ただ、正直にwinsockだけ使って通信プログラムを書く人はいません。winsockを応用したWinHTTP, WinInetというAPIも用意されており、これだとかなり実用的な通信プログラムが書けます。これらを使ってサーバーと通信します。
- アカウント情報は、ファイルに保管するかレジストリに保管するかです。ファイルに保管するだけならある意味「C言語だけで」できますが、ここでちょっと落とし穴があり、パスワード情報をそのままファイルに書いちゃうんですかという問題です。ここでまたWindowsのAPIを使います。CryptProtectData()という関数を呼ぶことで、ユーザー本人にしか解読できない形に暗号化してくれるのでアプリは鍵の管理とかそういうこと考えずに安全に保存できます。
もちろん、正直にWindows APIだけですべてを書き下ろすのでなく、必要に応じて便利なライブラリを使っていくのが実際の開発になります。
投稿2016/03/29 03:19
総合スコア5568
0
ベストアンサー
こんにちは。
アカウントの作成を求められるアプリケーションがあると思いますが
あのようなアプリケーションは(中略)
どうやってデーターベースにユーザーの情報を送って
それを管理するようにプログラミングをしているのでしょうか?
一般的には、通常そのアプリケーションを提供している会社にてアカウントを管理すると思います。
その会社がアカウントを管理するためのサーバをインターネット上に設置し、アプリケーションはインターネット通信にてそのサーバと通信して、アカウントを作成します。
つまり、アプリケーション・ソフトウェアとサーバ・ソフトウェアの2種類のソフトウェアが必要になります。サーバ側を1からC言語で開発することも可能ですが、それでは開発費用と期間を膨大に消費することになります。
そこで、MySQL等の既存のデータベース・ソフトウェアを使ってアカウント情報を管理し、アプリケーション・ソフトウェアとそのデータベース間のI/Fをとりもつサーバ・ソフトウェアを開発します。
そして、アプリケーション・ソフトウェアにそのサーバ・ソフトウェアと通信する機能を実装します。
上記のような形態のサーバ・ソフトウェアの開発についてはよく知らないのですが、恐らくあまりC言語で開発することはないだろうと思います。各種のスクリプト言語的な開発ツールを使って開発されることが多い筈です。
アプリケーション・ソフトウェアについても同様でC言語だけで開発するケースは今の時代比較的少ないのではないかと思います。速度が必要な部分はC++言語、速度が不要な部分はJavaやC#等の生産性の高い言語を使うケースが多いように思います。
C言語だけで、その辺の事も全部出来るのでしょうか?
開発費用や開発期間を無視すれば、C言語だけで全てのアプリケーション・ソフトウェアとサーバ・ソフトウェアを開発することは可能です。C言語は高級アセンブラとも言われる程、自由度の高い言語です。ほぼ全てのことが可能ですから。
しかし、C言語の標準ライブラリが脆弱なため実用プログラミングを行う際の難易度が高く、また言語仕様が貧弱なので生産性も低くく、使える場面は限定的です。
ですので、速度を必要とする分野では、まずC言語を学び、次にC++をベターCとして使うケースが多いのではないかと思います。
投稿2016/03/29 02:33
総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/29 04:09
0
MySQL であれば、
MySQL C ドライバ
MySQL C Driver
で、検索すると、
MySQL コネクタ
https://www-jp.mysql.com/products/connector/
に辿りつくはずです。
cだけで実現する場合は、この中から、適切な物を使います。
オープンソースであれば、適切なサイトで、ソースが取得できます。
’
OS、WEBサーバーが書かれていないので、
Windows / Linux では、取れる道が、少し異なります。
PHPをどの様に使うのか、なぜcなのかが不明ですが、
固定的なhtml の一部分だけを書換えるなどであれば、
cだけでもできますし。
動的に何かしたいのであれば、PHP+プラグイン:主、c:PHPに馴染まない部分の処理
でしょうし。
’
Windows で、VS20xx を使って、MySQL を操作するのであれば、
cだけを使わずに、複数言語で構成する事も可能ですし、
管理ツールなどの、GUI部分、データベース部分などは、C#が楽ですし、
PHPをどの、Webサーバーで使用するかにもよりますが、
ASP.NET/Apach であれば、PHPプラグインからの、
データベースの使用を考えた方が、楽ができます。
’
>C言語だけで、その辺の事も全部出来るのでしょうか?
古くの、CGI / SSI などは、c / c++ で書かれていたものでした。
ログイン機能等の実装は、OS、WEBサーバー含めて考えた方が良いので、
OS / WEB サーバーの掲示が必要だと思われます。
投稿2016/03/29 01:25
編集2016/03/29 02:14総合スコア2028
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/29 03:39
0
通信を行いたいというだけであれば、winsock を使う手などがあります。
より簡単に http や https 通信を行う場合は WinInet などを使う手もあります。
投稿2016/03/29 00:40
総合スコア57
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/29 01:16
2016/03/29 02:23 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/29 03:35
2016/03/29 04:46