Protocol Buffer
لا يعمل مع ال dot net للاسف الشديد :(
حسب ما قرات انه يعمل فقط مع C++ و Java
هذا موضوع بسيط لتعريف كيفية عمل ال MVC
Protocol Buffer
لا يعمل مع ال dot net للاسف الشديد :(
حسب ما قرات انه يعمل فقط مع C++ و Java
هذا موضوع بسيط لتعريف كيفية عمل ال MVC
يوجد مشاريع اضافيه لكن ليست رسميه لدعمها في ال.NET ولغات اخرى
مثل هذا
3- متعددة اللغات و يمكن اضافة لغات جديدة(او اقل شيء انجليزيه والعربيه)
الفرنسية أتكلف بترجمتها سنعمل internationalisation في ملف PROPRIETISE

concepteur realisateur java j2ee
php5 and asp
بالنسبة للProtocol Buffer فالهدف الأساسي منه هو أن يكون حجم البيانات أصغر و أسرع في الParsing و هو مناسب أكثر لتبادل البيانات على الشبكات, و هو أقرب الى JSON, في حالتنا هنا الهدف هو التخزين و ليس التبادل, و الفرق هنا أن سواء حجم الملف 1k أو 100k ليست مشكلة كبيرة فلن يتم ارسال الملف كما هو.
كما أن استخدام XML سيسهل استخدام تنسيق بالXsl اذا اردنا
فكرة الProtocol Buffer جيدة و لكن أعتقد أنه من الأفضل وضعها في Pri 2 كبديل اختياري للمستخدم...
سأبدأ اليوم في كتابة الFunctional Specification للمشروع
Sr. Software Development Engineer
Hulu, LLC
My Blogs
Night Coder:
على الاقل نحتاج الى قسم ASP.NET MVC لمنع خلطها مع مواضيع الAsp.net WebForms
أعضاء الفريق الاعزاء ....
بعد أن اوضحنا التقسيم المنطقي للمشروع ...
نأتي الان للدرجة الادنى الاكثر تفصيلاََ ... وهي تحديد الاعمال التي يقوم بها البرنامج على جميع المستويات...
و أقترح أن تقسم المستويات (Levels) حسب مستخدمي البرنامج الى التالي :
الادمن او الاونر Owner.(هو صاحب الموقع و يستطيع اعطاء الصلاحيات و الاعدادات للنظام و المستويات الادنى).
المشرفون/المراقبون - Supervisors/Editors(صلاحياتهم يحددها الOwner).
المؤلفون - Authors.
الاعضاء - Members .
المستخدم/الزائر - user.
وبالاعتماد على الFunctional Requirement التي كتبها الاخ bashmohandes ووضبها الاخ Slayer666 نأتي لمرحلة تحديد كل عمليات البرنامج(Actions) بالاعتماد على مستويات المستخدمين أعلاه .. و قد خرجت بالجدول االتالي:
طبعا يمكن اضافة Actions جديدة ...
يمكن الاستغناء عن Protocol Buffer(لا تنسوا أن التطبيق مبني على بيئة windows server) و محاكاتها عن
طريق Special Types أو Structures ففي بيئة الدوت نت تستطيع عمل أي شيئ ...
بالنسبة لمستودعات البيانات (Data Store) سيكون مفصولا تماما عن طبقات البرنامج بحيث تأتي فقط قطعة البيانات المحددة عبر
pipe بغض النظر الى نوعية مستودع البيانات (Oracle, SQL , MYSql , XML , أو حتى Tetx File)...
وصلنا الان الى مرحلة تصميم نهائي لقاعدة البيانات لكي نبدأ تصميم و برمجة طبقات البرنامج على اساسها .. و التعديل على القاعدة التي اقترحها الاخ EnigmaOX في الصفحة2 ...ساحاول وضع نموذج لتوزيع الNameSpaces لتعبئة كل NameSpace بالكلاسات
المناسبة حسب Actions البرنامج.
ملاحظات :-
-- في عالم الانترنت و البرمجة يوجد الكثير من التقنيات الجديدة و المتجددة و هذا لا يعني أنه لكي يكون البرنامج جيدا ان ياخذ بكل هذه التقنيات و يحشيها في البرنامج ... بل الاصح ان ياخذ ما يحقق اقصي استفادة باقل جهد ممكن .
as easy as Possible
as Uncomplicated as Possible
as smaller as Possible.
-- ستايل البرنامج و مرونة اضاقة و تعديل القوالب عملية حيوية جدا(خاصة لمدونة)...و لها مردود كبير في شهرة اي تطبيق ويب لذلك يجب ان عطيها اهتماما خاصا ...(ربما نصمم ملف من نوع معين TM يقوم اوتوماتيكيا بتركيب اي قالب مصمم مسبقا بضغطة زر واحدة).
-- شعارنا - نبدأ من حيث انتهى الاخرون-.
-- لم نتفق الى الان على اسم التطبيق .... أقترح - مدونة الفريق العربي / ArabTeam Blog.
جاري تعلم الMVC ..........
لا اعرف بالضبط مبدأ الBlogger
هل يعني استخدام الRoles لاعطاء صلاحيات داخل المدونه ؟ ستكون سهله
bashmohandes كتب:Blogger و بعض الBlog Engine الأخرى تسمح لأكثر من شخص بتحرير نفس الBlog و بصلاحيات مختلفة Team Blog
اذا نستطيع القيام بذلك باستخدام ال Roles
طبعا هي اقتراحات للمناقشة ....يمكن ان تبسط أكثر(طرح اكبر كم ممكن من الامكانيات وتبسيطها لتلائم احتياجات البرنامج بالضبط).
يعني لاضفاء اكبر مرونة(Flexibility) ممكنة للبرنامج و تلبيته لاكبر شريحة مستخدمين ممكنة(قد يستخدمها احدهم للتدوين الشخصي و قد يستخدمها احدهم كمجلة اخبارية هنا تكمن فكرة المرونة).
يجب ان نقرر........
فعلا حسب علمي لقد أصبح منتدى ههه والله أعلم لانه فيه جميع المواصفات بس ينقصه role :P

concepteur realisateur java j2ee
php5 and asp
bashmohandes
استعجل شويه :angry:
man4maya كتب:فعلا حسب علمي لقد أصبح منتدى ههه والله أعلم لانه فيه جميع المواصفات بس ينقصه role :P
منتدى صغير........... :D
كثير من المدونات تعطي هذه الخاصيه :)
لا اعلم علام رسيتم في موضوع ال Membership & Roles ولكن عندي اقتراح
لم لا يكون هناك مزوين مختلفين على نفس مستوى التطبيق واحد يكون مثلا UsersProfile والثاني AdminsProfile
الأول يكون فقط للمستخدمين (ان كان هناك تسجيل في البلوج مقابل خدمات معينة او صلاحيات معينة) و الثانية تكون لمدراء و مشرفي البلوج
طبعا هذه تكون فعالة في حال ان هناك بلوج مثلما تفعل Elaph.com حيث هناك محرك واحد و يكون هناك عدة مشتركين يسجلون و يحصلون على بلوج (كمدراء) و يمكن ان يجعل الكتابة عن طريق التسجيل و بالتالي يسهل فصل الصلاحيات و الحسابات و يمكن فيما بعد عند تطوير تطبيق اخر ان يتم الرجوع لنفس ال Profiles لاستخدامهم بنفس فكرة ال .NET Passport
و يتم التحكم في خصائص الصفحات و الصلاحيات المعطاة للمستخدمين حتى لو كانو Public Users عن طريق عمل SecurityContext يتم توريثه للصفحة يعتمد على ال Roles المسندة
الاختلاف فقط (الصداع) انك بدل ما تستخدم ال SQL Membeship بالشكل السهل الطبيعي يجب ان تستخدم ال ProviderCollection حسب مكان التسجيل او الدخول ليتم تمييز اي Provider سيتم اختياره إن كان User or Admin Profile
انا طبقتها في مشروع حيث كان الموظفون يدخلون باستخدام ActiveDirectory و المستخدمين العاديين عن طريق قاعدة البيانات و أراحتني كثيرا و اعتمدتها في التطبيقات القادمة لنفس المؤسسة
You can fly while you can touch the sky
لم اجرب الفكره بتاتا :blush:
ارنا اخي محمد المزيد من الاكواد لنفهم الفكره اكثر ونفهم الفرق عن الفكره العاديه
الأستاذ محمد ممكن توضح الفكره للأستفاده من تجربتك
تشكر يا أستاذ bashmohandes
ولجميع الأساتذه
حسب النسخة 0.1 من الFunctional Specifications
لن تستخدموا داتابيس!
موصفات جميله
عمل جيد
بس ألى ماذا يرمز Vancouver B)
تم تعديل هذه المشاركة بواسطة Al-Mohana في 28 سبتمبر 2008 في 11:41
تعلم فليس المرء يولد عالماً------ وليس أخو علماً كمن هو جاهلا
العلم نور وجمال يقتبس--------------- صاحبه مكرم اين ما جلس
من فاته العلم ساعة تظعظع ونتكس----شتان شتان بين حمار وفرس
عذرا لضيق الوقت تأخرت .. طيب باختصار .. بالعادة نقوم بعمل مزود واحد لل Membership وال roles هنا سنقوم بعمل اثنين
<roleManager enabled="true" defaultProvider="AspNetSqlRoleApplicationProvider"> <providers> <clear/> <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="UserProfileConnectionString" applicationName="UserProfile"/> <add name="AspNetSqlRoleApplicationProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationConnectionString" applicationName="Application"/> </providers> </roleManager> <membership defaultProvider="AspNetSqlMembershipProvider" hashAlgorithmType="SHA1"> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="UserProfileConnectionString" applicationName="UserProfile" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false"/> <add name="AspNetSqlMembershipِApplicationProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationNameConnectionString" applicationName="Application" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false"/> </providers> </membership>
طبعا يجب ان تكون قد قمت بعمل connectionStrings واحد لقاعدة البيانات العامة التي ستكون للمستخدمين المشتركين من خلال عدة تطبيقات و واحة للتطبيق الداخلي
لو انتبهنا لما سبق سنجد ان هناك خاصية defaultProvider سواء لل RoleManager او لل Membership Provider
انا استخدمت اسمين واحد هو UserProfile والثاني Application (طبعا استبدلت اسم المشروع بكلمة Application)
UserProfile سيكون عبارة عن مكتبة فيها كل ما يخص المستخدمين (ما عدا الموظفين) بطريقة يمكن عمل تسجيل لهم في تطبيق و اعادة التسجيل في تطبيق لخدمة اخرى و بصلاحيات مختلفة و بالتالي العلاقة بين ال UserProfile وال Apps هي one-to-many
ال Application سوف يحتوي بيانات تسجيل و معلومات تخص مستخدمي التطبيقات الداخلية وبالعادة هم Employees لهم خصائص معينة تختلف عن ال Public Users
مثال على ال SecurityContext :
public class SecurityContext
private static RoleTypes GetUserMainRole(string userName)
{
// TODO: Determine the right roles provider [AD/SQL]
// Roles.Providers["AspNetSqlMembershipِApplicationProvider"].GetRolesForUser
string[] roles = Roles.Providers["AspNetSqlRoleApplicationProvider"].GetRolesForUser(userName);
if (roles[0] == RoleTypes.Administrator.ToString())
return RoleTypes.Administrator;
if (roles[0] == RoleTypes.Executive.ToString())
return RoleTypes.Executive;
if (roles[0] == RoleTypes.SectorHead.ToString())
return RoleTypes.SectorHead;
return RoleTypes.Anonymous;
}الخ الخ الخ كان هذا مثال توضيحي فقط
طبعا انت تكمل الكلاس بطريقتك ثم تقوم عند تسجيل الدخول مثلا بعمل Instance منه و بالتالي لك القدرة على متابعة حالة المستخدم وصلاحياته على مستوى التطبيق كاملا.
الان لنفرض انك تتعامل مع صفحة تحتاج لصلاحيات معينة .. Administrator مثلا
و اسم الصفحة CreateUser.aspx و الكلاس الخاص بها هو CreateUser
ماذا نفعل؟
سنقوم بالتالي: (لاحظوا سيتم توريث الخصائص من ApplicationSecurePage بدلا من System.Web.UI.Page
public partial class CreateUser : ApplicationSecurePage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}و في صفحة ال ApplicationSecurePage يتم توريث خصائص الصفحة من كلاس System.Web.UI.Page كالتالي:
public partial class ApplicationSecurePage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}في هذه الصفحة الاخيرة يمكنك استدعاء ال SecurityContectSession و التعامل معها ك Master Class يحمل صفات مشتركة بين صفحات التطبيق و ايضا تكمن له فوائد عدة يعني مثلا لنفرض ان المستخدمين عند دخولهم على النظام سيتوجه بهم النظام للوحة تحكم .. بالعادة كيف نصمم لوحة التحكم؟
نقوم بعمل Master Page فيها Menu الخ الخ الخ
جميل
ماذا يحدث لو مررنا خصائص الأمان لل Master Page؟
يعني ستكون الحماية موجودة على لوحة التحكم و بنفس الوقت يمكن ان نستغل الصلاحيات الممررة عن طريق ال RolesTypes لحجب خصائص معينة مثل الحذف و الابقاء على البعض الاخر مثل التعديل و الاضافة وووووووو (حسب التطبيق)
اعذروني فلا وقت عندي للمتابعة و لكن بين الفترات لو اتتني فرصة سأمر و ربما اشارك في افكار (كأفكار فقط)
تحياتي لكم
تم تعديل هذه المشاركة بواسطة محمد خليل أبو صلاح في 28 سبتمبر 2008 في 17:32
You can fly while you can touch the sky
اقتباسبس ألى ماذا يرمز Vancouver
Vancouver هي مدينة على الساحل الجنوبي الغربي لكندا و تتبع مقاطعة British Columbia , و هي مدينة جميلة جداً و أعيش حالياً بها منذ حوالى 5 أشهر. و لكن للأسف سأتركها هذا الشهر باذن الله, و لهذا فكرت فكانت أول اسم خطر ببالي و أنا اختار code name للمشروع, اذا كان هناك أي أسماء اخرى لا مانع فهو في النهاية مجرد اقتراح
Sr. Software Development Engineer
Hulu, LLC
My Blogs
انا انصح بالتالي:
عدم تضخيم الامور و عدم المبالغة في ال TO DO LIST كنصيحة فقط ..
تقسيم العمل على مرحلتين على الاقل الاولى تغطي مفاهيم ال Software Engineering من ناحية عمارة المشروع و كيفية تقسيمه .. انا انصح بعمل مكتبات مثلا مكتبة مستقلة لل DAO و اخرى لل Presentation Layer .. ال BLL يكون مفصول لوحده وال Custom Controls تكون لوحدها و يكون في تخطيط ممتاز لعمل Mapping بين الأدوات و الكائنات
اعتقد لو نجحتم في هذا ستكونون من القلة العرب في مجال الدوت نت القادرين على الخروج ب PRODUCT وليس مجرد مشروع
هديتي كتلميح فقط لكم هي:
مجموعة ادوات ExtJS
http://www.extjs.com/deploy/dev/examples/grid/xml-grid.html
خيالية فعلا!!!!!!! و مجانية و متوافقة مع المتصفحات و الاجمل الخصائص التي بها مثل الترتيب و اضافة واخفاء اعمدة بشكل Dynamical
الفكرة ان يقوم احدكم بعمل Server Control تقوم باستقبال ال DataSource و من ثم تقوم هي بربطه .. لو وجدت ستكون لمحة جمالية و مميزة للمشروع
انا عندي أداة ولكنها لصديق لي بالعمل ولا يحق لي أن أتصرف بها :)
حظا موفقا لكم
You can fly while you can touch the sky