اشتراکها
انتشار Windows 10 SDK
نظرات اشتراکها
آپدیت 2 ویژوال استودیو 2015
یک نکتهی تکمیلی در مورد یافتن لینکهای آفلاین مواردی که قرار هست در حین نصب دریافت شوند:
بعد از نصب به روز رسانی دوم، اگر به اینترنت متصل نباشید، این خطاها را دریافت خواهید کرد:
لینکهای مستقیم دریافت این بستهها
Visual Studio Update 2 Extensibility Item Templates with Assembly References in Nuget Packages
Visual Studio 2015 Software Development Kit Update 2
Developer Analytics Tools v5.2.0
JavaScript Language Service for Visual Studio
JavaScript Project System for Visual Studio
روش یافتن این لینکها هم به صورت زیر است:
الف) فایل XML مربوط به فید به روز رسانی دوم را دریافت کنید:
http://go.microsoft.com/fwlink/?LinkID=646969
ب) سپس عنوان مواردی را که ذکر شده از اینترنت دریافت نشدهاند، در این فایل جستجو کنید. لینکی که در قسمت id هر کدام ذکر شده، دقیقا لینک دانلود آفلاین آن است.
بعد از نصب به روز رسانی دوم، اگر به اینترنت متصل نباشید، این خطاها را دریافت خواهید کرد:
Visual Studio Update 2 Extensibility Item Templates with Assembly References in Nuget Packages : This product did not download successfully: HTTP status 502: The server, while acting as a gateway or proxy to fulfill the request, received an invalid response from the upstream server it accessed. Visual Studio 2015 Software Development Kit Update 2 : This product did not download successfully: HTTP status 502: The server, while acting as a gateway or proxy to fulfill the request, received an invalid response from the upstream server it accessed. Developer Analytics Tools v5.2.0 : This product did not download successfully: HTTP status 502: The server, while acting as a gateway or proxy to fulfill the request, received an invalid response from the upstream server it accessed. JavaScript Language Service for Visual Studio : This product did not download successfully: HTTP status 502: The server, while acting as a gateway or proxy to fulfill the request, received an invalid response from the upstream server it accessed. JavaScript Project System for Visual Studio : This product did not download successfully: HTTP status 502: The server, while acting as a gateway or proxy to fulfill the request, received an invalid response from the upstream server it accessed.
لینکهای مستقیم دریافت این بستهها
Visual Studio Update 2 Extensibility Item Templates with Assembly References in Nuget Packages
Visual Studio 2015 Software Development Kit Update 2
Developer Analytics Tools v5.2.0
JavaScript Language Service for Visual Studio
JavaScript Project System for Visual Studio
روش یافتن این لینکها هم به صورت زیر است:
الف) فایل XML مربوط به فید به روز رسانی دوم را دریافت کنید:
http://go.microsoft.com/fwlink/?LinkID=646969
ب) سپس عنوان مواردی را که ذکر شده از اینترنت دریافت نشدهاند، در این فایل جستجو کنید. لینکی که در قسمت id هر کدام ذکر شده، دقیقا لینک دانلود آفلاین آن است.
Second Level Cache In NHibernate 4
همان طور که میدانیم کش در NHibernate در دو سطح قابل انجام میباشد:
- کش سطح اول که همان اطلاعات سشن، در تراکنش جاری هست و با اتمام تراکنش، محتویات آن خالی میگردد. این سطح همیشه فعال میباشد و در این بخش قصد پرداختن به آن را نداریم.
- کش سطح دوم که بین همهی تراکنشها مشترک و پایدار میباشد. این مورد به طور پیش فرض فعال نمیباشد و میبایستی از طریق کانفیگ برنامه فعال گردد.
جهت پیاده سازی باید قسمتهای ذیل را در کانفیگ مربوط به NHibernate اضافه نمود:
پیاده سازی Caching در NHibernate در سه مرحله قابل اعمال میباشد :
- کش در سطح Load موجودیتهای مستقل
- کش در سطح Load موجودیتهای وابسته Bag , List , Set , …
- کش در سطح Query ها
Providerهای مختلفی برای اعمال و پیاده سازی آن وجود دارند که معروفترین آنها SysCache بوده و ما هم از همان استفاده مینماییم.
- مدت زمان پیش فرض کش سطح دوم، ۵ دقیقه میباشد و در صورت نیاز به تغییر آن، باید تگ مربوط به SysCache را تنظیم نمود. محدودیتی در تعریف تعداد متفاوتی از زمانهای خالی شدن کش وجود ندارد و مدت زمان آن بر حسب ثانیه مشخص میگردد. نحوهی تخصیص زمان انقضای کش به هر مورد بدین شکل صورت میگیرد که region مربوطه در آن معرفی میگردد.
جهت اعمال کش در سطح Load موجودیتهای مستقل، علاوه بر کانفیگ اصلی، میبایستی کدهای زیر را به Mapping موجودیت اضافه نمود مانند :
این مورد برای موجودیتهای وابسته هم نیز صادق است؛ به شکل کد زیر:
ویژگی usage نیز با مقادیر زیر قابل تنظیم است:
- read-only : این مورد جهت موجودیتهایی مناسب است که امکان بروزرسانی آنها توسط کاربر وجود ندارد. این مورد بهترین کارآیی را دارد.
- read-write : این مورد جهت موجودیتهایی بکار میرود که امکان بروزرسانی آنها توسط کاربر وجود دارد. این مورد کارآیی پایینتری دارد.
- nonstrict-read-write : این مورد جهت موجودیتهایی مناسب میباشد که امکان بروزرسانی آنها توسط کاربر وجود دارد؛ اما امکان همزمان بروز کردن آنها توسط چندین کاربر وجود نداشته باشد. این مورد در قیاس، کارآیی بهتر و بهینهتری نسبت به مورد قبل دارد.
جهت اعمال کش در کوئریها نیز باید مراحل خاص خودش را انجام داد. به عنوان مثال برای یک کوئری Linq به شکل زیر خواهیم داشت:
در واقع کد اضافه شده به کوئری بالا، قابل کش بودن کوئری را مشخص مینماید و مدت زمان کش شدن آن نیز از طریق کانفیگ مربوطه مشخص میگردد. این نکته را هم درنظر داشته باشید که کش در سطح کوئری برای کوئریهایی که دقیقا مثل هم هستند اعمال میگردد و با افزوده یا کاسته شدن یک شرط جدید به کوئری، مجددا کوئری سمت پایگاه داده ارسال میگردد.
در انتها لینکهای زیر هم جهت مطالعه بیشتر پیشنهاد میگردند:
http://www.nhforge.org/doc/nh/en/index.html#performance-cache-readonly
http://nhforge.org/blogs/nhibernate/archive/2009/02/09/quickly-setting-up-and-using-nhibernate-s-second-level-cache.aspx
http://www.klopfenstein.net/lorenz.aspx/using-syscache-as-secondary-cache-in-nhibernate
http://stackoverflow.com/questions/1837651/hibernate-cache-strategy
همان طور که میدانیم کش در NHibernate در دو سطح قابل انجام میباشد:
- کش سطح اول که همان اطلاعات سشن، در تراکنش جاری هست و با اتمام تراکنش، محتویات آن خالی میگردد. این سطح همیشه فعال میباشد و در این بخش قصد پرداختن به آن را نداریم.
- کش سطح دوم که بین همهی تراکنشها مشترک و پایدار میباشد. این مورد به طور پیش فرض فعال نمیباشد و میبایستی از طریق کانفیگ برنامه فعال گردد.
جهت پیاده سازی باید قسمتهای ذیل را در کانفیگ مربوط به NHibernate اضافه نمود:
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/> <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache" requirePermission="false"/> </configSections> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > <session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="connection.connection_string_name">LocalSqlServer</property> <property name="show_sql">false</property> <property name="hbm2ddl.keywords">none</property> <property name="cache.use_second_level_cache">true</property> <property name="cache.use_query_cache" >true</property> <property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property> </session-factory> </hibernate-configuration> <syscache> <cache region="LongExpire" expiration="3600" priority="5"/> <cache region="ShortExpire" expiration="600" priority="3"/> </syscache> </configuration>
پیاده سازی Caching در NHibernate در سه مرحله قابل اعمال میباشد :
- کش در سطح Load موجودیتهای مستقل
- کش در سطح Load موجودیتهای وابسته Bag , List , Set , …
- کش در سطح Query ها
Providerهای مختلفی برای اعمال و پیاده سازی آن وجود دارند که معروفترین آنها SysCache بوده و ما هم از همان استفاده مینماییم.
- مدت زمان پیش فرض کش سطح دوم، ۵ دقیقه میباشد و در صورت نیاز به تغییر آن، باید تگ مربوط به SysCache را تنظیم نمود. محدودیتی در تعریف تعداد متفاوتی از زمانهای خالی شدن کش وجود ندارد و مدت زمان آن بر حسب ثانیه مشخص میگردد. نحوهی تخصیص زمان انقضای کش به هر مورد بدین شکل صورت میگیرد که region مربوطه در آن معرفی میگردد.
جهت اعمال کش در سطح Load موجودیتهای مستقل، علاوه بر کانفیگ اصلی، میبایستی کدهای زیر را به Mapping موجودیت اضافه نمود مانند :
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core.Domain" namespace="Core.Domain.Model"> <class name="Organization" table="Core_Enterprise_Organization"> <cache usage="nonstrict-read-write" region="ShortExpire"/> <id name="Id" > <generator/> </id> <version name="Version"/> <property name="Title" not-null="true" unique="true"/> <property name="Code" not-null="true" unique="true"/> </class> </hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core.Domain" namespace="Core.Domain.Model"> <class name="Party" table="Core_Enterprise_Party"> <id name="Id" > <generator /> </id> <version name="Version"/> <property name="Username" unique="true"/> <property name="DisplayName" not-null="true"/> <bag name="PartyGroups" inverse="true" table="Core_Enterprise_PartyGroup" cascade="all-delete-orphan"> <cache usage="nonstrict-read-write" region="ShortExpire"/> <key column="Party_id_fk"/> <one-to-many/> </bag> </class> </hibernate-mapping>
ویژگی usage نیز با مقادیر زیر قابل تنظیم است:
- read-only : این مورد جهت موجودیتهایی مناسب است که امکان بروزرسانی آنها توسط کاربر وجود ندارد. این مورد بهترین کارآیی را دارد.
- read-write : این مورد جهت موجودیتهایی بکار میرود که امکان بروزرسانی آنها توسط کاربر وجود دارد. این مورد کارآیی پایینتری دارد.
- nonstrict-read-write : این مورد جهت موجودیتهایی مناسب میباشد که امکان بروزرسانی آنها توسط کاربر وجود دارد؛ اما امکان همزمان بروز کردن آنها توسط چندین کاربر وجود نداشته باشد. این مورد در قیاس، کارآیی بهتر و بهینهتری نسبت به مورد قبل دارد.
جهت اعمال کش در کوئریها نیز باید مراحل خاص خودش را انجام داد. به عنوان مثال برای یک کوئری Linq به شکل زیر خواهیم داشت:
public IList<Organization> Search(QueryOrganizationDto dto) { var q = SessionInstance.Query<Organization>(); if (!String.IsNullOrEmpty(dto.Title)) q = q.Where(x => x.Title.Contains(dto.Title)); if (!String.IsNullOrEmpty(dto.Code)) q = q.Where(x => x.Code.Contains(dto.Code)); q = q.OrderBy(x => x.Title); q = q.CacheRegion("ShortExpire").Cacheable(); return q.ToList(); }
در انتها لینکهای زیر هم جهت مطالعه بیشتر پیشنهاد میگردند:
http://www.nhforge.org/doc/nh/en/index.html#performance-cache-readonly
http://nhforge.org/blogs/nhibernate/archive/2009/02/09/quickly-setting-up-and-using-nhibernate-s-second-level-cache.aspx
http://www.klopfenstein.net/lorenz.aspx/using-syscache-as-secondary-cache-in-nhibernate
http://stackoverflow.com/questions/1837651/hibernate-cache-strategy
اشتراکها
نگاهی به کار با Blazor در NET 8.
Today, we are releasing updates to the .NET Core SDK, included in Visual Studio 2017 RC. You can also install the .NET Core SDK for use with Visual Studio Code or at the command line, on Windows, Mac and Linux. Check out the Visual Studio blog to learn more about this Visual Studio 2017 update.