دوستانی که WPF کار میکنن و نرم افزار های دسکتاپ مینویسن این ویدئو رو پیشنهاد میکنم حتما ببینن:
https://www.youtube.com/watch?t=28&v=c_AB_XSILp0
https://www.youtube.com/watch?t=28&v=c_AB_XSILp0
YouTube
Perspex UI Framework
Cross platform .NET UI framework inspired by WPF. Alpha2 release is planned at 22.09.2015. http://perspex.github.io/ http://gitter.im/Perspex/Perspex https:/...
C# Programming Guide
دوستانی که WPF کار میکنن و نرم افزار های دسکتاپ مینویسن این ویدئو رو پیشنهاد میکنم حتما ببینن: https://www.youtube.com/watch?t=28&v=c_AB_XSILp0
همونطور که میبینید شما میتونید با ساختار XAML در wpf براحتی برای مک و لینوکس هم نرم افزار طراحی کنید در واقع یک طرح میزنید و روی ویندوز و مک و لینوکس اجرا میکنید.
C# Programming Guide
ابن پروژه هم پیشنهاد میکنم بهش نگاه بندازید: http://www.cshtml5.com/
با این هم میتونید با همون ساختار WPF و XAML طراحی سایت کنید...
پروژه ی اپن سورسی هست به نام SignalGo که ارتباط بلادرنگ یا همون Real-Time رو براتون خیلی آسون میکنه که میخوام از این پس بیشتر در موردش صحبت کنیم.این پروژه ای هست که یکی دو سالی میشه طراحی و و پیاده سازیش کردم و طراحی یک سرور و ارتباط کلاینت با اون رو برای شما بقدری آسون و سریع میکنه که میتونید باهاش یک سرور با بیش از صدها جدول و توابع رو کمتر از یک ماه پیاده سازی کنید و ده ها سرور رو همزمان مدیریت کنید بدون اینکه دغدغه مشکلات ودسترسی ها و امنیت و سرعت و ... داشته باشید.
C# Programming Guide
پروژه ی اپن سورسی هست به نام SignalGo که ارتباط بلادرنگ یا همون Real-Time رو براتون خیلی آسون میکنه که میخوام از این پس بیشتر در موردش صحبت کنیم.این پروژه ای هست که یکی دو سالی میشه طراحی و و پیاده سازیش کردم و طراحی یک سرور و ارتباط کلاینت با اون رو برای…
پروژه ی SignalGo چیست؟
سیگنال Go پروژه ای هست که ارتباطات بلادرنگ (Real-Time) رو برای برنامه نویسان سرور و کلاینت فراهم میکنه.
به این صورت که سرور بر حسب یک ادرس و پورت خاص اجرا میشه و کلاینت ها با استفاده از همون آدرس به اون سرور متصل میشن و داده ارسال میکنند و داده دریافت میکنند.این ارتباط کاملاً Duplex یعنی دو طرفه می باشد.
پروژه هایی نظیر SignalR و WCF هم در مجموعه ی این نوع پروژه ها قرار میگیرن.
چرا ما شروع کردیم به نوشتن SignalGo ؟
اولین مشکل ما ارتباط سخت بین کلاینت و سرور در جاوا و سی شارپ بود.برنامه نویسان شرکت ما که جاوا کار بودند بسیار براشون سخت بود که به سرور دات نت با سیگنال R وصل شن و منیج کردن کد ها و مشکلات تبدیل کد و هندل کردن به وجود میومد که مارو بر این کرد تا این سیستم رو از پایه طراحی کنیم.
پروژه ی سیگنال Go یک پروژه ی Open Source و متن باز هست که طراحی و معماری اون به شکلی انجام شده که سرعت انجام کار و تبادل اطلاعات رو چندین برابر بیشتر میکنه و اطمینان بیشتری به برنامه نویس میده.
برتری های SignalGo نسبت به SignalR در چیست؟
1.دسترسی دقیقتر به کلاینت ها مثل WCF
2.تضمین کردن رسیدن اطلاعات به دست کلاینت (همچنین برعکس)
3.دریافت خروجی از کلاینت زمانی که توابع کلاینت صدا زده میشود.
4.سرعت بیشتر
5.کد تمیز تر با خوانایی بیشتر
6.قابلیت آپلود و دانلود Stream
7.قابلیت ارتباط UDP برای انتقال صوت و تصویر
برتری های SignalGo نسبت به WCF در چیست؟
1.کراس پلتفرم بودن در حالی که WCF مخصوص ویندوز طراحی شده.
2.منیج راحت تر، تنظیمات کمتر و سرعت بیشتر.
در حال حاضر سرور و کلاینت دات نت و کلاینت جاوا و جاوا اسکریپت در github در دسترس هست.
سورس سرور و کلاینت:
https://github.com/SignalGo/SignalGo-full-net
سورس کلاینت جاوا:
https://github.com/SignalGo/client-java
نصب از طریق nuget:
نسخه ی سرور
https://www.nuget.org/packages/SignalGo.Net.Server/
نسخه ی کلاینت
https://www.nuget.org/packages/SignalGo.Net.Client/
نسخه ی جاوا اسکریپت
https://www.nuget.org/packages/SignalGo.JavaScript.Client/
سیگنال Go پروژه ای هست که ارتباطات بلادرنگ (Real-Time) رو برای برنامه نویسان سرور و کلاینت فراهم میکنه.
به این صورت که سرور بر حسب یک ادرس و پورت خاص اجرا میشه و کلاینت ها با استفاده از همون آدرس به اون سرور متصل میشن و داده ارسال میکنند و داده دریافت میکنند.این ارتباط کاملاً Duplex یعنی دو طرفه می باشد.
پروژه هایی نظیر SignalR و WCF هم در مجموعه ی این نوع پروژه ها قرار میگیرن.
چرا ما شروع کردیم به نوشتن SignalGo ؟
اولین مشکل ما ارتباط سخت بین کلاینت و سرور در جاوا و سی شارپ بود.برنامه نویسان شرکت ما که جاوا کار بودند بسیار براشون سخت بود که به سرور دات نت با سیگنال R وصل شن و منیج کردن کد ها و مشکلات تبدیل کد و هندل کردن به وجود میومد که مارو بر این کرد تا این سیستم رو از پایه طراحی کنیم.
پروژه ی سیگنال Go یک پروژه ی Open Source و متن باز هست که طراحی و معماری اون به شکلی انجام شده که سرعت انجام کار و تبادل اطلاعات رو چندین برابر بیشتر میکنه و اطمینان بیشتری به برنامه نویس میده.
برتری های SignalGo نسبت به SignalR در چیست؟
1.دسترسی دقیقتر به کلاینت ها مثل WCF
2.تضمین کردن رسیدن اطلاعات به دست کلاینت (همچنین برعکس)
3.دریافت خروجی از کلاینت زمانی که توابع کلاینت صدا زده میشود.
4.سرعت بیشتر
5.کد تمیز تر با خوانایی بیشتر
6.قابلیت آپلود و دانلود Stream
7.قابلیت ارتباط UDP برای انتقال صوت و تصویر
برتری های SignalGo نسبت به WCF در چیست؟
1.کراس پلتفرم بودن در حالی که WCF مخصوص ویندوز طراحی شده.
2.منیج راحت تر، تنظیمات کمتر و سرعت بیشتر.
در حال حاضر سرور و کلاینت دات نت و کلاینت جاوا و جاوا اسکریپت در github در دسترس هست.
سورس سرور و کلاینت:
https://github.com/SignalGo/SignalGo-full-net
سورس کلاینت جاوا:
https://github.com/SignalGo/client-java
نصب از طریق nuget:
نسخه ی سرور
https://www.nuget.org/packages/SignalGo.Net.Server/
نسخه ی کلاینت
https://www.nuget.org/packages/SignalGo.Net.Client/
نسخه ی جاوا اسکریپت
https://www.nuget.org/packages/SignalGo.JavaScript.Client/
GitHub
GitHub - SignalGo/SignalGo-full-net: Full version of SignalGo server and client
Full version of SignalGo server and client. Contribute to SignalGo/SignalGo-full-net development by creating an account on GitHub.
Media is too big
VIEW IN TELEGRAM
ویدئوی معرفی سیگنالگو و قابلیت ها و مقایسه با SignalR و WCF
C# Programming Guide
سورس چت روم کلاینت و سرور
نمونه سورس کلاینت و سرور اتاق چت روم که حدود 1 سال پیش با سیگنالگو نوشتم. قابلیت های این چت روم:
1.چت و پیام رسانی کاربران
2.کاربران ادمین و غیر ادمین و قابلیت محدود کردن دسترسی کاربران
3.گفتگوی صوتی انلاین بین کاربران
4.کامنت کردن ورود و خروج کاربران
5.اجازه گرفتن کاربران جهت گفتگوی صوتی (بدون اجازه گرفتن نمیتونن صحبت کنن)
و تنظیمات اتاق و ...
1.چت و پیام رسانی کاربران
2.کاربران ادمین و غیر ادمین و قابلیت محدود کردن دسترسی کاربران
3.گفتگوی صوتی انلاین بین کاربران
4.کامنت کردن ورود و خروج کاربران
5.اجازه گرفتن کاربران جهت گفتگوی صوتی (بدون اجازه گرفتن نمیتونن صحبت کنن)
و تنظیمات اتاق و ...
C# Programming Guide
https://github.com/Ali-YousefiTelori/NoorpodConversation
نحوه ی استفاده:
1.دو تا پروژه ی سرور و کلاینت از هم تفکیک شده:
الف کلاینت:
NoorpodConversation.UI
ب سرور:
NoorpodConversation.WindowsService
2.سرور با کنسول اجرا میشه که از دیتابیس sql express استفاده میکنه خودش دیتابیس رو کنار نرم افزار میسازه و همه ی کاراش رو میکنه فقط شما باید sql express نصب کرده باشید روی سیستمی که سرور رو اجرا میکنید برای تغییر connectionstring هم به فایل NoorpodContext.cs رجوع کنید و تغییرش بدید.
3.به صورت لوکال میتونید راحت تست کنید و نام کاربری admin و رمز 123 به طور پیشفرض با کاربری ادمین ساخته میشه که میتونید لاگین کنید.
4.برای راه اندازی سرور روی شبکه یا اینترنت حتما نرم افزار سرور رو که فایل NoorpodConversation.WindowsService.exe هست توی فایروال بهش دسترسی بدید. و برای کلاینت هم توی سورس NoorpodServiceHelper.cs آدرس localhost رو (خط 63 و 66 توی سورس) به آی پی سرور خودتون (شبکه داخلی یا اینترنت) تغییر بدید تا کلاینت به اون آدرس متصل بشه.سرور تغییراتی نمیخواد.
5.سورس با ویژوال استادیو 2017 ویرایش شده نسخه های پایین تر کار نمی کنن.
1.دو تا پروژه ی سرور و کلاینت از هم تفکیک شده:
الف کلاینت:
NoorpodConversation.UI
ب سرور:
NoorpodConversation.WindowsService
2.سرور با کنسول اجرا میشه که از دیتابیس sql express استفاده میکنه خودش دیتابیس رو کنار نرم افزار میسازه و همه ی کاراش رو میکنه فقط شما باید sql express نصب کرده باشید روی سیستمی که سرور رو اجرا میکنید برای تغییر connectionstring هم به فایل NoorpodContext.cs رجوع کنید و تغییرش بدید.
3.به صورت لوکال میتونید راحت تست کنید و نام کاربری admin و رمز 123 به طور پیشفرض با کاربری ادمین ساخته میشه که میتونید لاگین کنید.
4.برای راه اندازی سرور روی شبکه یا اینترنت حتما نرم افزار سرور رو که فایل NoorpodConversation.WindowsService.exe هست توی فایروال بهش دسترسی بدید. و برای کلاینت هم توی سورس NoorpodServiceHelper.cs آدرس localhost رو (خط 63 و 66 توی سورس) به آی پی سرور خودتون (شبکه داخلی یا اینترنت) تغییر بدید تا کلاینت به اون آدرس متصل بشه.سرور تغییراتی نمیخواد.
5.سورس با ویژوال استادیو 2017 ویرایش شده نسخه های پایین تر کار نمی کنن.
پروژه ی سلامتی که اخیرآ توسط شرکت ما نوشته شده، توی این پروژه به طور کامل از تکنولوژی سیگنالگو استفاده کردیم:
https://cafebazaar.ir/app/ir.myhealthylife.app/?l=fa
https://cafebazaar.ir/app/ir.myhealthylife.app/?l=fa
cafebazaar.ir
هلثی لایف
دانلود و نصب برنامههای رایگان و غیررایگان اندروید در ایران
C# Programming Guide
پکیج entity framework بیشترین استفاده را در میان ORM ها داره که کار دیتابیسی رو برای برنامه نویسان سرور بسیار سریع و آسان میکنه به زودی آموزش هایی در رابطه با EF خواهیم داشت.
البته شما میتونید از EF برای برنامه نویسی کلاینت هم استفاده کنید که برای برنامه های Cross Platform از جمله موبایل پیشنهاد نمیشه. روش های ساده تر و سریعتر و بهتری هم هست که بعدا معرفی خواهد شد
سلام دوستان هرگونه سوال، پیشنهاد و ... در مورد SignalGo خواستید میتونید توی گروه زیر بپرسید خودم آنلاین بهتون پاسخ میدم.کسانی که مشتاق هستند که این پروژه چطوری کار میکنه و میخوان سرعت ساخت پروژه های تحت شبکشون و برنامه های سرورشون بیشتر بشه حتما پیشنهاد میکنم یک مروری بر پروژه ی سیگنالگو داشته باشن.
لینک گروه:
https://news.1rj.ru/str/joinchat/CVPIBkMqzRIlK5SGpwKblQ
لینک گروه:
https://news.1rj.ru/str/joinchat/CVPIBkMqzRIlK5SGpwKblQ
Telegram
SignalGo
ارتباط امن و سریع بین کلاینت و سرور برای ساخت نرم افزار های سرور و کلاینت و بازی های شبکه ای
آدرس گروه:
https://news.1rj.ru/str/joinchat/CVPIBkMqzRIlK5SGpwKblQ
آدرس گروه:
https://news.1rj.ru/str/joinchat/CVPIBkMqzRIlK5SGpwKblQ
دقت و معماری در برنامه نویسی مخصوصا در برنامه نویسی Back-End خیلی مهمه اگر برنامه ای نوشتید که با درست کردن بخشی از اون برنامه بخش دیگری خراب میشه و این روند همینطور ادامه داره بی تردید یه جای کار میلنگه و اون کم تجربگی برنامه نویس رو میرسونه.
یه برنامه نویس حرفه ای کاملا میدونه که چطوری بخش ها رو از همدیگه جداسازی کنه و مخلوط کردن لایه ها چه پیامد های بدی داره. ممکنه گاهی اوقات پیش خودمون یه سری مقایسه هایی کنیم مثلا بین برنامه های بزرگ و برنامه های کوچیکی که مینویسیم و برای برنامه های کوچیک توی معماری ها اهمیتی قائل نشیم بگیم مثلا اینو دو روزه تمومش میکنم نیازی نیست الکی معماری بچینم و لایه ها رو از هم جدا کنم.این کار اشتباه هست و اگر عادت کنید که برنامه های کوچیک رو درست لایه بندی کنید برنامه های بزرگ رو همیشه لایه بندی خواهید کرد.برنامه نویسی کاری هست که مو لای درزش نمیره یعنی اگر یه جا مشکلی باشه هرگز مشکل غیر منطقی نیست و قابل رفعه پس نظم توی این سیستم بسیار بسیار مهمه هرچند کار کوچیک و ناچیز باشه.
لایه های مدل و منطق رو از دیتابیس جدا کنید.لایه های سرویس رو لایه های اجرایی، به صورت Cross Platform به لایه ها نگاه کنید.یعنی حتی بخش هایی که فکر میکنید فقط مخصوص ویندوز هست رو از بخش هایی که فکر میکنید توی لینوکس و ویندوز جواب میده جدا کنید.جداسازی لایه ها پیچیدگی و به وجود اومدن باگ ها رو کم میکنه و هرچی مخلوط بودن و وابستگی ها کمتر پیچیده باشه در نتیجه با رفع مشکل در یک قسمت مشکل جدیدی در قسمت دیگه بوجود نخواهد اومد.
یه برنامه نویس حرفه ای کاملا میدونه که چطوری بخش ها رو از همدیگه جداسازی کنه و مخلوط کردن لایه ها چه پیامد های بدی داره. ممکنه گاهی اوقات پیش خودمون یه سری مقایسه هایی کنیم مثلا بین برنامه های بزرگ و برنامه های کوچیکی که مینویسیم و برای برنامه های کوچیک توی معماری ها اهمیتی قائل نشیم بگیم مثلا اینو دو روزه تمومش میکنم نیازی نیست الکی معماری بچینم و لایه ها رو از هم جدا کنم.این کار اشتباه هست و اگر عادت کنید که برنامه های کوچیک رو درست لایه بندی کنید برنامه های بزرگ رو همیشه لایه بندی خواهید کرد.برنامه نویسی کاری هست که مو لای درزش نمیره یعنی اگر یه جا مشکلی باشه هرگز مشکل غیر منطقی نیست و قابل رفعه پس نظم توی این سیستم بسیار بسیار مهمه هرچند کار کوچیک و ناچیز باشه.
لایه های مدل و منطق رو از دیتابیس جدا کنید.لایه های سرویس رو لایه های اجرایی، به صورت Cross Platform به لایه ها نگاه کنید.یعنی حتی بخش هایی که فکر میکنید فقط مخصوص ویندوز هست رو از بخش هایی که فکر میکنید توی لینوکس و ویندوز جواب میده جدا کنید.جداسازی لایه ها پیچیدگی و به وجود اومدن باگ ها رو کم میکنه و هرچی مخلوط بودن و وابستگی ها کمتر پیچیده باشه در نتیجه با رفع مشکل در یک قسمت مشکل جدیدی در قسمت دیگه بوجود نخواهد اومد.
در انتخاب بین Xamarin Forms و Xamarin Classic من Forms رو پیشنهاد میکنم. توی برنامه نویسی موبایل برای کلاسیک شما باید رابط های کاربری برای اندروید و ios و ویندوز فون رو جداگونه پیاده سازی کنید.ولی توی Xamarin forms تنها یک رابط کاربری طراحی میکنید و توی هر سه سیستم عامل خروجی میگیرید و براحتی هم میتونید همونطوری که توی کلاسیک رابط کاربری رو کاستومایز کنید و محدودیتی ندارید توی Forms هم نخواهید داشت.قبلا یه سری محدودیت ها و باگ هایی وجود داشت ولی الان دیگه نیست و روزبروز هم داره بروز رسانی میشه.
#Xamarin
#Xamarin
C# Programming Guide
در نسخه ی جدید SignalGo قابلیت درج سرویس از طریق منوی راست کلیک اضافه شده که تمامی مدل ها و کلاس ها،سرویس ها و توابع مورد نیازتون رو از سرور میگیره و توی کلاینت اضافه میکنه
با یک افزونه اضافه شده که با استفاده از اون میشه تمامی مدل ها وسرویس ها و کلاس های مورد نیاز کلاینت با پیاده سازی INotifyPropertyChanged برای مدل ها بدون دستکاری مدل های سرور رو برای کلاینتتون فراهم کنید.قابلیت جالبی که این سیستم داره اینه که میتونید مدل های جنریت شده رو با یک قابلیت تغییراتی توش ایجاد کنید که با بروز رسانی سرویس از سرور اون تغییرات از بین نرن مثلا چند تا پروپتری به کلاس یک مدل اضافه کنید.
نصب افزونه از:
https://marketplace.visualstudio.com/items?itemName=AliVisualStudio.SignalGoExtension
در صورتی که براتون سوال ایجاد شده چطوری از این سیستم استفاده کنید به گروه سیگنالگو سر بزنید:
https://news.1rj.ru/str/joinchat/CVPIBkMqzRIlK5SGpwKblQ
نصب افزونه از:
https://marketplace.visualstudio.com/items?itemName=AliVisualStudio.SignalGoExtension
در صورتی که براتون سوال ایجاد شده چطوری از این سیستم استفاده کنید به گروه سیگنالگو سر بزنید:
https://news.1rj.ru/str/joinchat/CVPIBkMqzRIlK5SGpwKblQ
Visualstudio
SignalGoExtension - Visual Studio Marketplace
Extension for Visual Studio - Add or Update Signal Go Services, this will automatic generate models and services for signalgo client side