View Full Version : چگونگی ارسال Stream به WebService
vof.ir
چهارشنبه 27 مرداد 1389, 12:53 عصر
به نام خدا
سلام. من میخواهم با استفاده از یک وب سرویس و دو کلاینت
ارسال تصویر داشته باشم
به این صورت که یک کلاینت تصویر را کپچر کند و استریم کند و به وب سرویس ارسال کند
کلاینت دیگر هم از روی وب سرویس آن را دانلود کند
یک چیزهایی در مورد Direct Internet Message Encapsulation (DIME)
و در مورد wcf خوندم.
اما نمیدونم چیکار باید انجام بدم.
اصلا این سلوشن درست هست یا نه؟
با تشکر فروان
فقط اینکه بگم این مسئله خیلی فورس ماژور هست.
از همه دوستان پیشاپیش ممنونم.
vof.ir
شنبه 30 مرداد 1389, 11:21 صبح
با سلام مجدد
دوستان کسی نیست بتونه کمک کنه؟؟؟؟
Saeed_m_Farid
یک شنبه 31 مرداد 1389, 10:38 صبح
...
فقط اینکه بگم این مسئله خیلی فورس ماژور هست.
از همه دوستان پیشاپیش ممنونم.
با سلام مجدد
دوستان کسی نیست بتونه کمک کنه؟؟؟؟
سلام،
بدون مقدمه میرم سر اصل مطلب :
واسه همچین پروژه ای با پیش زمینه ای که شما در این زمینه دارید، فورس ماژور نمیشه کاری کرد؛ اونهم وقتی با مفاهیمی مثل DIME و Encapsulation درگیر می شید! همونطورکه میدونید وب سرویس ها بر پایه SOAP و WSDL (کلاً XML) بنا شدند و مبتی بر متن بوده و برای پردازش های بلادرنگ و استریم های دودویی مناسب نیستند؛ اگر هم اصرار بر اینکار داشته باشند، معمولاً باید از الگوریتم های اطلاعات دودویی تبدیل به متن و بالعکس (مثل Base64 Encoding) استفاد کرد که طبیعتاً کد کردن و کدگشایی باعث بالا رفتن بار پردازشی خواهد شد و حجم اطلاعات نیز افزایش خواهد یافت.
راه حلی که مایکروسافت برای اینکار ارائه کرده WSDK هست که همانطورکه خودتون اشاره کردید از WS-Attachment و DIME استفاده میکنه و متاسفانه IBM و OASIS اون رو قبول نکرده اند و بنابراین یه راه حل جامع نخواهد بود و حرف و حدیث توش زیاده، خصوصاً با توجه به اینکه از پروتکلهای بلادرنگ مثل RTP، RSTP استفاده نمیکنه و HTTP بنظر من که با این شرایط زیرساخت های ما برای متن جواب نمیده چه برسه به صوت و تصویر!!! بازم من در این زمینه (وب سرویس های مبتنی بر WSE و WCF ) و اگه اشتباه میکنم اساتید یادآور بشند.
***********************
اگه از من می پرسید این کارِ یکی-دو روز و یک نفر (یا حتی یک تیم کوچک) نیست، مگه اینکه یک همچین کاری بکنید : راه اندازی ویدئو کنفرانس مبتنی بر وب (http://barnamenevis.org/forum/showthread.php?t=134150)
ولی اگه تمام زیرساخت ها و سرویس دهنده، سرویس گیرنده و غیره رو خودتون میخواهید راه بندازید مطمئن باشید که حالا حالاها کار دارید و درنهایت (اگه موفق به پیاده سازی بشید) درگیر کدک های صوتی و تصویری، کنترل پهنای باند، مفاهیم و مشکلات همزمانی و ... خواهید شد.
بنظر من بهتره برید دنبال محصولات بازمتن مثل استریسک، FreePBX و مشتقات شون و مواردی که قبلاً پیاده سازی و امتحان شده اند و از طریق هزاران فروم و کاربر علاقمند باگ گیری و پشتیبانی رایگان میشه؛ مثل لینک زیر که کافیه بعد نصب مرکز تماس (الستیکس)، فقط دو - سه تا کانفیگ عوض کنید و ارتباط تصویری داشته باشید (باتوجه به اینکه سیگنالینگ و مدیا از پروتکل های کاملاً شناخته شده ای مثل SIP، H.323 و یا UDP و RTP استفاده میکنند و بالطبع اشکالزدایی و ردگیری تماس ها بسیار آسانتر خواهد شد):
تنظیمات لازم برای برقراری تماس تصویری (http://voip-iran.com/index.php?option=com_content&view=article&id=96%3Avaak-video-call&catid=57&Itemid=100)
موفق باشید.
vof.ir
یک شنبه 31 مرداد 1389, 18:29 عصر
سلام.من الان مشکللم این هست که چه جوری استریم را به سرور و از اونجا به کلاینت طرف مقابل برسونم
ممنونم از توجه شما
Saeed_m_Farid
دوشنبه 01 شهریور 1389, 15:20 عصر
خواهش میکنم ولی شما اصلاً خوندی پست من رو؟ :متفکر:
اگه فقط مشکلتون فقط اینه که "چه جوری استریم را به سرور و از اونجا به کلاینت طرف مقابل برسونم" هست؛ می تونید از SOAP extension ها که معمولاً از نوع System.IO.MemoryStream هستند، استفاده کنید: این معماری به شما امکان ایجاد زنجیره ای از Stream های ورودی و خروجی رو میده که امکان تبادل Stream در پیغام های HTTP رو به وب سرویس ها رو فراهم میکنن. می تونید یک نمونه کامل از XMLStreamSoapExtension رو در لینک پایین ببینید :
Accessing Raw SOAP Messages in ASP.NET Web Services (http://msdn.microsoft.com/en-us/magazine/cc188761.aspx)
http://i.msdn.microsoft.com/cc188761.fig01%28en-us%29.gif
در ضمن اگه راه راحت و بدون درگیری با مفاهیم بالا رو میخواهید (که طبیعتاً خاصیت سرعت رو از دست میدین!) کافیه یک Virtual Directory در وب سرور ایجاد کنید و با ترکیب Server.MapPath و نام فایل یک FileStream در سرور درست کنید و بعد تا انتهای فایل استریم ها ([]Byte) رو خونده و در فایل ایجاد شده Write کنید؛ Download کردن این فایل در سمت دیگه هم که با داشتن نام فایل و Virtual Directory کار سختی نیست ...
ولی اکیداً این روش برای استریمینگ بدرد نمیخوره و فقط تبادل یک فایل خواهد بود که حتماً راه های بهتری هم براش هست : Receive file through webservice (http://stackoverflow.com/questions/223761/best-way-to-receive-file-through-webservice)
برای اینکار در WSE هم Stream Large Amounts of Data from a Web Service (http://msdn.microsoft.com/en-us/library/aa528818.aspx)
***********
ولی برای ارسال تصویر مثل ویدئو کنفرانس و ... شما حتماً باید یه مدلی از ارتباط طراحی کنید که بهش میگن سیگنالینگ، مثل شکل زیر :
http://sys-developer.persiangig.com/image/Streaming.JPG
جزئیات یک سیستم پیاده سازی شده رو هم با این سیگنالینگ براتون ضمیمه کردم ولی بازم میگم بهتره از پروتکل های استانداردی مثل SIP، H.323، AccessGrid و ... برای اینکار استفاده کنید که امتحانشون رو پس دادن.
موفق باشید.
vof.ir
دوشنبه 01 شهریور 1389, 17:35 عصر
با سلام
و عرض تشکر از شما دوست عزیز
ممنونم.
یک سوالی. خوب خیلی به استفاده از این پروتکل هایی که فرمودید اشاره کردند
اما میخوام بدونم که در دات نت میشه؟
کار سختی هست؟ یعنی نیازمند دانش خاصی نسبت به این پروتکل ها و پیاده سازیشون هست؟
Saeed_m_Farid
سه شنبه 02 شهریور 1389, 10:36 صبح
...
کار سختی هست؟ یعنی نیازمند دانش خاصی نسبت به این پروتکل ها و پیاده سازیشون هست؟
اگه بخواهید Gateway، Server و مدیریت Session ها و سیگنالینگ رو خودتون انجام بدین بله، سخت هست و نیاز به دانش مخابراتی و شبکه (به میزان زیاد) خواهید داشت؛ ولی برای ارتباط کلاینت هاتون از طریق دات نت با رابط های نرم افزارهای متن باز، معمولاً پورت های خاصی داده میشه که می تونید با سرور ارتباط داشته باشید و کلاینت ها رو خودتون بنویسید، مثلاً برای ارتباط با استریسک شما با پورت 5038 میتونید از طریق AGI تماس هاتون رو مدیریت کنید و ...
vof.ir
سه شنبه 02 شهریور 1389, 11:09 صبح
ممنونم دوست عزیز.لطف کردید.
پس با این حساب. من با زمانی که دارم فکر کنم باید راه دیگه ای انتخاب کنم.
هرچند که کیفیتش در حد این ها نباشه.
مثلا اگر بخوام فریم به فریم کپچر کنم و سند کنم به نظرتون خیلی افتضاح میشه؟؟؟؟:افسرده:
Saeed_m_Farid
جمعه 05 شهریور 1389, 16:40 عصر
مثلا اگر بخوام فریم به فریم کپچر کنم و سند کنم به نظرتون خیلی افتضاح میشه؟؟؟؟:افسرده:
بله، به احتمال 99% نخواهید تونست Real Time باشید و معنای Streaming از دست خواهد رفت، فقط انتقال داده خواهد بود؛ بنظر من اگه نمیخواهید درگیر پروتکل ها و لینوکس و ... بشید، راه حل آقای جاهدمنش که لینکش رو در پست سوم گذاشتم دنبال کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.