- PR -

Microsoft Visual Studio .NET 2003でFTP送信(SFTP)について

1
投稿者投稿内容
ぴよこ
会議室デビュー日: 2009/01/26
投稿数: 2
投稿日時: 2009-01-26 11:55
超初心者です。
環境設定からわからない状態です。
どなたかアドバイスをお願い致します。

FTP送信(SFTP)を行うにあたり、VB.netを使用したいと考えております。

手順としては、『自動』『手動』を判断し、
『自動』の場合は、設定された時間ごとに自動で
1)データ取得
2)取得したデータをcsv出力
3)CSV出力したデータを7-zip形式で圧縮
4)FTP送信(SFTP)
を行い、
『手動』の場合は、
『手動』を選択されたタイミングで『自動』処理を中断?して
手動処理ボタンを使用して、そのボタンが押された場合に
上記の1)〜4)の処理を行うようなプログラムを作成しようと考えております。
※通常、送信を行う際は『自動』です

そこで、プログラムを作成するにあたり、下記の疑問が発生しました。
@アプリケーションは何を用いたらよいのか
※ASP.net web アプリケーションなのかWindowsアプリケーションなのかその他?

A自動送信方法はどう行うのか
 ※常に裏で稼働させる?
B7-zip圧縮方法の仕方について

何から、どのように調べたらよいのかわからない状況です。
調査を行うにあたってどなたかアドバイスまたは、サイト等ありましたら
教えていただけないでしょうか?

takacini
常連さん
会議室デビュー日: 2005/12/27
投稿数: 24
お住まい・勤務地: 東京都
投稿日時: 2009-01-26 15:31
今ちょうど似たようなことをやっているので参考になれば幸いです。

(以下Windowsのサーバ機があるという前提で)

ネットワークやサーバ構成によりますが、質問の1と2については
処理1)〜4)をコンソールアプリ実装し、サーバ上に置いて
タスクスケジューラで定期実行させる方法があります。

自動・手動を切り替えるために画面(GUI)を作成するというのであれば
Webアプリ(ASP.NET)でもWindowsアプリでも可能ですが、
FTPサーバのマシンにIISもインストールされていると思いますので
Webアプリがいいのではないでしょうか。

そのWebアプリ内でタスクスケジューラを一旦無効にしてから
上記のコンソールアプリを起動するとか。
(ローカルリソースのアクセス権に注意する必要はありますが)


もっと良い方法、簡単な方法があるかもしれませんが
あくまでも参考程度ということで。
ぴよこ
会議室デビュー日: 2009/01/26
投稿数: 2
投稿日時: 2009-01-27 10:10
takaciniさんありがとうございました。
takaciniさんの文章をヒントにイメージがだいぶ出来てきました!

その後、調査及び実施内容をまとめてみました。

●『手動』時はWindowsアプリケーション使用

●『自動』時はコンソールアプリケーションを使用し、時間の設定はタスクスケジューラーを使用する予定

●FTP送信処理
 ⇒『WebClientクラス』または『WebRequest/WebResponseクラス』を使用

●圧縮方法
 ⇒『7-Zip32.DLL』使用
--------------------------------------------------------
'7-zip32.DLLの圧縮解凍を行うSevenZip関数を呼び出す方法
'最初に、Imports System.Runtime.InteropServices が必要
'また、宣言する関数にDLLImport属性を付加
Imports System.Runtime.InteropServices

<DllImport("7-zip32")> _
Private Function SevenZip(ByVal hwnd As Integer, _
ByVal szCmdLine As String, _
ByVal szOutput As String, _
ByVal dwsize As Integer)
End Function
--------------------------------------------------------

●ログメール送信先は設定ファイルに記述のみ
電子メール送信の機能を利用するために、System.Web.dll追加
⇒SmtpMailクラス使用



しかし現在、まだ未解決もあり引き続き調査中です。
●『自動』及び『手動』時の切替のタイミングをどうするか
  処理が行われている場合の対応など
  ※ファイルのアップロード時は同じファイルがある場合は
   上書き保存するようになっています
  
上記実施内容でおかしい点や何かアドバイス等あれば宜しくお願い致します。
takacini
常連さん
会議室デビュー日: 2005/12/27
投稿数: 24
お住まい・勤務地: 東京都
投稿日時: 2009-01-28 14:32
引用:
1)データ取得
2)取得したデータをcsv出力
3)CSV出力したデータを7-zip形式で圧縮
4)FTP送信(SFTP)


引用:
●FTP送信処理
 ⇒『WebClientクラス』または『WebRequest/WebResponseクラス』を使用


FTPではなくSFTPでのファイル送信のようですが、
(実装するコード内で)暗号化については考慮されているでしょうか?

他のアプリケーションを使用してもよければ、
SFTPの送信処理の部分だけ「WinSCP」を使うという手もあります。
http://winscp.net/eng/docs/lang:jp

WinSCPはGUIで操作するだけでなく、コマンドラインから実行した時に
バッチスクリプトを指定することでSFTP送信処理を自動化できます。


引用:
●『自動』及び『手動』時の切替のタイミングをどうするか
  処理が行われている場合の対応など


切り替えタイミングというのは何を指しているのかよく分かりませんが、
すでに処理中のところにさらに処理を実行してしまった時の対応は
アプリケーションの二重起動防止で対処すればよいかと思います。
(例えば待機ハンドル系のオブジェクト(Mutexクラスなど)を使用するとか)
1

スキルアップ/キャリアアップ(JOB@IT)