Table of Contents

الحاجة إلى بيانات عن الزمن الحقيقي في تطبيقات MVC الحديثة

وينتظر المستعملون الحديثون أن تشعر التطبيقات على الشبكة العالمية بأنها حية ومستجيبة، فالصفحات الثابتة التي تتطلب إعادة جدولة يدوية أو اقتراعات لكل تحديثات، تبدو سريعة التفوق، وقد أصبحت تحديثات البيانات في الوقت الحقيقي شرطا أساسيا لمعالم مثل لوحات التشغيل الحية، والإخطارات الفورية، والتحرير التعاوني، والرصد في الوقت الحقيقي، والنموذج التقليدي للاستجابة للطلبات على الشبكة العالمية غير كاف لهذه السيناريوهات لأنه يدفع العميل إلى طلب ذلك باستمرار.

وتوفر شبكة المعلومات والاتصالات أساساً صلباً لبناء تطبيقات الشبكة التي تستخدم الخواديم، ولكنها لم تصمم من أجل الاتصال بالدفعات التي تُرسل إلى العملاء، ولتضييق هذه الفجوة، فإن مايكروسوفت الذي بدأ العمل به سيغنالR ، وهي مكتبة تتيح دون هوادة الاتصال الثنائي الاتجاه بين الخواديم والزبائن.

وتوفر هذه المادة دليلاً شاملاً لتنفيذ تحديثات البيانات في الوقت الحقيقي في تطبيقات لجنة الخيارات التقنية المعنية ببروميد الميثيل باستخدام نظام الإشارة، وستتعلمون البنية التي ترتكز عليها تعليمات تحديد درجات المعالم، والسمات المتقدمة مثل المجموعات والتوثيق، وأفضل الممارسات في مجال الأداء، وحالات الاستخدام في العالم الحقيقي، وستجهزون في النهاية لإضافة سمات حية ودينامية لتطبيقاتكم الخاصة بآلية الرصد والتحقق والتفتيش بثقة.

Understanding SignalR Architecture

نموذج هوب

ويستخدم الموقع لوحة Hub] abstraction to manage communication between the server and connected clients. A Hub is a class that inherits from the base class. It defines methods that clients can call remotely and provides a strongly typed API to invoked methods on all connected clients, specific groups, or individual clients handle-R.

آليات النقل والتخلف

(أ) أن تكون هذه المواد ذات طابع آلي [الإطار]، وأن تكون وسيلة نقل أساسية [الخيارات الفعلية]، أو أي سيناريو آخر هو: [الإطار]، أو أي وسيلة لنقل الأسلحة، أو أي نوع من أنواعها، أو أي نوع آخر من أنواعها، أو أي نوع آخر من أنواعها، أو أي نوع آخر من أنواعها، أو أي نوع آخر من أنواعها، أو أي نوع آخر من أنواعها، أو أي نوع آخر من أنواعها.

ويحدث التفاوض بشأن النقل خلال المصافحة الأولية للربط، ويرسل العميل طلباً للتفاوض، ويستجيب الخادم بقائمة النقل المدعوم، ثم يحاول الاتصال باستخدام أكثر وسائل النقل قدرة أولاً، وهذه العملية شفافة مع رمز تطبيقك، ولكن فهمها يساعد على حل مشاكل الربط أو على تحقيق الاستفادة المثلى من البيئات التي تستخدم شبكة ويب سوكيت فقط.

دورة الحياة

وكل اتصال بين العملاء بمركز الإشارة يمثله اتصال فريد هويته. وعندما يتواصل العميل، يمكن للخادم أن يسدي طريقة ] في المركز لأداء أي عملية أولية، وبالمثل، فإن أساليب و] تسمح لك بمعالجة حالات العزل وإعادة الاتصال بشكل معقول.

وضع إشارة في تطبيق نظام تقييم الأداء

تركيب الحزم المطلوبة

الخطوة الأولى هي إضافة مجموعة من عناصر (سنيور نوجيت) إلى مشروعك (أم في سي) يمكنك القيام بذلك عن طريق مدير التعبئة (كونسول) أو مدير التعبئة (نوجيت) للطلبات من طراز MVC 5، استخدام [(FLT:4)]، وتشمل هذه المجموعة عناصر جانب الخادم ومكتبة من جانب العملاء (جافاسكريب) إذا كنت تنوي استخدام إطار (جافروف) أو (ج)

بعد التركيب، تأكد من وجود الملفات التالية في مشروعك:

  • " مضمار العمل؛ المكتبة التي تقع على جانب العملاء
  • " مطوّل؛ النسخة غير المُذكّرة لإبطال مفعولها

تسجيل الإشارة في بداية الدراسة

(أ) تستخدم شبكة (إس بي إن تي 5 (أوين) للبرمجيات المتوسطة، وتحتاج شركة سينالر إلى تشكيل في صف بدء تشغيل الأوين، وإذا لم يكن مشروعك يملك ملف ، يضاف ملفاً واحداً ويضم الرمز التالي:

using Microsoft.Owin;
using Owin;
using YourNamespace; // Replace with your project's namespace

[assembly: OwinStartup(typeof(Startup))]

public class Startup
{
 public void Configuration(IAppBuilder app)
 {
 // Any other OWIN middleware configuration can go here.
 app.MapSignalR();
 }
}

The call registers the SignalR middleware and maps the default hub route to . You can customize the route by passing a ] object, but for most applications the default is sufficient.

Configuring the Global.asax for Pre-OWIN Projects (Legacy)

إذا كنت تستخدم مشروع قديم لا يدعم أوين، يمكنك أن تصادر الإشارة في طريقة ]] ، ولكن هذا النهج يُستهلك لصالح شبكة أوين، وللتنمية الجديدة، يستخدم دائماً طريقة بدء تشغيل الشبكة.

إنشاء مهبط للطائرات و التواصل مع العملاء

فئة الخدمة - الجانبية

(د) تحديد محور عن طريق إنشاء طبقة ترث من [(FLT:16]) ويمكنك، في هذه الفئة، تحديد الأساليب التي يمكن أن يحتج بها العملاء، ويمكن لهذه الأساليب أن تقبل المعايير، وأن تؤدي منطقاً من جانب الخواديم، ثم أن تعاود الاتصال بالعملاء باستخدام ممتلكات .

using Microsoft.AspNet.SignalR;
using System.Threading.Tasks;

public class LiveDataHub : Hub
{
 public async Task SendNotification(string userId, string message)
 {
 // Optionally perform server-side validation or storage
 await Clients.User(userId).receiveNotification(message);
 }

 public override Task OnConnected()
 {
 // You can associate the connection with a user/group here
 return base.OnConnected();
 }
}

في هذا المثال، لدى المركز طريقة واحدة التي ترسل رسالة إلى مستخدم محدد، يستخدم أسلوب في رسم خرائط مستخدمي شركة سينالر، التي تتطلب التوثيق (مناقشة لاحقا) ويمكنك أيضا استخدام للبث لجميع العملاء المرتبطين، أو

دمج العملاء - الجانب

ومن جهة العملاء، تشمل مكتبة سينالر جافاسكيبت والنص البديل المستخرج آليا في ، وتولد السيناريو العميل بصورة دينامية بواسطة الخادم وتوفر إمكانية الوصول إلى أساليبك المحورية مصممة على نحو قوي، وهنا يتم تشكيل زبون نموذجي:

<script src="~/Scripts/jquery.signalR-2.4.2.min.js"></script>
<script src="~/signalr/hubs"></script>
<script>
 $(function () {
 // Reference the auto-generated proxy for the hub
 var liveDataHub = $.connection.liveDataHub;

 // Define a client-side method that the hub can call
 liveDataHub.client.receiveNotification = function (message) {
 $('#notifications').append('<p>' + message + '</p>');
 };

 // Start the connection
 $.connection.hub.start().done(function () {
 console.log('Connected to SignalR hub.');
 // Optionally call a server method after connection is established
 // liveDataHub.server.sendNotification('user1', 'Hello from client!');
 }).fail(function (error) {
 console.error('SignalR connection failed: ' + error);
 });
 });
</script>

The method initiates the connection with the best transport available. callback fires after a successful connection, and you can begin calling server methods or listen for client method invocations. always handle connection failures Gracely, especially in production applications.

نداء أساليب سيرفر من العملاء

(أ) أن يتذرع بأسلوب الخادم من الزبون، وأن يستخدم الغرض ، مثلاً، أن يسمي طريقة المحددة أعلاه:

$('#sendButton').click(function () {
 liveDataHub.server.sendNotification($('#userId').val(), $('#messageInput').val());
});

(سينال آر) يُسجّل المعايير تلقائياً باستخدام (الشيوعون) طريقة الخادم تعمل على مجمّع الخادم، وأي استثناءات تُجمع إلى العميل

بيانات البث من مدونة سيرفر - سايد

من المراقب المالي وولايات المعلومات الأساسية

وتُستشهد عادة بمراكز الإشارة من إجراءات المتحكمين أو خدمات المعلومات الأساسية أو عناصر أخرى من جانب الخواديم، ولإرسال تحديثات في الوقت الحقيقي من خارج طريقة محورية، تحتاج إلى الحصول على إشارة إلى السياق المحوري، ويتم ذلك باستخدام [(FLT:30]:

public class DataController : Controller
{
 public ActionResult Refresh()
 {
 // Simulate a data update
 string newData = GetLatestData();

 // Get the hub context and broadcast to all connected clients
 var hubContext = GlobalHost.ConnectionManager.GetHubContext<LiveDataHub>();
 hubContext.Clients.All.receiveUpdate(newData);

 return Json(new { success = true });
 }
}

وهذا النهج يعمل جيداً في سيناريوهات بسيطة، ولكن بالنسبة للمهام الأساسية الطويلة الأمد (مثلاً، معالجة الاستفسارات، ورصد الخدمات الخارجية)، والنظر في استخدام خدمة مخصصة تتضمن إشارة إلى السياق المحوري، ويجب أن تكون حذراً بشأن خيوط السلامة وتفادي عرقلة خط الأنابيب.

استخدام خدمات المعلومات الأساسية مع شركة سينال

وفي التطبيقات الحديثة لشبكة تكنولوجيا المعلومات والاتصالات، يمكن أن تدمج شركة سينالر (Service) مع BackgroundService] أو خدمات مجهزة (إذا استخدمت نظام ASP.NET Core؛ وبالنسبة لـ MVC 5، يمكنك استخدام من خلال خدمات محدثة أو إرسالها.

المعالم المتقدمة

استخدام مجموعات للبث الانتقائي

في كثير من الأحيان يجب أن ترسل معلومات مستكملة إلى مجموعة فرعية من المستخدمين بدلاً من الجميع، تدعم شركة سينالر مجموعات يمكن إدارتها على الخادم، ويمكن للمختصين الانضمام إلى المجموعات أو تركها عن طريق الاتصال بأساليب في المركز:

public class ChatHub : Hub
{
 public async Task JoinRoom(string roomName)
 {
 await Groups.Add(Context.ConnectionId, roomName);
 }

 public async Task LeaveRoom(string roomName)
 {
 await Groups.Remove(Context.ConnectionId, roomName);
 }

 public void SendToRoom(string roomName, string message)
 {
 Clients.Group(roomName).receiveMessage(message);
 }
}

فالمجموعات مثالية لتنفيذ سمات مثل غرف الدردشة، أو أجهزة التعبئة الإلكترونية، أو لوحات المداخيل الخاصة بكل إدارة، ملاحظة أن عضوية المجموعة مرتبطة بعلاقة، وليس بمستعمل، وإذا كان لدى المستخدم رسوم متعددة للمصفوفين، يجب أن تنضم كل وصلة إلى المجموعة بصورة مستقلة.

رسالة إلكترونية موجهة إلى المستعمل

(السيّارة) تُدمج طبيعياً مع هوية (أي إس بي إن تي) عندما يُثبّت المُستخدم، سيّاق المركز يُفضح () وهويّة المُستخدم ترتبط تلقائياً بالصلة، وتُقدّم (سينال) (سيّارة) (سيّارة (سيّد (إي.

إرسال رسالة إلى المستخدم الحالي الموثق من طريقة محورية:

public class PrivateMessagingHub : Hub
{
 public void SendPrivateMessage(string toUser, string message)
 {
 string fromUser = Context.User.Identity.Name;
 Clients.User(toUser).receivePrivateMessage(fromUser, message);
 }
}

والتوثيق ضروري للعديد من السمات في الوقت الحقيقي، مثل الإخطارات الشخصية أو مجاري البيانات الحية الخاصة بالمستعملين، وضمان أن تصادر التوثيق (المجندون والمزمار) قبل إنشاء وصلة سينال ر.

تصعدين مع خطة بديلة

وعندما يتم تطبيقك على خواديم متعددة (مزرعة الشبكة)، تحتاج إلى خطة احتياطية ] لتزامن الرسائل عبر الخواديم.() وتدعم شركة سينالR عدداً من مقدمي الخدمات الأساسية: ريديس، وشركة SQL Server، وشركة Azure Service Bus، وعمليات تنفيذ العرف، وتعمل الطائرة الخلفية بنشر جميع الرسائل من أي خوادم إلى العمود الفقري، التي تقوم بها.

لتمكين (ريدس) من العودة إلى الطائرة، وتركيبها في بداية دورة المياه:

app.MapSignalR(new HubConfiguration()
{
 EnableDetailedErrors = false
});

GlobalHost.DependencyResolver.UseRedis(new RedisScaleoutOptions("connectionString", "yourApp"));

وبدون خطة خلفية، كل خادم يعرف فقط عن عملائه الموصلين، لذا فإن البث لن يصل إلى العملاء المتصلين بخدمة أخرى، وبالنسبة لتطبيقات الإنتاج التي بها أكثر من خادم واحد، فإن الخطة الخلفية إلزامية.

الأداء وأفضل الممارسات

الحد الأدنى من استخدام طريقة النداءات

وكل نداء من العملاء إلى الخادم يتكبد نفقات إضافية للتسلسل والنقل بالبطاقة والتجهيز على جانب الخادم، ويتجنب الاتصال بالخادم في حلقات ضيقة، بل يستكمل دفعة الزبائن ويرسلها في فترات معقولة، ويتجنب أيضا إعادة حمولات كبيرة في كل رسالة؛ وينظر في إرسال بيانات الانتشار فقط ويسمح للزبون بتطبيق التغييرات.

استخدام التسلسل الكفء

ويستخدم الموقع المشترك للتشغيل التسلسلي من خلال التقصير، في حين أن الاختبارات يمكن أن تكون غير صحيحة، وإذا كنت بحاجة إلى أقصى أداء، فإن النظر في استخدام بروتوكول [(FLT:0)]MessagePack [(FLT:1]) الخاص بشركة سينالR، الذي ينتج حمولات أصغر ويقلل من استخدام وحدة مكافحة الفساد، وهذا يتطلب مجموعة ومكتبة متوافقة زبون.

قطع الاتصال بين العملاء

دائماً ما ينفذون منطق إعادة التواصل بين العملاء و عميلة (سينال آر) قامت بإعادة التواصل لكن يمكنك أن تصمم فترات الاستعادة و المحاولات القصوى على جانب الخادم، تلغي على تنظيف الموارد (مثلاً، تزيل المستخدمين من المجموعات، وتلغي المهام الطويلة المدى المرتبطة بذلك).

النظر في حجم الرسالة وتواترها

ولا يوصى بإحالة رسائل كبيرة جدا (مثلاً، مكبرات البيانات) على شركة سينال ر لأنه يحجب النقل ويزيد من تساهل العملاء الآخرين، وإذا ما أردتم إرسال ملفات كبيرة، تستخدمون آلية منفصلة مثل حمولة مقطعة أو نقاط نهاية مخصصة، وتوخياً لتحديثات صغيرة متكررة، تكفلوا مضغ البيانات عند الضرورة، ولا سيما على موقع ويب سوكيت.

حالات الاستخدام الحقيقي في العالم والأمثلة

Live Dashboards and Monitoring

الإشارة هي مثالية لوحات الرشاشات في الوقت الحقيقي التي تظهر مقاييس متغيرة مثل أداء المبيعات، أو صحة الخادم، أو وسائل الإعلام الاجتماعية، ويمكن للخادم أن يدفع القيم المستكملة كل بضع ثوان، ويكتفي العميل بتحديث مذكرة التفاهم، ويمكنك أن تخدم الدولة الأولى من لوحة التحكم، ثم تستخدم شركة سينالر لتطبيق تحديثات تدريجية، مما يوفر خبرة لا تحصى.

الإخطارات الضئيلة

إن الإخطارات المتعلقة بالرسائل الجديدة أو طلبات الأصدقاء أو تنبيهات النظام مناسبة طبيعية لوكالة سينالر، وباستخدام رسائل خاصة بمستعملين، لا يمكن أن تقدم إخطارات إلا للمستعمل المقصود عبر جميع سلاسلهم أو أجهزةهم المفتوحة، ويضمن الجمع بين شركة سينالر ومخبأ التخزين المحلي عدم فقدان الإخطارات إذا كان المستخدم خارج الخط.

المفاوضة في مجال التحرير واللواح الأبيض

الطلبات التي تتطلب من مستعملين متعددين التعاون على وثيقة مشتركة أو على قناة تستفيد من قلة سعة الإشارة، كل نسخة يتم بثها إلى جميع المتعاونين في الوقت الحقيقي، وبغية معالجة الصراعات، يمكنك تنفيذ التحولات التشغيلية أو أنواع البيانات الخالية من النزاعات على الخادم، ولكن النقل في الوقت الحقيقي يوفره مركز المراقبة.

Stock Ticker and Live Price Feeds

وكثيرا ما تتطلب التطبيقات المالية تحديثات ثانوية فرعية لأسعار الأسهم أو أسعار العملات، ويمكن للشركة أن تعالج آلاف الاتصالات المتزامنة وأن تضغط على المستجدات بمجرد وصولها من تغذية البيانات، وباستخدام المجموعات، يمكنك السماح للمستعملين بالالتحاق بصكوك محددة، مما يقلل من حجم الرسائل التي يتلقاها كل زبون.

مقارنة بين الإشارة وتكنولوجيات أخرى للجرائم العقارية

Raw WebSocket

التنفيذ المباشر لشبكة الإنترنت يعطيك التحكم الأعظم والأدنى رأساً على عقب، ولكن يجب أن تتعامل مع التسلسل وإدارة الجلسات والنقل التراجعي ومنطق إعادة الربط بنفسك، وتستخلص الإشارة من كل ذلك، مما يجعل من أسرع بكثير تطوير سمات آنية، وبالنسبة لمعظم تطبيقات لجنة المركبات المتعددة الكلور، فإن شركة سينال ر هي الخيار الموصى به ما لم تكن لديك متطلبات محددة جداً تتطلب حلاً.

سوكيت.IO (Node.js)

إن نظام " سوكيت " هو ما يعادل نظام " سينال ر " للنظم الإيكولوجية في نودج - يز " ، فإذا كان تطبيقك مبنيا على " نودج " ، فإن " سوكيت " يقدم " أيضاً هبوطاً أوتوماتيكياً مماثلاً في النقل وإدارة الغرف، ولكن بالنسبة لفريق مركز " إنترنت " الذي يستخدم مركز " ASP.NET MVC، فإن شركة سينالR يدمج بشكل أكثر طبيعية مع الهياكل الأساسية الموجودة حالياً مع الهياكل الأساسية والأدواتيكياً.

قاعدة بيانات ساعات العمل الحقيقي

وتوفر قاعدة الإطفاء قاعدة بيانات متزامنة قائمة على الغيوم مع مزامنة مبنية للعملاء، وهي خدمة تدار إدارة كاملة، بحيث تتجنب إدارة الخواديم، ولكنها تضيف قفل البائعين وقد تكون أكثر تكلفة على نطاقها، وتمنحك شركة سينالر السيطرة الكاملة على جانب الخادم ويمكن استضافتها في أي مكان، مما يجعلها مناسبة أفضل للتطبيقات التي تحتاج إلى منطق تجاري عرفي في خط الأنابيب المحدّث.

خاتمة

(ب) تنفيذ تحديثات البيانات في الوقت الحقيقي في تطبيقات شركة MVC مع تحويل صفحات موقع سينالر إلى تجارب دينامية، وتعالج شركة سينال ر تعقّدات التفاوض على النقل، وإدارة الاتصالات، والتراسل بين الخواديم والعمل، مما يتيح لك التركيز على السمات البناءية التي تبقي المستعملين على علم بها وعلى اتصال بها، ومن لوحات الدبابيس الحية إلى الإخطارات الفورية والأدوات التعاونية، توفر شركة سينال ر أساساً قوياً لأي متطلبات تتعلق بالوقت الحقيقي.

وباتباع خطوات الإعداد المبينة في هذه المادة، وإنشاء مركز، وربط العملاء، وحشد الملامح المتقدمة مثل المجموعات، والتوثيق، والتوسع، يمكن أن تضيف قدرات في الوقت الحقيقي إلى تطبيقاتكم القائمة في مجال التحقق من صحة الأمفيتامينات بثقة، كما تواصل تطوير الوثائق الرسمية لوكالة سينالR من أجل تعميق الرؤى والتشويهات، وابدأوا باختبارات صغيرة ودقيقة، وراقبوا تطبيقكم على قيد الحياة حقا.

For further reading, explore the official resources: ASP.NET SignalR Documentation, ] Scaleout with Redis, and SignalR Hubs API Guide.