دسترسی به مطالب این دوره (SignalR)
        برو به مطلب  


درباره ی نویسنده


اسماعیل شیدایی
مدت 8 سال است که برنامه نویسی می کنم از همان ابتدا با زبان سی شارپ کارم را شروع کردم با تکنولوژی و زبان های سی شارپ، MVC, PHP, SQL Sever, و مباحث وب به خوبی آشنا هستم
در مدت فعالیتم پروژه های زیادی را انجام داده ام برخی در ایران و برخی نیز خارج از ایران بوده است که می توانید مفصلا آنها را در LinkedIn من مشاهده کنید.

مطالب مرتبط

تعداد نظرات 9

  1. User Comment

    جوادی

    با سلام و احترام
    ممنون از مطلب مفیدتون
    چندتا سوال در مورد SignalR داشتم

    1) آیا می توانیم از SignalR به صورت یه سرویس که اطلاعات جداول را از بانک اطلاعاتی فراهم می نماید استفاده نماییم؟ یعنی مثلا اطلاعاتی که از جداول مورد نیاز برای بازه های زمانی یک دقیقه ای محاسبه می نماییم داخل متدهای مربوط به فراخوانی SignalR قرار بگیرد و دیگر لازم نباشد تا هر برای هر کلاینت در Session مربوط به خودش که ارتباط دارد این کوئری ها را بر روی سرور اجرا نماید و فقط یکبار برای همه کلاینت ها این کوئری اجرا شود؟
    2) ماکسیمم تعداد کلاینتی که می توان با این روش پشتیبانی نمود چقدر است ؟ مثلا برای 1000000 کلاینت می توانیم باز هم از همین روش SignalR استفاده نماییم؟

    1. User Comment

      مدیر سایت

      سلام
      خواهش می کنم، لطف دارید


      در خصوص سوال اول باید خدمتتان عرض کنم:
      بنده در همین خصوص دو نوع راه حل را برای شما مثال زده ام یکی استفاده از Timer و ساخت یک Timer برای اجرای متوالی دستوراتی که شاید نیازی به اتصال و ارتباط با پایگاه داده ندارند.

      در مثال بعدی که در مقاله "بخش دهم - آموزش ساخت یک پروژه SignalR با SQLDepedency در ASP.NET MVC" می توانید آن را مطالعه کنید، مثالی با این مضمون مطرح شده است که اگر اطلاعات جدیدی در دیتابیس ثبت شد یا به هر شکلی تغییری بر روی یک جدول خاص انجام شد این تغییر به شما اعلام شود تا شما اطلاعات خود را بروز کنید، این مثال دقیقا پیاده سازی صفحه نمایش ایمیل در سرویس های  Gmail و Yahoo است که با ارسال یک ایمیل جدید صفحه شما به صورت اتوماتیک Refresh می شود.

      سوال دوم

      باتوجه به مقاله های ابتدایی همین دوره آموزشی بنده توضیح دادم که محدودیتی در استفاده این سرویس در خصوص تعداد کلاینت ها وجود دارد اما طبیعتا وابسته به نوع سرویسی که شما پیاده سازی می کنید باید تدابیری را در نظر بگیرید.

      اگر نکته خاصی است که در این جا امکان بیان آن وجود ندارد لطفا پیام خصوصی بدهد، در حد بضاعتم، خوشحال خواهم شد بتوانم کمکی انجام دهم

  2. User Comment

    جوادی

    سلام
    ممنون از راهنمایی
    در مورد پروژه Timer،آنرا بررسی کردم و مثال نمونه را اجرا کردم و خروجی را گرفتم، باز هم چند سوال، البته ببخشید که وقتتان را گرفتم.

    1) زمانی که مثلا سمت سرور اتفاقی پیش بیاید یا مثلا برای رفع مشکل مجبور باشیم موقتا سرویس را Stop نماییم، بعد از بالا آمدن سرویس، کلاینت ها اطلاعات آنها به روز نمی شود تا زمانی که یکبار صفحه مرورگرشان را به روز رسانی نکنند، آیا راهکاری از طرف SignalR برای اینکار وجود دارد؟ یا اینکه یک javascript Timer برای چک نمودن اینکه صفحه باید به روز شود بنویسیم.

    2) مقاله های ابتدایی همین دوره آموزشی شما را مطالعه نمودم ولی در مورد محدودیت کلاینتها برای استفاده از سرویس مطلبی پیدا نکردم شاید متوجه نشدم. اگر امکان دارد مقاله ای که در مورد تعداد کلاینتها و استفاده از آنها در سرویس و باری که بر روی سرور می گذارند و اینکه برای چه تعداد کلاینت این سرویس به نحو احسن کار می نماید را برای اینجانب لینک آن مقاله را ارسال فرمایید.

    3) آیا این سرویس قابل اعتماد می باشد، منظورم از نظر موارد Security و همچنین اینکه در مواقعی که Service Broker را بخواهیم بر روی بانک اطلاعاتی فعال نماییم؟ آیا باز هم قابل اعتماد است؟ آیا در طولانی مدت که سرویس فعال می باشد، امکان این وجود دارد که سرویس خود بخود غیر فعال شود؟

    4) آیا Node.js هم مانند SignalR عمل می کند؟ چون آن هم از WebSocket استفاده می کند. به نظر شما برای پروژه های مونیتورینگ کدوم تکنولوژی بهتره؟ Nodejs یا SignalR؟

    با تشکر فراوان از سایت خوبتون


    1. User Comment

      مدیر سایت

      با عرض سلام

      خواهش می کنم، خوشحال می شوم اگر بتوانم کمکی انجام دهم هدف ما در اینجا وقت صرف کردن برای کمک به یکدیگر است، پس وقت کسی گرفته نمی شود :)

      1) روشهای زیادی برای حل این مشکل وجود دارد، شخصا زیاد با سایت stackoverflow کار می کنم مدت پیش کل وب سایت اصلی و سرور ها را تغییر دادند این تغییر در 20 دقیقه صورت گرفت که بسیاری از کاربران حتی متوجه آن نشدن، اگر شما همان موقع به سایت مراجعه می کردید پیامی زیبا را دریافت می کردید اما پس از تغییر مجددا صفحه درخواستی شما به صورت خودکار Refresh و نمایش داده می شد.
      کمی سرچ کنید روش های متفاوتی وجود دارد اگر مورد مناسبی یافت نکردید مطرح کنید تا یک مطلب در مورد آن بنویسیم تا سایر دوستان نیز از این امکان استفاده کنند.

      2)خاطر نیستم، فکر کنم در مطلب دوم یا سوم بود. اما محدودیتی وجود ندارد دقیقا همین جمله را قید کردم که از لحاظ پشتیبانی تعداد کاربران هیچ مشکلی نیست.

      3)Service Broker هیچ تداخلی و هیچ مشکل امنیتی برای شما ایجاد نخواهد کرد اما من شخصا SQL Server را چیزی شبیه یک نرم افزار قدرتمند می بینم و شما خیلی موارد را می توانید توسط خود این نرم افزار انجام دهید حال چه مباحث امنیتی چه مباحث DB اما متاسفانه به دلیل تخصصی کار نکردن در کشور همه فقط با این ابزار برای نگهداری اطلاعات کار می کنیم. نه اینطور نیست که خود به خود غیرفعال شود اصلا این مورد اگر باشد غیرمنطقی خواهد بود.

      4) این متن تعریف کتابخانه Node.js است:

      Node.js® is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications

      کاربرد این کتابخانه با SignalR متفاوت است و نکته مهمتر و تنها دلیلم برای نوشتن تعریف این کتابخانه برای شما این است که SignalR توسط مایکروسافت حمایت می شود و این کتابخانه non-Microsoft، این دلیل بر بد بودن Node.js نیست، به هیچ وجه، اما شاید سازگاری و مهمتر از آن رشد برای SignalR بیشتر باشد مثال ساده آن MVC، یک framework مربوط به Ruby on Rails  که بعدها در PHP نیز مورد استفاده قرار گرفت و آخر از همه مایکروسافت به فکر آن افتاد، حال رشد را این تکنولوژی ها را هم در نظر بگیرید، نه تنها در ایران، در همین وبلاگ مطلبی را برای میزان استفاده از زبان های مختلف قرار دادم که بیان گر این موضوع است که شاید مایکروسافت با کپی برداری ایده های OpenSource و سرمایه گذاری بر روی آن ها چیزیهایی توسط آنها تولید می کند که خلاق اولیه نیز به آن فکر نکرده، دلیلش مشخص است کاربران زیاد و حمایت مالی، که در Open source این دو اینقدر توان ندارند.

      درنهایت من SignalR را می پسندم اما این جوابم کلی است شما باید وابسته به جزئیات، حجم پروژه و.... تصمیم بگیرید.

      ممنون
      موفق باشید

  3. User Comment

    mahdi

    برای asp webform چجوری هست؟

    من میخوام  هر تغییری که توی sql رخ میده رو متوجه بشم ؟


    جای Domain\ASPNET چی باید بنویسیم من نفهمیدم اینو؟
    GRANT SUBSCRIBE QUERY NOTIFICATIONS TO Domain\ASPNET


  4. User Comment

    mahdi

    سلام 

    میشه برای من توضیح بدین چون کامل گیج شدم نمیدونم باید چکار کنم؟(کسی دیگه هم نیس که بخوام ازش کمک بگیرم)
    مشکل اینجاست که من میخوام هر وقت رکوردی به جدولم اضافه شد اون رو به من خبر بده و هم اینکه تعداد رکوردها رو بروز به من نمایش بده 
    حالا نمیدونم باید چار کنم؟
    لطفا mvc نباشه.
    میشه کمکم کنید ممنون

  5. User Comment

    حسین

    سلام من یک سرور اختصاصی دارم و 2008 r2 داره نمیتونم داتنت 4.5 روش نصب کنم باید چکار کنم سرور هم کلی سایت روشه نمیتونم به نسخ 12 ارتقاش بدم

  6. User Comment

    احمد

    با سلام و احترام

    دو تا سوال داشتم، ممنون میشم جوابمو بدید:
    1: وقتی سرویس بروکر تو sql رو run میکنیم ، کجای کار بهش میگیم که مثلا فلان جدول رو بررسی بکن اگه تغییری رخ داد به اپ نوتیف بفرست? معرفی کردن جدول خاص کجا انجام میشه؟

    2: بنظر شما از لحاظ performance استفاده از تایمر جهت گرفتن نوتیف های جدید بهتره یا استفاده از sql dependency
     با تشکر فراوان از شما

    1. User Comment

      مدیر سایت

      با عرض سلام

      شما وقتی Broker را فعال می کنید دیتابیسی را که میخواهید مانیتور شود مشخص می نمایید، حال باید درون کد خود اطلاعات یک Table خاص را واکشی Fetch کنید.

      sql dependency بسیار راه حل بهتری است زیرا sql dependency خود یک Timer است که توسط SQL مدیریت می شود اما هیچ وقت نمی توان 100% گفت چه راه حلی برای چه مسئلی بهتر است زیرا صورت مسئله مشخص می کند شما باید چه راه حلی را انتخاب کنید.

  7. User Comment

    عباس

    با سلام 

    ممنون از مطلب خوبتون
    اما این پروژه مشکل نشتی حافظه داره ، و برای یه پروژه واقعی کارا نیست ،  
    به ازای هر درخواست یک dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
    داریم. در صورتی که  بازای هر + باید یک بار -  باید بشه. اگر - نشه یعنی  اشیاء در حافظه باقی می مانند

    1. User Comment

      مدیر سایت

      با عرض سلام

      ممنون از اینکه این مطلب را دقیقا بررسی کرده اید.
      طبیعتا شما می توانید با کمک گرفتن از این مطلب برای ساخت پروژه های تجاری استفاده نمایید، ما از این تکنولوژی در چندین پروژه استفاده کرده ایم که همه ی آنها در مقیاس های بزرگ و با تراکنش های سنگین روبرو بوده اند که اگر بتوانید موارد را رعیات کنید مشکلی نخواهید داشت و می توانیدبا کارایی بسیار بالا از این تکنولوژی استفاده کنید.
      همانطور که در ابتدای آموزش عرض کردم، از این تکنولوژی در ساخت صنعت Game های آنلاین استفاده شده است که نمونه ای از آن را برای شما معرفی کردم در نتیجه اگر به خوبی از این تکنولوژی استفاده کنید نباید نگران کارایی باشید.




  8. User Comment

    محمد

    با سلام
    پروژه رو اجرا کردم ، کامل ران شد و بدون مشکل کار میکنه، اما همین پروژه رو پابلیش کردم و رو iis گذاشتم ، sql dependency کار نمیکنه با اینکه GRANT SUBSCRIBE QUERY NOTIFICATIONS TO  هم انجام دادم اما همچنان مشکل داره، برای مطمئن شدن از موضوع ، یه تب از مرورگر لوکال رو ران کردم و یه تب دیگه اونیکه تو iis گذاشتم جالبه وقتی تغییری تو دیتابیس میکنه رو لوکال اعمال میشه اما رو iis خیر
    اینجور که معلوم مشکل از کد نمیتونه بهیچ وجه باشه یه مشکلیه بین iis , sql 
    بنظر شما دیگه چی رو باید ست کنم که رو iis مشکل پیش نیاد

    با تشکر

    1. User Comment

      مدیر سایت

      با عرض سلام

      در قسمت Application Pool مربوط به IIS شما می توانید Mode های مختلفی را برای دسترسی وب سایت خود تنظیم کنید پیشنهاد می کنم آن را بر روی Local system قرار داده و مجددا تست کنید

      باتشکر

  9. User Comment

    مصطفی باقری

    سلام من یک برنامه ویندوز با سیگنال آر نوشتم آدرس سرور من http://localhost:8080/ آدرس آی پی سرور 192.168.1.20

    --------------------------------------------------------

    حالا قسمت کلاینت با این آدرس نمی تونم به سرور وصل شم http://192.168.1.20:8080/

    -----------------------------------------------------

    سمت سرور پورت 8080 به فایروال هم ورود و هم خروج اضافه شد IIS 8 نصب شد

    ------------

    برنامه روی لوکال کار می کنه ولی وقتی سرور رو انتقال میدم به یه پی سی تحت شبکه دیگه کار نمی کنه Error : one or more error .... خطایی که میده توضیحی نداره ممنون میشم کمکم کنید

    1. User Comment

      سینا حسینی

      سلام

      برنامه رو در حالت debug اجرا کنید و با گذاشتن add watch میتوانید exception details را مشاهده کنید و علت خطا را مشخص کنید.

حاصل جمع عدد 0 با عدد 6 برابر است با

میزبانی شده بر روی سرورهای قدرتمند 20Host.ir

2016 Powered & Desigened By ABLY Co, ABLY