問題タブ [layered]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
architecture - プロジェクトを構成する最良の方法は何ですか?
私は自分のプロジェクトをどのように構成すべきか疑問に思っていました。
他のプロジェクトで (再) 使用されているプロジェクトがいくつかあります。
つまり、私たちのデータ プロジェクトとモデル プロジェクトは、1 対多の他のプロジェクトで使用されます。
私が実際に知っておくべきことは、このタイプのプロジェクトをどのように構築するか、どのように名前を付けるのが最善かということです。
標準の 3 層アプリケーションでは、次のようになります。
- DAL、DataAccessLayer、データ...
- モデル、ビジネス オブジェクト、BOL ...
- UI、ビュー、...
他のアイデアはありますか?
私が働いている各会社では、組織化の方法が異なります。他より優れているものはありますか? どちらを使用し、どちらを好みますか?その理由は?
どうも!
windows - レイヤードウィンドウを使用して滑らかなウィンドウの境界線を作成する
ほとんどのウィンドウにさまざまな丸みを帯びたエッジを持つスキンアプリを開発しています。私はウィンドウ領域を使用して非長方形の形状を定義していますが、ピクセルは完全に不透明または完全に透明にしかできないため、ほとんどすべての人がギザギザのエイリアシングに反対しています。
レイヤードウィンドウを使用してこれに対する解決策を考え出しましたが、これがさまざまなシステムで実行される(そしてうまくいけばうまくいく)ことを確認したいと思います。私がしていることを最適化します。階層化されたウィンドウにはwin2000以降が必要ですが、それは他の理由ですでに必要であるため、問題ありません。いくつかの基本的なテストから、Vistaでは問題ないように見えますが、それはまだ保証されていません。
私がしていることは次のとおりです。私はウィンドウを持っており、それをAと呼び、コントロールとテキスト、およびそのウィンドウを構成するものは何でもあります。ウィンドウAの子としてウィンドウBがありますが、WS_CHILDではなくWS_POPUPスタイルであるため、Aの領域の外側に配置でき、Aのコントロールの上に描画されます。ウィンドウBにもWS_EX_LAYEREDスタイルがあり、初期化時に、ULW_ALPHAフラグを使用してUpdateLayeredWindowを呼び出し、アルファチャネルを使用して32ビットビットマップを使用してソースDCを呼び出し、ピクセルごとのアルファで描画します。
ウィンドウBのソースDCで使用されるビットマップは、ウィンドウの背景から完全な透明度にスムーズにブレンドしたいウィンドウの境界の周りのピクセルにすぎません。2つのウィンドウのアプローチ全体をスキップし、単一のレイヤードウィンドウを使用します。ただし、UpdateLayeredWindowを使用している場合は、通常のWM_PAINTメッセージなどの代わりに、メモリに保持されているバッファーから取得され、取得しようとします。インタラクティブな子コントロール(および子ウィンドウ)をうまく機能させることは、非常に面倒なことのように聞こえます(そして、おそらくすべてに対して機能するわけではありません)。
つまり、基本的にはウィンドウAであり、すべての子コントロールなどがあり、ウィンドウBはその上に直接浮かんでいて、滑らかな境界線を描画しています。WM_MOVEメッセージなどに応答するために、ウィンドウBを一緒に移動し、ウィンドウBを無効にして、フォーカスや入力を取得できないようにします(ウィンドウBの一部、たとえば大部分など、不透明度がゼロの部分があるため、クリックはすでに通過しています。その内部の部分の、すでにピッキングから除外されています)。
キックの場合、これがどのように見えるかを示し、私がもう少し良い意味を示しています。
- ウィンドウAの背景。完全に透明なピクセルをマスクするためにシアンが使用されています。
- ウィンドウBのビットマップ。アルファチャネル(もちろん写真にはありませんが、jpgです)があり、黒以外のピクセルを透明にブレンドします。
- 結合された結果
だから、それは機能しますが、それが本当にこれを行うための最良の方法であるかどうかはわかりません。2つの質問があります:
- これは許容できるように聞こえますか、それとも明らかにひどいことはありますか?
- 現在は機能しているため、ウィンドウのサイズ(最大1024x768)のオフスクリーンバッファを使用しているようですが、不透明度データがゼロ以外のピクセルはごくわずかですが、オーバーヘッドに見合う価値があります。そして、それを別々の境界部分に分割し、それらを一緒に合成するという追加の複雑さ?
architecture - レイヤード アーキテクチャの同じレイヤーにあるモジュール
レイヤード アーキテクチャの理論では、同じレイヤーに複数のモジュールを配置できます。このモジュールは互いに相互参照できますか? 技術的には可能です。.NET を使用していますか?
architecture - ntier アプリケーションでデータを渡す
n 層アプリケーションのレイヤーにデータを渡すにはどうすればよいでしょうか? 私は3つの異なる方法を計画しました。
A) ジェネリック .net オブジェクト ジェネリック データ テーブル、ハッシュテーブル、ジェネリック データセット、文字列、int など... 次に、データセットを使用して、UI レイヤーに送信されるビジネス オブジェクトを埋めます。
代替テキスト http://img11.imageshack.us/img11/460/generic.png
http://dabbleboard.com/draw?b=eiu165&i=26&c=54eef6f1ac01f03c85919518f4a24e798e57e133
Pro-追加のレイヤーは必要ありません Con-ビジネスレイヤーで一般的なデータセットとテーブルを操作する必要があります
B) 他のレイヤーが参照するエンティティ レイヤーを使用する。このレイヤーには、厳密に型指定されたデータセットまたはプレーン オールド C オブジェクトのいずれかが含まれます。オブジェクトはほとんどがコンテナ データで、ロジックはほとんどありません。これらは、UI レイヤーに送信されるオブジェクトと同じです。
代替テキスト http://img8.imageshack.us/img8/6454/entities.png
http://dabbleboard.com/draw?b=eiu165&i=6&c=d0c2b346894a96b12bd3867f630e474a2af098fa
すべてのレイヤーで同じクラスを使用するプロ作業 すべてのレイヤー にentities.dllへの参照を追加する
C) DataAccess Layer で定義されたデータ転送オブジェクト (コンテナ オブジェクトのみ) を使用します。次に、これらのオブジェクトを使用して、UI レイヤーに送信されるビジネス オブジェクトを埋めます。
代替テキスト http://img43.imageshack.us/img43/1236/transferp.png
http://dabbleboard.com/draw?b=eiu165&i=27&c=f886efa3f9d5eb4b45ddb02361c79cdcdaec0a9b
プロ- ビジネス層は一般的なクラスで 動作する必要はありません 2 種類のオブジェクトを扱う場合、転送オブジェクトでビジネス オブジェクトをハイドレートする必要があります
私たちは職場で議論を行い、コミュニティがどう考えているかを知りたがっていました。ダブルボードへのリンクも追加しました。編集ではなくコピーして作成してください。
ありがとう
layered - N層アーキテクチャとN層アーキテクチャ/設計
N層およびN層のアーキテクチャ/設計とはどういう意味ですか?
N層アーキテクチャとN層アーキテクチャ/設計に違いはありますか?
はいの場合、違いは何ですか?
c# - DAレイヤーからデータを取得できません。何をすべきか?
C#アプリケーションをレイヤーに分割しながら、次の方法でレイヤー間の循環依存の問題を解決しました。
DAレイヤーのクラスMyClassDAとアセンブリ自体を見てください。
データアクセス層がMyClassタイプを認識していない場合、MyDA.Get()メソッドはMyClassタイプのオブジェクトをどのように返すことができますか。
この設計が効率的でない場合、どうすれば変更/変更できますか?
windows - 透明なウィンドウ ダイアログと描画プリミティブを、ストリーミング ビデオを描画しているウィンドウの上に残すにはどうすればよいですか?
ストリーミング ビデオが描画される 1 つのウィンドウを含む activeX コントロールがあります。さまざまな方法で透明または半透明にした別のウィンドウで作成した別のダイアログがあります (つまり、SetLayeredWindowAttributes(...) をダイアログの Layered プロパティ [アルファ ブレンディング用] と一緒に使用するか、透明を設定します)。財産)。
さらに、さまざまな方法を使用して、ダイアログのウィンドウが常にストリーミングビデオウィンドウの上に描画されるようにしようとしましたが、うまくいくとは証明されていません。ダイアログにボタンがある場合、または LineTo(...) 呼び出しで透明な表面に描画する場合、それらはビデオの上に残りません。SetWindowPos を使用して 2 つのウィンドウの z オーダーに影響を与えようとしましたが、「TopMost」などのダイアログ ウィンドウのプロパティを変更しようとしましたが、役に立ちませんでした。
ストリーミング ビデオにオーバーレイされたウィンドウに対してこのようなことを試み、ストリーミング ビデオの後に常にフロント ウィンドウを描画するために z オーダーを取得した人はいますか?
更新: 02/10/10 - LWA_COLORKEY を使用して SetLayeredWindowAttributes(...) で WS_EX_LAYERED プロパティを使用してみましたが、私が探していたものを達成しました。階層化されたプロパティは WS_CHILD スタイルでは使用できないため、このソリューションでは、ビデオを含むウィンドウに対するオーバーレイ ウィンドウの位置を管理する必要があります。さらに、私が排除しようとしている他の奇妙な点がいくつかあります。たとえば、ビデオを含む ActiveX コントロール ウィンドウが IE タブに埋め込まれていて、別のタブに切り替えると、オーバーレイ ウィンドウのコントロールが新しいタブの上に残ります (WS_POPUP スタイルが使用されている場合)。これに対処する代替手段があるかどうかをまだ調査してから、スイッチを決定し、ウィンドウの可視性を非表示にします。
windows - ブラウザウィンドウコンテナにActiveXコントロールがある場合、ユーザーがタブをactivexコントロールから変更したことを検出するにはどうすればよいですか。
IEブラウザコンテナに配置されるActiveXコントロールがあります。コントロールは、WS_POPUPプロパティとWS_LAYEREDプロパティが有効になっている別のダイアログウィンドウを作成し、SetLayeredWindowAttributes(...)関数を使用して、コントロール上でカラーキーの透明度とアルファブレンディングを実行できるようにします。
WS_LAYEREDプロパティをWS_CHILDプロパティと組み合わせて使用することはできないため、ウィンドウの可視性の管理は自動ではありません。オーバーレイウィンドウの表示を変更できるように、ActiveXコントロールが表示されなくなったとき(つまり、ブラウザタブが変更または最小化されたため)を検出できる必要があります。
既存のウィンドウメッセージ(WM_)のいくつかを使用してこの変更を確認しようとしましたが、IEブラウザタブが変更されたときにメッセージが表示されるのを見ていません。これらの可視性の変化が起こっているときにキャプチャするための最良の方法を誰かが知っていますか?
php - LAMP - PHP でレイヤード PDF を作成するツール
こんにちは、LAMP で階層化された PDF を作成するために使用できる優れた安価なツールを知っている人はいますか? 私はPDFLib+PDI8について知りましたが、それは1590ユーロです...しかし、私はより安いオプションを探しています..しかし、そのPDFLib+pdi8と同じレベルでなければなりません。
よろしくお願いします Pravin P
.net - レイヤード アーキテクチャと静的メソッド
実装を計画している 3 層アーキテクチャについて提案が必要です。
シナリオ
ASP.NET c# 3.5 環境で作業しています。
DLHelper: データベースからデータを取得するメソッド。
DAL : DLHelper クラスを使用してデータベースからデータを収集するメソッドが含まれています。この層のほとんどのメソッドはページ レベル オブジェクトを参照していないため、静的と宣言できます。
BL : DAL レイヤーと同様に、ほとんどのメソッドは他のページ レベル オブジェクトのページを参照していないため、静的と宣言できます。
UI レイヤー: 上記のシナリオのように、UI レイヤーから BL レイヤーへの呼び出しは次のようになります。
BLClass.メソッド -> DALClass.メソッド
私が知り たいのは、この標準化の方法です。同僚との話し合いによると、対応する BL/DAL レイヤーのオブジェクトが必要です。しかし、まだもっと説得力のある答えを探しています。