2013年3月21日木曜日

HTML5とSilverLightとWindowsFormとMicrosoftってどうなの?


重い腰をようやくあげ・・・幾つかの業種に向けた数種の業務用ソフト販売を企画検討しているのですが、さて、今どき何を使って作る?




私は今でもバリバリWindowsForm人種で、現在も95%はWindowsForm。従ってMSにべったりオンプレミスのクラサバです。言語としてはC#、TSQLは10%、残り5%が、PHP、HTML、JavaScript、WordPress!?

このオンプレミスですが、プログラマの5倍~10倍の速度で文字入力するオペレーター(人間技とは思えない速さ)が利用する機能を有することが多く、その反応速度から、Webシステムは論外、WPFもダメ、共にこれまで全く興味ありませんでした。結局現在もSilverLightもWPFも全然winFormを超えられず、信頼できるは今もWindowsFormしかありません。

ただ委託が多く、内容も金額も俗世間とかけ離れた世界のため一般向けソフトとしてみると、一般的・・・と言うのに疎く色々調査していますが・・・考えがぐるぐる回って中々纏まりませんね。



当初WindowsFormを採用し、拡張性はクラサバ化、具体的にはSQLServerのエディション別に内容と価格差をつけようと。スタンドアロン、AD、VPSも使えるし、ソフトをインストールしたサーバーごと売っても良いし。
・・ほとんどこれで決まりかけていました。ただこれにはソフト不正COPY防止機能とアップデート機能をどうするか、ClickOnceはフォルダ内がゴミだらけになるので使いたくなく、検討中でした。

が、これだとソフトもそこそこの価格、数十万~します。毎月か毎年の保守料も必要。んー、どうなんでしょ?今どき?と思いましたが、考えてみると主要ソフトって今でもPCへインストールするタイプがほとんど。
Webシステムは、機能や操作性、端折ってる半端なケースばかりで(実現できない、、などなど)、FBも昨年webからスマホネイティブアプリに変更した。
よくよく考えるとソフトとしてのWEBシステムは2013年を見ても全く主流でなく(動作遅すぎ・・表示しかできない・・)、システムやサービスとしてみると、ゆっくり入力+情報系でしか使えない。

ならいっか、そうと思ったが、果たして価格的に売れる?売り物になる?営業に回らせないと売れない代物?
例えば2ケタ数十万のソフトを営業が売り歩いてたところで、それで君の給与稼げるのかな?みたいな。月に数百は売ってもらわないとだけど、日本中駆け回っていたら経費いくら使う?益率は?

んー、、、正直、こんなモデルだとサポートまで入れたら全然儲け出ないのでは?∴これでは商売でなく趣味になってしまいます。詳細に計算してませんが、パッと見、営業使わないと売れない数十万円台のソフトなんかダメでは?としたら・・・そもそも、、、みたいな。
あらら・・・・


そこでマイクロソフトのクラウドなんかはどうなの?そんな感じで調べ始めました。富士通はazureを自社ブランドとして日本国内にサーバーを置き商売を始めたので、これ使えるのでは?と。





と、ここで幾つかのアーキテクチャを調べました。

まず見たのがHTML5。夢があり期待は大きかったのですが、まだダメですね、と言うか2013年現在では全然xダメ。∴却下。とても残念です。

WEBは?WindowsFormと比べると画面見劣りしすぎで、よくある速度もユーザifもどっちつかずの中途半端で、、googleのapps位の事が出来れば別だけど、似たような物はよく見るけど開発に¥かかってそうな割には操作性悪くバグまで残っていたりと、日本の普通の会社レベルでは無理、∴却下。

あと、何がある?adobe?無理、と言うかムリ。
すると、SilverLightしか残ってない・・・。azure抜きにしても、込み入った事をWebでやらせるなら、他に選択肢がない?

しかし今さら流行ってもない、MS本国でも最近あまり力入れてないSilverLight、どうなんでしょ???
国内の事例見ても、ちょぼちょぼ位しかないし、、と言うか、日本でこれ使った商売ソフト売ってたなんて、、、そちらに驚いた。




んー、WindowsFormなのか、SilverLightなのか、その他の何かなのか、結局結論でず。 
ブラウザで動く普通のソフトがもう少しまともだったならいいのですが、10年たっても大して変わらないですね・・・Javaも結局は結構¥かかるし、PHPはHPならいいけど業務ソフトをスクリプト言語で!?


グダグダ記事ですが、とりあえず何かを使って実現します。
次は出来た!と発表したいですが・・・文章が長い分だけ悩みも長く・・

(続く・・)





2013年3月10日日曜日

Visual Studio 2010のVisualStudioインストーラーでCrystal Reportsのlog4net.dll関連エラーのためインストーラーが作成できない


クリレポ 2017.8 最新記事あり → https://oyaji-pgm.blogspot.jp/2017/08/20178-visual-studio-2017-2015-2013-2012_13.html


引き続きCrystal ReportsをVS2008→VS2010化しているのですが、これは業務システムが複数あるため。
VS2010化している理由はSQL SERVER 2012化対応することで問題発生するVisualStudioと.NetFrameworkとクリスタルレポートを使った業務システム の問題があるから。
今後の事を考え、クエリ作成でウィザードを使いたいが故、一つずつクリレポをVS2010化しており(ついでに.net4化)、デバッグ実行ではこれまでの記事の対策で、特にどれも問題なくレポートが出力されます。




しかし今度はセットアップを作成する所で引っかかってしまい、使用しているセットアップはVS2012で削除されたVisualStudioインストーラー。
あるシステムでは問題なくセットアップファイルは作成でき、しかし別のシステムではlog4net絡みのコンパイルエラーが発生しセットアップファイルが作成できない。


原因はlog4net.dllとエラーが出ます。 もういい加減ウンザリですよ、クリレポとlog4net。


エラー: ファイル 'log4net.dll' は 'AMD64' を対象にしていて、プロジェクトのターゲット プラットフォーム 'x86' との互換性はありません。
警告: ファイル 'log4net.dll' は 'x64' を対象にしていて、プロジェクトのターゲット プラットフォーム 'x86' との互換性はありません。



-------------------------------------
 セットアッププロジェクトで、コンパイルOK、コンパイルNG、となるプロジェクトの差異
-------------------------------------

① セットアッププロジェクトのTargetPlatform
 どちらもx86

② コンパイルが普通に通るセットアッププロジェクト、エラーとなるセットアッププロジェクト、log4netの差異(log4netは「見つかった依存関係」にある)
 コンパイルOKプロジェクト)SoucePath C:\Windows\assembly\GAC_32\log4net\1.2.10.0・・・・
 コンパイルNGプロジェクト)SoucePath C:\Windows\assembly\GAC_64\log4net\1.2.10.0・・・・



③ システムにインストールされている2つのlog4net.dll情報(C:\Windows\assembly)
 1.プロセッサのアーキテクチャー:x86、version:1.2.10.0
 2.プロセッサのアーキテクチャー:AMD64、version:1.2.10.0

上記を見れば、確かにエラーには納得。
②のOKプロジェクトはGAC_32、NGプロジェクトはGAC_64
NGプロジェクトはどうやら③-1を見ていないよう。ターゲットプラットホームはx86なので、そりゃエラーになるわな・・・と言う事は分かりました。


しかし問題は②
何故に「見つかった依存関係」に出現するlog4net.dllに違いが発生するのか?この原因が全く不明で、これ以上調べてもラチがあかないので、よくある無理やり的対処をすることにしました。


log4netを除外します。これでコンパイルを行うとエラー回避出来ます。当然log4net.dllは除外したのでパッケージングされません。
また別途ワーニングが出ますが無視。Framework.2.0でも古すぎて嫌なのに、MDAC2.8などWindows7時代にそんなもの使いませんよ。(クリレポ内部では使っているのかも知れないが?いい加減腹が立ってきたので無視 = 無視して動いて問題出ないなら本番環境でも無視します、私は)
後程出てきますが、無視してインストール実行できたので、依存関係にあるクダランDLLが使っているのでは?だったら無視。.net2.0やmdacなんてインストールしたくないですから。

 警告: 選択した 'SAP Crystal Reports Runtime Engine for .NET Framework' 項目には 'Microsoft.Net.Framework.2.0' が必要です。[必須コンポーネント] ダイアログ ボックスで足りない必須コンポーネントを選択するか、または足りない必須コンポーネントのブートストラップ パッケージを作成してください。
 警告: 選択した 'SAP Crystal Reports Runtime Engine for .NET Framework' 項目には 'Microsoft.Data.Access.Components.2.8' が必要です。[必須コンポーネント] ダイアログ ボックスで足りない必須コンポーネントを選択するか、または足りない必須コンポーネントのブートストラップ パッケージを作成してください。



エラー回避できたことでインストーラーが出来ました。警告は無視したので.net2.0もmdac2.8もパッケージングされません。これをHyper-Vで構築した真っ新なWindows7へインストール。

インストーラーでは.NetFramework4とSAP CrystalReportsRuntimeEngin for .NetFrameworkを必須コンポーネントとしているので、DLとインストールが始まります。


こちらの思惑通り、最新の13.0.5ランタイムがDLインストールされたようです。

こちらは.net、参考までに

真っ新なWindows7に下記インストールされました



これで業務システムを起動し、CrystalReportViewerへレポートを作成表示させてみます。すると問題なくレポートが出力され、印刷も、エクスポートも問題なく完了しました。


log4net=クリレポがログ出力しなければならない事態になった時、現状では何らかの問題が生じるかもしれませんが、業務プログラム作成者側はそんな情報を必要としません。

よってこれでクリレポVS2010化は全て終了としますが、ホント嫌になりました、SAPのクリレポ。疲れ果てました。。





◆◆◆◆◆◆ 再度注意!◆◆◆◆◆◆

前にも書いた.NetFramework4.0以降でCrystalReportを使う時の必須指定。これを忘れると必ずエラーが出ると覚えておいた方が良いです。これはVS2012対応のSupport Pack 5(v. 13.0.5.x)を使用しても改善しません。私は早々に忘れ、また嵌りましたメ

何故なら.NetFramework4や4.5のみインストールされた環境では.NetFramework 2.0 向けにビルドされたアプリケーションを実行出来ない(エラーとなる)ためで、これは上記ワーニングにもあったよう最新のSP5CrystalReportも、.NetFramework 2.0向けに作られているのだと推測できます。


  DataTable tb = ・・・・
  CrystalReport1 cr1 = new CrystalReport1();
  cr1.SetDataSource(tb); ←ここでエラー発生する

CrystalDecisions.CrystalReports.Engine.Engine.DataSourceException
不明なクエリー エンジン エラー ファイル C:\\Users\\xxxx\\AppData\\Local\\Temp\\temp_....{....}.rpt のエラー :不明なクエリー エンジン エラー。"}
errorID:CrystalDecisions.CrystalReports.Engine.EngineExceptionErrorID.DataSourceError



<< 対策 >>
app.configのstartup属性に必ずuseLegacyV2RuntimeActivationPolicy="true"を指定する


<startup useLegacyV2RuntimeActivationPolicy="true">


useLegacyV2RuntimeActivationPolicyとは、.NET Framework 2.0 のランタイムのアクティブ化ポリシーを有効にする
http://msdn.microsoft.com/ja-jp/library/vstudio/bbx34a2h(v=vs.110).aspx


とにかく.net4や.net4.5でクリレポを使う場合は、必ずapp.config の startup 属性にuseLegacyV2RuntimeActivationPolicy="true"をつけておけば間違いない、と言う話です。

◆◆◆◆◆◆ 再度注意!◆◆◆◆◆◆









余談ですが・・

これまでSystem.Transactionsを使って複数データ出力する場合、2つ目のoutputでトランザクションが昇格してしまい分散トランザクション扱いになるため、これまでPC側でMSDTCの設定が必要でした。(DTCサービスを起動させておくのとは別に、ネットワークDTCアクセス:PCのコンポーネントサービス.ローカルDTC.セキュリティータブを設定する事)

@ITでは分散トランザクションに昇格させないための工夫など記事になっていましたが。
http://www.atmarkit.co.jp/ait/articles/0804/25/news169_4.html
・・この記事を見る限り、ネットワークDTCアクセス設定をせず問題なくトランザクションが正常終了すると書いてありますが?実際はXPでは上手くいかなかったぞ・・

しかし・・・Windows7では特にネットワークDTCアクセスを設定せず分散トランザクションを走らせてみても正常終了します。当然DTCサービスは動いていますが。

なんででしょう?仕様が変わった?分散トランザクション扱いでなくなった?

調べてないのでよく分かりませんが、楽になったのならそれはそれで良いのですが、不思議?と言うだけの話でした。。









2013年3月7日木曜日

VisualStudio2012にSAP Crystal Reports が対応!(祝)


クリレポ 2017.8 最新記事あり → https://oyaji-pgm.blogspot.jp/2017/08/20178-visual-studio-2017-2015-2013-2012_13.html


VisualStudioでの帳票レポート制作にやっと光が!(少しだけね)

非常に困っていました、VS2012となった現在これからは一体何を使ってレポートを作れば良いのか?
最近ずっと方向性探していて、金を出すならクリレポ自体それ程良いレポートシステムとは思えないので他の製品を分析していたりと、しかしどれも大して変わらず、なら仕方なく使い慣れたクリレポのパッケージ購入しないとダメ?と半ば諦めていたら、、


SAPが密かに!?VS2012対応のクリレポ作っていたよう!!(素晴らしい)



VS2012対応版は既に2013年の1月よりDL可能になっており、リリース予定告知も2012/9に済んでいたよう・・メ






情報の詳細、DLについてはこちらのSAP社のページへ http://scn.sap.com/docs/DOC-35074
※SAP社クリレポVisualStudio情報TOPページはこちら http://scn.sap.com/community/crystal-reports-for-visual-studio

その内容を簡単に書くと・・・

1.Visual Studio 2012 and 4.5 .NET Framework runtimeに対応
2.OS: Windows 7 SP1, Windows 8, Windows 2012
3.DB: SQL Server 2012, HANA SP5
4.ブラウザ:  Firefox 16, IE10 (limited support; more information forthcoming soon)
5.Other technology: IIS 8, Flash 11

んー、素晴らしい(祝!) 

呼び名は SAP Crystal Reports, developer version for Microsoft Visual Studio と言うようです。
またどうやら今後はサポートパックと言うもので、新プログラムをリリースするよう。なので今回のVS2012に対応したクリレポも Support Pack 5 (v.13.0.5.x) と言う名前で出てるのでご注意!


・インストール

さっそくVS2008、VS2010、VS2012、CR for VS 2008、CR for VS 2010 の入ったWindows7PCへインストールしてVS2012で使ってみました。

・インストールその1 developer version

1.まず、developer version(CRforVS_13_0_5.exe)のインストール

 上記ページのSAP Crystal Reports, developer version for Microsoft Visual Studio SP5をインストール
 すると・・・いつものエラー発生(要するにSAPはインストーラーバグを直す気がない)

VisualStudio2012にSAP Crystal Reports が対応1

インストールエラーの対処方は過去記事へ → CrystalReports2010インストールエラー 2753
 ※記事中のCRforVS_13_0_1.exeをCRforVS_13_0_5.exeと置き換えて読む

 2.developer versionインストール完了

次の名前でインストールされました

 SAP Crystal Reports, developer version for Microsoft Visual   Ver13.0.5.891

名前紛らわしいですね、先祖返りしてしまったみたいで、でもVS2012版です

VisualStudio2012にSAP Crystal Reports が対応2

・インストールその2 ランタイム

1.DLしてインスト
 32bit版と、64bit版の2種類あるようです。私は64bit版をインスト。
 SAP Crystal Reports, developer version for Microsoft Visual Studio SP5 - MSI (32bit)
 SAP Crystal Reports, developer version for Microsoft Visual Studio SP5 - MSI (64bit)
こんな感じ
VisualStudio2012にSAP Crystal Reports が対応3

2.ランタイムインストール完了

VisualStudio2012にSAP Crystal Reports が対応4

画像は上のピンクと同じものです。
ランタイムに限っては、上書きインストールされるようですね、インストール日付、サイズ、バージョンに変化が見られます。


・これで環境は整った???

実は今回、DLページにあるマージモジュールSAP Crystal Reports, developer version for Microsoft Visual Studio SP5 MSM (32 bit only)の配置、特に行っていません。VS2005のときにはかなり厳密にやったのですが、現在まっさらな環境がなくまっさらインストールできないためVS2010、VS2008で使ったマージモジュールが入った環境へインストールしています。
要するに・・・中途半端なのですが、実際にVS2012で使用して不具合でていないので、出たら対処します。
※客先PCへインストールしたときなどに不具合出そうですね

・参照設定
 クリレポには3つ必要ですが(WindowsForm使用時は4つ)、これは通常自動で設定されるはず?
 CrystalDecisions.CrystalReports.Engine
 CrystalDecisions.ReportSource
 CrystalDecisions.Shared
 CrystalDecisions.Windows.Forms

・.Netフレームワーク
 もちろん、4.5、にしてテストしました。今のところ特に問題出ていません。
VisualStudio2012にSAP Crystal Reports が対応!(祝)9



と言う感じです。
最後が半端になりましたが(マージモジュール)、問題出たとき対応します。

※もし上記だけで上手く動かない場合は、下記の対応が必要なケースもあると思われるのでご参考に
→ Visual Studio 2008からVisual Studio 2010へのアップグレード(Crystal Reportsを含む)






↓ ここからは上記と大して関係ない話です







 ・VisualStudio2012+.NET Framework4.5対応版 SAP Crystal Reports を使ってみた

1.VS2008対応のWindowsFormソリューションしかなかったので、ソリューションをVS2012にアップグレード

・VSのアップグレードに関して言えば、
 ソリューションファイルとプロジェクトファイルがアップグレードされるだけで、基本的には問題なしです
 ただ今回のようCrystalReportsなどの他社ソフト(バンドル)を使っている場合に問題発生する可能性あります
 また利用コンポーネントの対応バージョンなど、その程度と思います
 (Webプロジェクトに関しては専門外なのでノーコメント)
VisualStudio2012にSAP Crystal Reports が対応5
2.アップグレードメッセージ
VisualStudio2012にSAP Crystal Reports が対応6

MSのインストーラーがなくなりましたね、これは仕方ないので製品版がぼったくり価格のInstallShield 限定盤、これ使います。

余談)
InstallShield の日本の販売元は何故あんなにぼったくり価格で販売しているのか?完全に人の足元見てますよね。どうもこの輸入代理店と言うのは嫌いですね、どんな業界のどんな商材の輸入元も、自分たちだけ儲かる仕組みで作られていますし販売店を泣かせてますから、、イヤと言うより敵ですわ。

3.変換完了
VisualStudio2012にSAP Crystal Reports が対応7
VS2012からブラウザに情報が出ますね。インストーラーがエラーとなっています。他は特に問題なし。

4.既存レポートを開く
VisualStudio2012にSAP Crystal Reports が対応8
いつものメッセージが表示されるので、はい、を選択して変換


・・・・


と、色々やってますが、特に問題は出ていません。
もちろん.NET Framework 4.5で(プロジェクト.プロパティー.アプリケーション.対象のフレームワーク)

が、動作がかなり遅く重い感じで動きます。これは実行時も同様で、データ表示までにこれまでの数倍がかかる印象。クリレポの最新版は、チューニングが「未」のようです。それにVS2012側にも色々問題あるようですし。

もしやWindows7に入れたから遅い?そう思ってWindows8下でVS2010、VS2012、クリレポ2010の入ったPC(i7、raid1SSD=超速)で同じことをしてみましたが、結果は変わらず。Win8では余計遅くなった気もしましたメメ



結論は、
私的判断では、まだVS2012(CrestalReportsを含む)へ移行しません。この動作の遅さからして、問題発生し嵌った場合の対処が無い可能もあると感じるので危険。よってVS2010+クリレポ。あと半年、1年はこの組み合わせになるのかな?と思っています。ただ新し物好きなのでちょこちょこさわってみますけど。






2013年3月5日火曜日

SQL SERVER 2012化対応することで問題発生するVisualStudioと.NetFrameworkとクリスタルレポートを使った業務システム


(この記事は、現在進行形のため随時追加変更される可能性あります)


(2013/3/4現在)


あるところでDBをSQL SERVER 2005からSQL SERVER 2012化しようと、.NetFramework(VisualStudio)で作成された各種システムに問題が出ないか調査していますが、VisualStudio2008で問題発生。
ちなみにSQLServer2012はSP1も出たことでベンダー各社積極的に利用を推進しています。サーバーOS、サーバーソフトウェアはSP1リリース=積極販売開始の合図なので、覚えておいて良いと思います。


 


『 稼働中の各種システム 』
・フレームワーク: .NetFramework3.5
・開発ツール:VisualStudio2008
・テンプレート:WindowsForm(問題に関しては他のテンプレート、例えばWebも同様と思われる)
・DB:SQL SERVER 2005
・クリスタルレポート2008

『 変更された環境 』
・DB:SQL SERVER 2012(DBの互換性レベル110:SQL Server 2012)

『 問題発生箇所 』
・テーブルアダプターのクエリを作るウィザードでエラー発生
 エラーメッセージ:「このサーバーバージョンはサポートされていません。サポートされているサーバーはMicrosoftSQLServer2005までです。」



SQL SERVER 2012化対応することで問題発生するVisualStudioと.NetFrameworkとクリスタルレポートを使った業務システム


・DBの互換性レベル90:SQL Server 2005にしても改善しない


『 対応 』
・VisualStudio2010化する(クリレポがなければVS2012化する=新しい方が後々良い)
 これしか方法がないのでそうします。が、こうするとクリスタルレポートのマージモジュールのバージョンに・・・。クリレポついては他の記事を参照ください。
Visual Studio 2008からVisual Studio 2010へのアップグレード(Crystal Reportsを含む)
CrystalReports2010インストールエラー 2753
VisualStudio2012にSAP Crystal Reports が対応!(祝)



「 後記 」
 くだらん!そんな話か・・・そう思う方は多いと思います。単純にTableAdapterやウィザードを使わず開発すれば良いだけの話。実際ウィザードやTableAdapterを使っている共同開発作業現場があるか?昔は皆無。
 しかし最近ではこの手のMS側問題がどんどん改善されTableAdapterとウィザードが十分業務で使えるレベルにまでになっています(VS2010やVS2012)。最近の私は積極的に使います。(トランザクションには使えん・・)。
理由は、
 簡単に済ませて良い画面などはウィザード+TableAdapterを使うことで、工数が1/100程に圧縮できる可能性があるので、手作りで作っていては儲かりません。これは画面1枚5分で完成する計算です。




本日現在こんなところです。つまんなかったですか?、笑




「ちなみに」
 バイナリーレベル、つまり、WindowsFormを使ったシステムですが(Webでも同様と思われる)PCへインストールした状態で実行しても特に動作に問題は出ていません(DBi/o、クリレポ、共に)

「後記2」
 既にクリスタルレポートはVS2012からなくなったが、→ 使えるようになった!(祝)、VisualStudioや.NetFrameworkなど、こういった他社ツール=ブラックボックスのソフトウェア=利用しているこちら側で変更不可能なソフト は商売が絡むので割と頻繁にバージョンアップされるが、可能であれば顧客に随時予算を使ってもらいツールのバージョンアップ時にシステムのバージョンアップを続けた方が良いよう感じます。(規模によりますが、、、どちらにしろこのご時世では無理かな?)
 理由は、フレームワークや他社ブラックボックスソフトが変更された場合にどのような問題が発生するかわりと見えてきます。よって2回目以降のバージョンアップが割としやすい。
 数年後のある時点でバージョンアップする場合、かなり苦戦すると思います。その時点で新システムへ移行するならその方が儲かりますからそれはそれで良いですが。




以上