وبسایت شخصی حسن هاشمی

برنامه نویس. ایران. قم :))

آشنایی بیشتر با سیستم های توزیع شده، مایکروسرویس ها و پترن های Messageing (بخش اول: مرور صورت مسئله)

توی این پست میخوام یه سری از تجربیات / مطالعات خودم در مورد مایکروسرویس ها، سیستم های توزیع شده و مباحث مربوط بهش به اشتراک بذارم تا هم بدرد شما بخوره هم بعدا خودم بهش ارجاع کنم. اول از همه باید بگم که مبحث مایکروسرویس چیز جدیدی نیست و همه ما برنامه های بزرگمون رو به بخش های کوچیک شکوندیم قبلا، کلمه مایکروسرویس فقط یه کلمه ژیگول برای همونه، اما وقتی یه عده ای جمع میشن و روی یه چیز مشترکا یه اسم انتخاب می کنن باعث میشه که اون اسم و مشتقاتش به مرور استاندارد سازی بشن.

بیشتر...

یه سری shortcut برای شروع کار سریع در asp.net core

امسال فکر کنم 2و3 سالی میشه که با aspnet core کار می کنم.

یه سری نکات به مرور دستم اومد که بعضیاش هم تکراری هست ولی خب چون توی این 2و3 پروژه ای که الان کار می کنم، بروبچ کلا رعایت نمی کنن (از جمله خودم، حالا از روی تنبیله یا هرچی) گفتم یه جمع بندی کلی بزنم شاد یه نفر استفاده کرد. :))

بیشتر...

آشنایی با ExpressionTree در دات نت

توی این پست میخوایم یه آشنایی مختصری با ExpressionTree داشته باشیم.

 (وبلاگ داشت خاک میخورد، از یه طرفی هم گفتم به یه درد بشریت بخورم بد نیست:) )

اگه برنامه نویس دات نت هست حتما تا حالا از Linq استفاده کردید. و به احتمال 99.9% تا حالا عبارت ExpressionTree به گوشتون رسیده. ولی چون غالبا خیلی عریان ازش استفاده نمی کن همکارا احتمالا درک خیلی دقیق ازش نداشته باشن.

خب یه تعریف ساده ای که یه ذره من درآوردی هم هست (یه جورایی درک خودم ازش) اینه که ExpressionTree چیزی نیست جز یه درختی که نودهاش از نوع Expression هستن، در نتیجه اگه بدونیم Expression چی هست اونموقع دقیقا متوجه میشیم که با چی طرف هستیم.

بنظر تعریفی که ویکیپدیا خودش تا حد خیلی زیادی گویا هست. ما هم از همین شروع می کنیم:

An expression in a programming language is a combination of one or more explicit valuesconstantsvariablesoperators, and functions that the programming language interprets (according to its particular ruleof precedence and of association) and computes to produce ("to return", in a stateful environment) another value. This process, as for mathematical expressions, is called evaluation.

بیشتر...

مباحثی در مورد thread ها در asp.net

حس مقدمه نویسی نیست :) یه راست میرم سر اصل مطلب :)

اول بذارید از نحوه دریافت request توسط web server شروع کنیم:

همونطور که توی پست "مروری بر معماری http" نوشتم، یه http request در اصل یه tcp connection ساده هست پس در نتیجه یه سوکت از کلاینت به سرور باز میشه و reponse هم روی همون نوشته میشه اما نکته اینه که خود iis که response رو نمینوسه :) و باید request رو انتقال بده به application ی که در واقع handler برای این Request هست. نکته  اینه که حافظه IIS از نوع User-Mode هست.

بیشتر...

سیستم ارسال پوش نوتیفیکیشن

سلام دوستان

مدتی میشه روی یه پروژه اوپن سورس و فقط 4fun دارم کار می کنم، خیلی وقت هم بود که پستی نذاشته بودم گفتم مراحل انجام این پروژه رو توی وبلاگم با شما در میون بذارم تا از نظراتتون بهتره مند بشم.

2,3 سال قبل برای یه پروژه ای که روش کار می کردیم نیاز به یه سرور tcpبا performance و throughput بالا شد که البته با تشکر از سی شارپ 5 به راحتی انجام پذیر بود و در کمتر از 2 ماه نوشتمش.

پروژه رو هم تحویل دادیم رفتم :) مدتی قبل با بعضی از دوستان بحث ارسال پوش نوتیفیکشین برای اندروید و ios شد و همکاران بخش اندروید خیلی از GCM و زیرمجموعه های ایرانی اون می نالیدن :)) در نتیجه تصمیم گرفتم که سرور tcp که نوشته بودم رو بیارم برای ارسال پوش ویرایش کنم.

اما این طراحی خالص tcp یه سری مشکلاتی داشت که مجبور شدم کلاً این معماری رو بذارم کنار و از اول شروع کنم به نوشتمش.

بیشتر...

اجرای برنامه های Net. روی لینوکس و مک

اواخر سال 2014 بود که اخباری رو از مایکروسافت در جهت انتقال .Net به پلتفرم های دیگه توی سایت مایکروسافت خوندم، اولش فکر کردم دارن میبافن و دارن برای زامارین تبلیغات می کنن :)

مایکروسافت محصول جدیدی به نام Net Core. رو معرفی کرده که اصولاً قراره برادر کوچکتر Net Framework. اصلی باشه، و روی لینوکس و مک اجرا میشه.

بیشتر...

نکاتی در مورد http

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

بیشتر...