نمایش وب کم در سایت با کمک فلش؟

phoenix

Member
سوال خیلی جامعی است، ببنید Flashcom server یا حالا در نسخه جدید اون Flash Media Server یک نرم افزار بسیار قدرتمند تحت سرور است که در مفاهیم شبکه و application های چند لایه در قسمت Business Logic قرار می گیرد، بدین معنی که این application server قادر به انجام عملکرد های منطقی، ارتباط با database و ارتباط با لایه presentation logic می باشد. منظور از لایه presentation logic برنامه هایی است که در واقع user با آنها ارتباط برقرار می کند مانند کد HTML و یا کد های ActionScript.

flashcom server به منظور برقراری ارتباطات همزمان (real-time) بین client ها ایجاد شده است و از آن می توان برای ارتباط مستقیم بین flash player های اجرا شده بر روی کامپیوتر local استفاده کرد. این ارتباط می تواند یه صورت data و یا stream (مانند صوت و تصویر) باشد. دقیقا مصداق نرم افزار های چت: امکان ارتباط صوتی، تصویری، متنی و یا حتی ارسال فایل میسر می باشد.

لازمه بگم که flashcom server تنها یرای سرویس دادن به flash player ایجاد شده و connect کردن به آن به طرق دیگر یا از طریق نرم افزار های دیگر امکان پذیر نیست (استثنا : macromedia director)

برای ایجاد ارتباط بین flash و flashcom نیاز به نوشتن کد ActionScript در سمت client و سرور است. flashcom از زبان ActionScript پشتیبانی می کند گرچه API یا به طور کلی دستورات ActionScript سمت سرور تا حدی متفاوت از آن چیزی است که در سمت client وجود دارد، ولی در سمت client کلاس های خاصی برای کار با flashcom وجود دارند مانند NetConnection یا NetStream یا SharedObject و ...

برای ایجاد ارتباط باید یک connection با سروری که flashcom بر روی آن نصب است روی پروتکل RTMP و به پورتی که مورد نظر است ایجاد کرد و با استفاده از method ها، ShradeObject ها و... اطلاعات را بین سرور و client و یا بین client ها رد و بدل نمود (RTMP پروتکل ابداعی macromedia برای ارتباط فلش به flashcom می باشد)

سعی کردم به صورت خیلی خلاصه و شماتیک شرح بدم اگر مورد خاصی هست بگید تا جزئی تر توضیح بدم
 

amir_s

Active Member
شما که توضیح می دید دیگه جای سوال نمی مونه !
منظورم من همون ارتباط از طریق پروتکل RTMP بود و پورتش ! و البته سوال دیگه ای هم داشتم که شما جواب دادید ...

راستی امنیت کار چه طوره !؟ یعنی نمیشه از طریق برنامه های دیگه به اون پورت وصل شد و کار های مخرب انجام داد ؟
چون امنیت خود فلش یه مقدار پایینه و اگر بخواد username و password ی هم برای connect وجود داشته باشه بالاخره باید در فایل Flash باشه که خوب امنیت جالبی نداره !
 

phoenix

Member
بستگی داره که چه مدل امنیت مد نظر باشه. در کل میتونم بگم که از نظر امنیت flashcom بسیار قوی است که در ادامه توضیح میدم.

ببنید اصولا همیشه باید سعی بشه که عملکرد های منطقی ساده به سمت client و عملکرد های دارای سطوح امنیتی به سمت سرور انتقال پیدا کنه. مثلا چک کردن درست بودن یک آدرس ایمیل و یا شماره یک credirt card در سمت client با استفاده از ActionScript و یا JavaScript در Browser به راحتی امکان پذیره و کار کاملا منطقی است ولی تست یک username یا password و یا valid بودن یک credit card باید 100% در سمت سرور انجام بشه بنابراین نمیشه این قضیه را به حساب عدم امنیت فلش گذاشت چون عملکرد های دارای سطح امنیتی اصولا مربوط به Presentation Logic نمیشوند و هماتطور که قبلا گفتم فلش در لایه Presentation Logic قرار دارد.

مطلب دیگه اینکه هرچه تعداد سطوح یک application چند لایه زیادتر شود و client در سطح دورتری نسبت به Database قرار داشته باشد امنیت application بالا تر میرود:
مثلا در یک applet امکان ارتباط با databse بر روی سرور برای چک کردن یک password وجود دارد، در این حالت application ما از 2 لایه تشکیل شده است: لایه شامل applet و لایه شامل database، ولی یک applet به راحتی مانند یک swf قابل decompile شدن است و در این حالت می توان از طریق برنامه های جانبی به database وصل شد و با امتحان کردن password های random احتمالا سیستم را crack کرد. حالا سیستم دیگری مانند چک کردن password از طریق یک صفحه HTML و با استفاده از یک application server مانند ASP یا ColdFusion را در نظر بگیرید، در این حالت application از 3 لایه تشکیل شده است بنابراین client از database و آدرس آن کاملا بی اطلاع است و نمی تواند به صورت مستقیم به آن متصل شود چون این کار از طریق application server و در سمت سرور انجام می شود به علاوه application server این امکان را می دهد که سیستم را از crack شدن احتمالی محافظت کنیم بدین صورت که مثلا اگر 3 بار یک password اشتباه وارد شد از client بخواهیم یک کد random را هم در کنار password وارد کند (مانند سیستم login ایمیل yahoo)
با وجود flashcom تعداد لایه ای application به 4 یا بیشتر می رسد بدین صورت امنیت به مراتب بیشتر می شود زیرا به flashcom فقط و فقط از طریق flash می توان connect شد به علاوه امکان جلوگیری از crack شدن احتمالی سیستم با استفاده از محیط قابل برنامه ریزی flashcom وجود دارد برای مثال وقتی client اقدام به وارد کردن password کرد ابتدا در flashcom می توان connection هایی از غیر از domain مورد نظر را حذف کرد، سپس در صورتی که از یک IP مثلا بیش از 3 بار password اشتباه وارد شده بود کد دومی را نیز درخواست کرد سپس password را برای application server دوم (مثلا ColdFusion) فرستاد، در ColdFusion تمامی connection ها از IP غیر از Flashcom server که احتمالا همان کامپیوتر است (127.0.0.1) را block نمود و سپس password را برای database ارسال کرد و در صورت صحیح بودن password مبادرت به ایجاد connection بین فلش و flashcom نمود. بنابراین می بینید که در این حالت تقریبا امکان crack شدن سیستم به صفر می رسد

نکته ای که لازمه بگم اینه که به هنگام connect کردن به flashcom شما به صورت automatic به سیستم متصل نمی شوید بلکه این flashcom است که تصمیم می گیرد شما جه موقع و تحت چه شرایطی connect شوید و همینطور همیشه امکان disconnect کردن شما توسط سرور وجود دارد. البته کلیه این موارد نیاز به برنامه نویسی ActionScript در سمت سرور و البته دقت زیاد برنامه نویس دارد، اصولا برنامه نویسی ASC (تحت flashco) کار آسونی نیست و دردسر های بسیار بیشتری نسیت به client programming دارد.

در مورد امنیت ارسال packet های اطلاعاتی، فلش دقیقا مانند Browser عمل می کند یعنی packet ها به هیچ وجه ایمن نیستند و برای کسی که قادر به decode کردن این packet ها در بین مسیر باشد crack کردن سیستم کار ساده ای است. ولی خبر خوب اینکه flashcom از پروتکل RTMPS یعنی RTMP تحت SSL هم پشتیبانی می کند بنابراین در هنگامی که امنیت سیستم بسیار اهمیت دارد (مانند سیستم کارتهای اعتباری و یا password های حساس) می توان از SSL استفاده کرد مانند صفحات HTTPS بر روی وب برای login کردن در جا ها حساس.
 

amir_s

Active Member
واقعا متشکرم کامیار عزیز !

پس با این تفاسیر امکان ارتباط مستقیم یک فلش به FlashCom وجود نداره !؟
 

phoenix

Member
خواهش می کنم،
خب ابته این بستگی به برنامه نویس داره که چگونه برنامه تحت سرور را نوشته باشه. میشه جوری برنامه را نوشت که همه connection ها را قبول کنه و یا اینکه تحت شرایطی و فقط بعضی از connection ها accept بشوند. کلا دست یرنامه نویس برای هرگونه عملکردی باز است.
 

zanis

Member
جناب phoenix در صورت امكان شماره تلفني جهت ارتباط بصورت پیام خصوصي برا من بزار . ممنون
 

zanis

Member
چطوری بعضی از شبکه های تلویزیونی بصورت مستقیم از اینترنت هم پخش میشن . البته بوسیله ریل پلیر و یا مدیا پلیر؟ آیا میشه ما هم این کار رو انجام بدیم و درصورت امکان نیاز به چه برنامه هایی داره و هزینش چقدر میشه؟
 

phoenix

Member
نمونه های پخش مستقیم از اینترنت که من دیدم هیچ کدام به صورت کاملا همزمان نیستند و یه delay چند دقیقه ای وجود دارد که معمولا برای تهیه و تبدیل کانال تصویری بر روی باند مورد نظر بکار میرود مثلا real player و یا media player هر دو Live Streming رو support می کنند اولی از طریق فایل های ram و دومی asx اگر شما فایل های ram یا asx را download کنید و درون آنها نگاهی بیندازید چیزی جز آدرس به یک media source نیستند و این media source باید بر روی سرور موجود باشد تا امکان streaming میسر شود الیته شاید از طریق software های خاص تحت سرور امکان ایجاد stream های همزمان (real-time) هم موجود باشه که من اطلاع دقیقی از اونها ندارم.
در مورد فلش این کار به صورت عملی با ایجاد وقفه چند دقیقه ای بدون نیاز به flashcom و به صورت نظری و همزمان با استفاده از flashcom موجود هست. ببنید فلش از stream های تصویری با فرمت flv یا Flash Video پشتیبانی می کند، این همان فرمتی است که flashcom برای ایجاد و ارسال stream از اون استفاده می کنه. نرم افزار های زیادی از جمله خود flash برای تبدیل video به فرمت flv وجود دارند.

برای دریافت flv ها 2 راه وجود داره:
1- ایجاد ارتباط با سرور flashcom و درخواست video
2- درخواست فایل مستقیما از web-server که به progressive download مشهور است

در روش دوم که مانند real player و media player عمل می کند شما با ایجاد یک video object در سمت client و درخواست مستقیم فایل آنرا نمایش می دهید مانند سیستم google video که در سایت google در http://video.google.com موجود است. در این روش فایل flv در کامپیوتر client و در cache ذخیره می شود و به تدریج با توجه به پهنای باند موجود نمایش داده می شود. بنابراین در این روش شما باید مرتبا video را با استفاده از software های موجود به فایلهای flv تبدیل کنید و در فلش نمایش دهید. احتمالا software هایی برای تبدیل مستقیم video ورودی به فایلهای flv موجود است که نیاز به حضور یک operator را رفع می کند.

در روش اول شما نیاز به یک flashcom server برای دریافت و سپس ارسال video و همچنین نیاز یه یک کامپیوتر برای ارسال video های منبع به server برای publish کردن دارید، در واقع این کامپیوتر نقش منبع برای ارسال Video را دارد. بیایید آنرا operator computer بنامیم. در operator computer باید یک کارت دارای ورودی video نصب باشد، بعضی از این کارتها دارای driver هایی هستند که مستقیما Video ورودی را یر روی کانال webcam منتشر می کنند. بنابراین تنها نیاز برای operator computer علاوه بر کارت ورودی یک flash player اجرا شده و متصل به اینترنت است که video را از ورودی دریافت و برای flashcom ارسال می کند، flashcom این video را گرفته، به صورت اتوماتیک به flv تبدیل کرده و برای دیگر client ها ارسال می کند. این تنها سیستم کلی و نظری ارسال video همزمان از طریق flashcom است، من تا به حال چنین سیستمی را پیاده نکرده ام به علاوه به نظر من وجود یک flash player همیشه در حال اجرا با توجه به client-side و همچنین غیر قابل اطمینان بودن flash player یک ریسک خیلی زیاد برای این سیستم است یا پیدا کردن video card با driver مذکور شاید کار راحتی نباشه.

شاید بشه از ترکیب روش دوم و flashcom version 2 با توجه به توانایی های flash media server در ارتباط با فایل سیستم سرور بهترین performance و با delay کم را داشت که طبعا هزینه بر است.

برای ایجاد video conference یا publish کردن video ها یه صورت real-time شرکت macromedia نرم افزار تحت سرور دیگری تحت عنوان Macromedia Breeze را معرفی کرده است که با استفاده از driver هایی که بر روی flash player نصب می کند ارسال و دریافت video را بسیار راحت تر از چیزی که در flashcom می باشد کرده است. متاسفانه به علت قیمت بسیار بالای این software و همچنین عدم وجود نسخه trial من تا به حال دسترسی به این نرم افزار نداشته ام.

در مورد قیمت کار هم فاکتور های بسیار زیادی دخیل هستند که نیاز به برآورد با صرف زمان بیشتری را دارد مانند تعداد و قدرت سرور ها، وجود سرور backup، نرم افزار های نصب شده بر روی سرور، پهنای باند درخواستی بر سرور، تعداد و پهنای باند تقریبی client ها و...
 

zanis

Member
میشه در مورد پخش مستقیم با مدیا پلیر بیشتر و ساده تر برام توضیح بدی . ممنونم از لطفت
 

جدیدترین ارسال ها

بالا