ویژگی | WCF | ASMX |
حداقل پیشنیاز | دات نت سه | دات نت یک |
هدف | جایگزینی یکپارچهی فناورهای قبلی شامل ASMX ، WSE ، MSMQ ، COM+ Eenterprise services و .NET Remoting | ارائه وب سرویس |
پروتکلهای پشتیبانی شده | HTTP TCP Named pipes MSMQ Custom UDP | HTTP only |
پشتیبانی از WS-* standards | بلی | خیر |
پشتیبانی از اطلاعات بایناری | بلی | خیر |
پشتیبانی از REST | بلی | خیر |
میزبانهای مهیا | در هر نوع برنامهی تهیه شده با دات 3 به بعد قابل میزبانی است، مانند یک برنامه کنسول، یک سرویس ویندوز ان تی و غیره. به این لیست IIS را هم میتوان اضافه کرد. | فقط IIS |
سرعت | WCF Services نسبت به ASMX Web Services از 25 تا 50 درصد سریعتر هستند + و + | |
نحوهی پاسخ دهی به درخواستها (یا ایجاد یک وهله جدید) | Singleton / private session / per call | per-call |
پشتیبانی از تراکنشها (transaction) | پشتیبانی تو کار + | خیر |
امنیت | پشتیبانی تو کار + | خودتان باید فکری برای این موضوع نمائید. |
بسط پذیری | بلی + | خیر |
مدت زمان یادگیری | حداقل یک ماه | یک روز! |
نظرات مطالب
ASP.NET Web API - قسمت اول
قبول، ولی در هر حال آیا راهی جز Http Client برای دسترسی به Web API وجود دارد ؟
مثلا مبدل Linq به OData ؟
به همراه Change Tracking و ...
در ضمن موارد مهمی از OData مانند batch$ در Web API پشتیبانی نشده اند، و باید برایشان Message Formatter نوشت، این نیز کار را سخت میکند
بر خلاف نظر دوستان به نظر من به هیچ وجه هیچ فریم ورکی راحتتر از WCF Data Services وجود ندارد، که جمعا با 3 خط کد راه اندازی میشود.
عموما دو الگوی اصلی caching در برنامهها وجود دارند: cache aside و cache trough .
در الگوی cache trough ، سیستم caching داخل DAL (که در اینجا همان NHibernate است)، تعبیه میشود؛ مانند سطح اول caching که پیشتر در مورد آن صحبت شد. در این حالت cache از دید سایر قسمتهای برنامه مخفی است و DAL به صورت خودکار آنرا مدیریت میکند.
در الگوی cache aside ، کار مدیریت سیستم caching دستی است و خارج از NHibernate قرار میگیرد و DAL هیچگونه اطلاعی از وجود آن ندارد. در این حالت لایه caching موظف است تا هنگام به روز شدن بانک اطلاعاتی، اطلاعات خود را نیز به روز نماید. این لایه عموما توسط سایر شرکتها یا گروهها برنامه نویسی تهیه میشود.
NHibernate جهت سهولت کار با این نوع cache providers خارجی، نقاط تزریق ویژهای را تدارک دیده است که به second level cache معروف است. هدف از second level cache فراهم آوردن دیدی کش شده از بانک اطلاعاتی است تا فراخوانیهای کوئریها به سرعت و بدون تماس با بانک اطلاعاتی صورت گیرد.
در حال حاضر (زمان نگارش این مطلب)، entity framework این لایهی دوم caching یا به عبارتی دیگر، امکان تزریق سادهتر cache providers خارجی را به صورت توکار ارائه نمیدهد.
در NHibernate طول عمر second level cache در سطح session factory (یا به عبارتی طول عمر تمام برنامه) تعریف میشود و برخلاف سطح اولیه caching محدود به یک سشن نیست. در این حالت هر زمانیکه یک موجودیت به همراه ID منحصربفرد آن تحت نظر NHibernate قرارگیرد و همچنین سطح دوم caching نیز فعال باشد، این موجودیت در تمام سشنهای برنامه بدون نیاز به مراجعه به بانک اطلاعاتی در دسترس خواهد بود (بنابراین باید دقت داشت که هدف از این سیستم، کار سریعتر با اطلاعاتی است که سطح دسترسی عمومی دارند).
در ادامه لیستی از cache providers خارجی مهیا جهت استفاده در سطح دوم caching را ملاحظه مینمائید:
- AppFabric Caching Services : بر اساس Microsoft's AppFabric Caching Services که یک پلتفرم caching محسوب میشود (+). (این پروژه پیشتر به نام Velocity معروف شده بود و قرار بود تنها برای ASP.NET ارائه شود که سیاست آن به گونهای جامعتر تغییر کرده است)
- MemCache : بر اساس سیستم معروف MemCached تهیه شده است (+).
- NCache : (+)
- ScaleOut : (+)
- Prevalence : (+)
- SysCache : بر اساس همان روش آشنای متداول در برنامههای ASP.NET به کمک System.Web.Caching.Cache کار میکند؛ یا به قولی همان IIS caching
- SysCache2 : همانند SysCache است با این تفاوت که SQL dependencies ویژه SQL Server را نیز پشتیبانی میکند.
- SharedCache : یک سیستم distributed caching نوشته شده برای دات نت است (+).
مطالب تکمیلی:
اشتراکها
نگاهی به EF7 RC1
نظرات اشتراکها
RIA Services و پشتیبانی از EntityFramework 5.0.0
من الان برای انجام بروژه ام نیاز دارم از سیلورلایت استفاده کنم . نسخه ویژوال استدیو من 2013 Ultimate هست با EF6 و سیلورلایت 5 . اون چیزهایی که تو اموزش سیلورلایت 4 گفتین اصلا تو این نسخه نمیدونم نیست یا اینکه VS2013 من اونها رو نداره . چیزهایی مثله Domain Service و غیره رو تو Add New Item نداره.یکسری بکیجها توی نیوگت بیدا کردم ولی اونا تا EF5 رو سابورت میکردند . من EF6 رو نیاز دارم . با این وجود نمیدونم چه جوری باید WCF RIA استفاده کنم . اگه میشه یه راهنمایی بکنید . خیلی ممنون از شما.
اشتراکها